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 Sub

Dans ce cas, MsgBox n'est utilisé qu'avec un seul argument.

Aperçu du code :

1 - boites de dialogue

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 : 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 Sub

Aperçu :

confirmation - boites de dialogue

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 ok - boites de dialogue
vbOKCancel 1 ok - boites de dialogueannuler - boites de dialogue
vbAbortRetryIgnore 2 abandonner - boites de dialoguerecommencer - boites de dialogueignorer - boites de dialogue
vbYesNoCancel 3 oui - boites de dialoguenon - boites de dialogueannuler - boites de dialogue
vbYesNo 4 oui - boites de dialoguenon - boites de dialogue
vbRetryCancel 5 recommencer - boites de dialogueannuler - boites de dialogue
vbCritical 16 critique - boites de dialogue
vbQuestion 32 question - boites de dialogue
vbExclamation 48 exclamation - boites de dialogue
vbInformation 64 information - boites de dialogue
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 :

2 - boites de dialogue

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 ok - boites de dialogue
vbCancel 2 annuler - boites de dialogue
vbAbort 3 abandonner - boites de dialogue
vbRetry 4 recommencer - boites de dialogue
vbIgnore 5 ignorer - boites de dialogue
vbYes 6 oui - boites de dialogue
vbNo 7 non - boites de dialogue

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 Sub

Saut 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 :

10 - boites de dialogue

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 Sub

Aperçu :

input - boites de dialogue

Il est possible d'indiquer une valeur par défaut en troisième argument :

InputBox("Texte ?""Titre""Valeur par défaut")

Aperçu :

input2 - boites de dialogue


Rechercher

  Search