Msgbox qui lance une macro sur pls feuilles

Résolu
rcql -  
 rcql -
Bonjour,

J ai un fichier excel avec plusieurs feuilles gerant la progression de plusieurs lancements (une feuille par gamme de produits). J ai une macro qui - a l ouverture de mon classeur - affiche pour toutes les feuilles les projets en retard. Comme le classeur comporte beaucoup de feuilles differentes, je voudrais lancer une macro a l ouverture du classeur qui demande si l utilisateur desire voir les fichiers en retard. Si oui, alors la macro se lance de feuille a feuille et montre les projets en retard, si la reponse est non, rien ne se lance sur aucune feuille.
La macro qui presente les projets en retard s appelle "retard" et j ai essayer d ecrire un module:

Sub demande()

MsgBox "Voulez-vous voir les élements en retard?", vbYesNo, "Projets en retard"
If MsgBox("Voulez-vous voir les élements en retard?", vbYesNo, "Projets en retard") = vbYes Then
Call retard
ElseIf MsgBox("Voulez-vous voir les élements en retard?", vbYesNo, "Projets en retard") = vbNo Then
End If

End Sub

__________________________
puis dans le workbook:
__________________________

Private Sub Workbook_Open()

Dim i As Integer

For i = 2 To Sheets.Count
Worksheets(i).Select
lancer
Next

Worksheets(1).Select

End Sub

Malheureusement quand j ouvre le document j ai bien une mesage box qui s affiche en me demandant si je veux voir les projets en retard mais a la reponse "No", elle se reaffiche pour toutes mes feuilles. Si la reponse est "Yes", alors il est necessaire de recliquer deux fois sur le "Yes" pour voir apparaitre la liste des projets en retard.

Si quelqu un a une idee pour nettoyer un peu tout ca, votre aide serait plus que la bienvenue.
Merci d'avance!

RCQL
Configuration: Windows XP Internet Explorer 6.0

8 réponses

  1. jjsteing Messages postés 1613 Date d'inscription   Statut Contributeur Dernière intervention   181
     
    MsgBox "Voulez-vous voir les élements en retard?", vbYesNo, "Projets en retard"
    If MsgBox("Voulez-vous voir les élements en retard?", vbYesNo, "Projets en retard") = vbYes Then
    Call retard
    ElseIf MsgBox("Voulez-vous voir les élements en retard?", vbYesNo, "Projets en retard") = vbNo Then
    End If

    alors la c la cagade !!!

    il te suffit juste d 1 et 1 seul Msgbox !!! sinon, il te repose la question !!!

    de +, elseif ne s utilise que dans des cas tres precis.. donc juste else suffi
    et dans ton cas, y a pas besoin, si il a repondu non, c qu il ne veut pas...

    =>

    If MsgBox("Voulez-vous voir les élements en retard?", vbYesNo, "Projets en retard") = vbYes Then
    retard
    End If
    0
  2. jjsteing Messages postés 1613 Date d'inscription   Statut Contributeur Dernière intervention   181
     
    de rien :)
    0
  3. rcql
     
    ha, et une derniere chose, est il possible que lorsque la reponse est "No" des l ouverture automatique, la meme question ne se pose pas pour toutes les autres feuilles? Si la reponse est "No" des la premiere fois, rien n est lance par la suite...?
    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. jjsteing Messages postés 1613 Date d'inscription   Statut Contributeur Dernière intervention   181
     
    pour cela, il faut passer par une variable globale...

    et tu la teste avant de poser la question..

    =>

    global repquestion=true

    subdemande ()
    If (MsgBox("Voulez-vous voir les élements en retard?", vbYesNo, "Projets en retard") = vbYes )and repquestion=true Then
    repquestion=true
    retard
    else
    repquestion=false
    End If

    end sub

    Mais attention, si il repond oui, il lui reposera la question sur chaque page ; si c non, il ne lui posera plus la question avant la prochaine reouverture du fichier !!
    0
  6. rcql
     
    Je n'arrive pas a faire fonctionner ceci de nouveau...
    J ai colle

    Sub demande ()

    If (MsgBox("Voulez-vous voir les élements en retard?", vbYesNo, "Projets en retard") = vbYes) And repquestion = True Then
    repquestion = True
    lancer
    Else
    repquestion = False
    End If

    End Sub

    Mais dans ce cas ci, que la reponse soit Yes or No, rien ne s efface si la reponse est negative, et la macro retard ne se lance pas non plus quand la reponse est Yes
    Ou dois je placer le "global repquestion=true" ?
    0
  7. jjsteing Messages postés 1613 Date d'inscription   Statut Contributeur Dernière intervention   181
     
    Ou dois je placer le "global repquestion=true" ?
    =>
    dans le general declaration... au tout debut de ton code vb

    c normal qui ne t affiche pas le msgbox si tu n a pas mis la variable gobale ;)
    0
  8. rcql
     
    il est alors marque en rouge "erreur de compilation. attendu: fin d instuction"
    0