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
A voir également:

8 réponses

jjsteing Messages postés 1670 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
rcql
 
top, merci beaucoup!!
0
jjsteing Messages postés 1670 Date d'inscription   Statut Contributeur Dernière intervention   181
 
de rien :)
0
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jjsteing Messages postés 1670 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
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
jjsteing Messages postés 1670 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
rcql
 
il est alors marque en rouge "erreur de compilation. attendu: fin d instuction"
0