MsgBox
Pour le moment, nous n'avons utilisé la boîte de dialogue MsgBox que pour afficher une
information :
Sub effacerB2()
Range("B2").ClearContents
MsgBox "Le contenu de B2 a été effacé !"
End Sub
Dans ce cas, MsgBox n'est utilisé qu'avec un seul argument.
Aperçu du résultat de ce code :
Nous allons maintenant créer une boîte de dialogue qui va nous demander de confirmer la
suppression avant d'exécuter les 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.) + d'autres options
Titre : titre de la boîte de dialogue
Sub effacerB2()
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 Sub
Aperçu :
vbYesNo indique que les boutons de la boîte de dialogue sont les boutons "Oui" et
"Non", vbYes correspond au bouton "Oui" :
If MsgBox("Texte", vbYesNo, "Titre") = vbYes Then 'Si le bouton Oui est cliqué
MsgBox peut être utilisé à la fois comme une procédure ou une fonction. Si vous avez besoin de
connaître le choix de l'utilisateur et donc obtenir une valeur en retour, utilisez MsgBox en tant que
fonction en ajoutant des () aux arguments.
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
Force l'utilisateur à répondre avant de poursuivre avec d'autres application
vbSystemModal 4096
plan)
Les valeurs à 0 sont celles par défaut.
Le deuxième argument de MsgBox peut prendre plusieurs valeurs de ce 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 affichent une boîte
de dialogue identique :
MsgBox("Texte", vbYesNoCancel + vbExclamation + vbDefaultButton2, "Titre")
MsgBox("Texte", 3 + 48 + 256, "Titre")
MsgBox("Texte", 307, "Titre")
Les valeurs renvoyées par MsgBox
Valeu
Constante Bouton correspondant à la valeur
r
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 humour()
Do
If MsgBox("Aimez-vous le site Excel-Pratique ?", 36, "Sondage") = vbYes Then
Exit Do 'Si réponse = Oui on sort de la boucle
End If
Loop While True 'Boucle infinie
MsgBox ";-)"
End Sub
Saut de ligne dans une MsgBox
Pour aller à la ligne, vous pouvez insérer le caractère correspondant au saut de ligne à l'aide de la
fonction Chr, exemple :
MsgBox "Exemple 1" & Chr(10) & "Exemple 2" & Chr(10) & Chr(10) & "Exemple 3"
Aperçu :
InputBox
La fonction InputBox demande à l'utilisateur d'entrer une valeur dans 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 Sub
Aperçu :
Il est également possible d'indiquer une valeur par défaut en troisième argument :
InputBox("Texte ?", "Titre", "Valeur par défaut")
Aperçu :