Cours VBA : les boîtes de dialogue
MsgBox :
Pour le moment, nous n'avons utilisé la boîte de dialogue MsgBox que pour afficher une information :
Sub effacer_B2()
Range("B2").ClearContents
MsgBox "Le contenu de B2 a été effacé !"
End SubDans ce cas, MsgBox n'est utilisé qu'avec un seul argument.
Aperçu du code :
Nous allons maintenant créer une boîte de dialogue qui va nous demander de confirmer la suppression avant d'effectuer les deux instructions. Voici les 3 arguments que nous allons renseigner :
MsgBox([TEXTE], [BOUTONS], [TITRE])- Texte : texte de la boîte de dialogue
- Boutons : choix des boutons (oui, non, annuler, etc.) + autres options
- Titre : titre de la boîte de dialogue
Sub effacer_B2()
If MsgBox("Etes-vous certain de vouloir supprimer le contenu de B2 ?", vbYesNo, "Demande de confirmation") = vbYes Then
Range("B2").ClearContents
MsgBox "Le contenu de B2 a été effacé !"
End If
End SubAperçu :
vbYesNo indique que les boutons de la boîte de dialogue sont "Oui" et "Non", vbYes correspond au bouton "Oui" :
If MsgBox("Texte", vbYesNo, "Titre") = vbYes Then 'Si le bouton Oui est cliqué ...
Les différentes possibilités pour le second argument de MsgBox :
| Constante | Valeur | Description |
| vbOKOnly | 0 | ![]() |
| vbOKCancel | 1 | ![]() ![]() |
| vbAbortRetryIgnore | 2 | ![]() ![]() ![]() |
| vbYesNoCancel | 3 | ![]() ![]() ![]() |
| vbYesNo | 4 | ![]() ![]() |
| vbRetryCancel | 5 | ![]() ![]() |
| vbCritical | 16 | ![]() |
| vbQuestion | 32 | ![]() |
| vbExclamation | 48 | ![]() |
| vbInformation | 64 | ![]() |
| vbDefaultButton1 | 0 | Bouton par défaut : Bouton 1 |
| vbDefaultButton2 | 256 | Bouton par défaut : Bouton 2 |
| vbDefaultButton3 | 512 | Bouton par défaut : Bouton 3 |
| vbApplicationModal | 0 | Force l'utilisateur à répondre avant de poursuivre avec Excel |
| vbSystemModal | 4096 | Force l'utilisateur à répondre avant de poursuivre avec d'autres applications (boîte de dialogue au premier plan) |
Les valeurs à 0 sont celles par défaut.
Le deuxième argument de MsgBox peut prendre jusqu'à une valeur de chaque tableau.
Par exemple, pour une boîte de dialogue avec "Oui, Non, Annuler" + icône exclamation + bouton 2 par défaut :
MsgBox("Texte", vbYesNoCancel + vbExclamation + vbDefaultButton2, "Titre")Aperçu :
Les constantes peuvent être remplacées par leur valeur respective, ces 3 lignes sont identiques :
MsgBox("Texte", vbYesNoCancel + vbExclamation + vbDefaultButton2, "Titre")
MsgBox("Texte", 3 + 48 + 256, "Titre")
MsgBox("Texte", 307, "Titre")Les valeurs renvoyées par MsgBox :
| Constante | Valeur | Bouton correspondant à la valeur |
| vbOK | 1 | ![]() |
| vbCancel | 2 | ![]() |
| vbAbort | 3 | ![]() |
| vbRetry | 4 | ![]() |
| vbIgnore | 5 | ![]() |
| vbYes | 6 | ![]() |
| vbNo | 7 | ![]() |
Voici l'exemple d'une MsgBox qui apparaît en boucle tant que le bouton Oui n'est pas cliqué :
Sub petite_blague()
Do
If MsgBox("Aimez-vous le site Excel-Pratique ?", vbYesNo, "Sondage") = vbYes Then
Exit Do ' => Si réponse = Oui on sort de la boucle
End If
Loop While 1 = 1 ' => Boucle infinie
MsgBox ";-)"
End SubSaut de ligne dans une MsgBox :
Pour aller à la ligne, vous pouvez insérer le caractère "saut de ligne" avec la fonction Chr et le n°10 correspondant à ce caractère, exemple :
MsgBox "Exemple 1" & Chr(10) & "Exemple 2" & Chr(10) & Chr(10) & "Exemple 3"Aperçu :
InputBox :
L'InputBox demande à l'utilisateur d'entrer une valeur depuis une boîte de dialogue, exemple :
Sub exemple()
Dim resultat As String
resultat = InputBox("Texte ?", "Titre") 'La variable reçoit la valeur entrée dans l'InputBox
If resultat <> "" Then 'Si la valeur est différente de "" on affiche le résultat
MsgBox resultat
End If
End SubAperçu :
Il est possible d'indiquer une valeur par défaut en troisième argument :
InputBox("Texte ?", "Titre", "Valeur par défaut")Aperçu :












