(VBA) MsgBox à lancer sous conditions dans le déroulé macro.
Résolu
Gilles.DR315
Messages postés
26
Date d'inscription
Statut
Membre
Dernière intervention
-
pijaku Messages postés 12263 Date d'inscription Statut Modérateur Dernière intervention -
pijaku Messages postés 12263 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
Je vous explique ma problématique
J'ai une commande macro nommée "simuler" sur la page résultat.
Au clic de cette commande, elle va copier en amont des valeurs de cellules dans une autre feuille.
dans le déroulé à la fin j'aimerai lancer une msgbox "OUI/NON" si des conditions sont remplies.
La réponse OUI / NON a pour conséquence de copier des valeurs dans d'autres cellules.
et de relancer la macro depuis le début.
voici mon code :
Il me manque un End If , si je le place avant MsgBox, elle se lance tout le temps, et ne tient plus compte des conditions.
ou alors il faut enlever le If avant Msg box mais çà ne marche pas.
Bref comment lancer une MsgBox sous conditions (valeurs dans une cellule)
merci de votre aide.
Je vous explique ma problématique
J'ai une commande macro nommée "simuler" sur la page résultat.
Au clic de cette commande, elle va copier en amont des valeurs de cellules dans une autre feuille.
dans le déroulé à la fin j'aimerai lancer une msgbox "OUI/NON" si des conditions sont remplies.
La réponse OUI / NON a pour conséquence de copier des valeurs dans d'autres cellules.
et de relancer la macro depuis le début.
voici mon code :
If (Sheets("Résultat").Range("F9") = 5 And Sheets("Résultat").Range("H24") <> 0 And Sheets("Résultat").Range("D15") = "") Then
If MsgBox("Voulez vous maintenir la durée ?", vbQuestion + vbYesNo, "QUESTION ...") = vbYes Then
Sheets("Résultat").Range("D15") = Sheets("Résultat").Range("G15")
Call Simuler
Else
Sheets("Résultat").Range("D15") = Sheets("Résultat").Range("K15")
Call Simuler
End If
Il me manque un End If , si je le place avant MsgBox, elle se lance tout le temps, et ne tient plus compte des conditions.
ou alors il faut enlever le If avant Msg box mais çà ne marche pas.
Bref comment lancer une MsgBox sous conditions (valeurs dans une cellule)
merci de votre aide.
A voir également:
- (VBA) MsgBox à lancer sous conditions dans le déroulé macro.
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Jitbit macro recorder - Télécharger - Confidentialité
- Lancer une application au démarrage windows 10 - Guide
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante dans excel - Guide
2 réponses
Bonjour,
Peut être...
If (Sheets("Résultat").Range("F9") = 5 And Sheets("Résultat").Range("H24") <> 0 And Sheets("Résultat").Range("D15") <> "") Then If MsgBox("Voulez vous maintenir la durée ?", vbQuestion + vbYesNo, "QUESTION ...") = vbYes Then Sheets("Résultat").Range("D15") = Sheets("Résultat").Range("G15") Call Simuler Else Sheets("Résultat").Range("D15") = Sheets("Résultat").Range("K15") Call Simuler End If End If
Peut être...
En effet çà fonctionne.
et j'avais une erreur dans les conditions sur D15. ce qui permet d'éviter le message en boucle
Merci
je ne savais pas que End If pouvait se mettre 2 fois à la suite. Pour valider la syntaxe du code
et j'avais une erreur dans les conditions sur D15. ce qui permet d'éviter le message en boucle
Merci
je ne savais pas que End If pouvait se mettre 2 fois à la suite. Pour valider la syntaxe du code
If (Sheets("Résultat").Range("F9") = 5 And Sheets("Résultat").Range("H24") <> 0 And Sheets("Résultat").Range("D15") = "") Then If MsgBox("Voulez vous maintenir la durée ?", vbQuestion + vbYesNo, "QUESTION ...") = vbYes Then Sheets("Résultat").Range("D15") = Sheets("Résultat").Range("G15") Call simuler Else Sheets("Résultat").Range("D15") = Sheets("Résultat").Range("K15") Call simuler End If End If
End Ifferme le bloc
If.
Tu peux en avoir x à la suite, si tu as ouvert x blocs
If...
Par contre, je te recommande d'indenter ton code. Non seulement ce sera plus lisible, mais en plus ça t'évitera de ne pas fermer un bloc.
Exemple non indenté :
Sub Machin() If (Sheets("Résultat").Range("F9") = 5 And Sheets("Résultat").Range("H24") <> 0 And Sheets("Résultat").Range("D15") = "") Then If MsgBox("Voulez vous maintenir la durée ?", vbQuestion + vbYesNo, "QUESTION ...") = vbYes Then Sheets("Résultat").Range("D15") = Sheets("Résultat").Range("G15") Call Simuler Else Sheets("Résultat").Range("D15") = Sheets("Résultat").Range("K15") Call Simuler End If End Sub
Exemple indenté :
Sub Machin() If (Sheets("Résultat").Range("F9") = 5 And Sheets("Résultat").Range("H24") <> 0 And Sheets("Résultat").Range("D15") = "") Then If MsgBox("Voulez vous maintenir la durée ?", vbQuestion + vbYesNo, "QUESTION ...") = vbYes Then Sheets("Résultat").Range("D15") = Sheets("Résultat").Range("G15") Call Simuler Else Sheets("Résultat").Range("D15") = Sheets("Résultat").Range("K15") Call Simuler End If End Sub
Dans le second exemple, on voit clairement qu'il manque quelque chose.
Nota : ces exemples sont simplistes. C'est encore plus vrai sur des codes plus longs et plus complexes...