Msgbox qui lance une macro sur pls feuilles
Résolu
rcql
-
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
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:
- Msgbox qui lance une macro sur pls feuilles
- Windows ne se lance pas - Guide
- Qu'est ce qui se lance au démarrage de l'ordinateur - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Comment faire un livret avec des feuilles a4 - Guide
- Jitbit macro recorder - Télécharger - Confidentialité
8 réponses
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
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
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...?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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 !!
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 !!
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" ?
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" ?