Vous êtes sur la page 1sur 4

Cours VBA : les botes de dialogue http://www.excel-pratique.com/fr/vba/boites_de_dialogue.

php

Pour le moment, nous n'avons utilis la bote 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.

Aperu du code :

Nous allons maintenant crer une bote 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 bote de dialogue


Boutons : choix des boutons (oui, non, annuler, etc.) + autres options
Titre : titre de la bote 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

Aperu :

vbYesNo indique que les boutons de la bote de dialogue sont "Oui" et "Non", vbYes correspond au bouton "Oui" :

If MsgBox("Texte", vbYesNo, "Titre") = vbYes Then 'Si le bouton Oui est cliqu ...

1 of 4 16/10/2016 14:17
Cours VBA : les botes de dialogue http://www.excel-pratique.com/fr/vba/boites_de_dialogue.php

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 dfaut : Bouton 1

vbDefaultButton2 256 Bouton par dfaut : Bouton 2

vbDefaultButton3 512 Bouton par dfaut : Bouton 3

vbApplicationModal 0 Force l'utilisateur rpondre avant de poursuivre avec Excel

Force l'utilisateur rpondre avant de poursuivre avec d'autres applications (bote de dialogue au
vbSystemModal 4096
premier plan)

Les valeurs 0 sont celles par dfaut.

Le deuxime argument de MsgBox peut prendre jusqu' une valeur de chaque tableau.

Par exemple, pour une bote de dialogue avec "Oui, Non, Annuler" + icne exclamation + bouton 2 par dfaut :

MsgBox("Texte", vbYesNoCancel + vbExclamation + vbDefaultButton2, "Titre")

Aperu :

Les constantes peuvent tre remplaces 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")

Constante Valeur Bouton correspondant la valeur

vbOK 1

vbCancel 2

2 of 4 16/10/2016 14:17
Cours VBA : les botes de dialogue http://www.excel-pratique.com/fr/vba/boites_de_dialogue.php

vbAbort 3

vbRetry 4

vbIgnore 5

vbYes 6

vbNo 7

Voici l'exemple d'une MsgBox qui apparat 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 rponse = Oui on sort de la boucle
End If
Loop While 1 = 1 ' => Boucle infinie
MsgBox ";-)"
End Sub

Pour aller la ligne, vous pouvez insrer le caractre "saut de ligne" avec la fonction Chr et le n10 correspondant ce caractre, exemple :

MsgBox "Exemple 1" & Chr(10) & "Exemple 2" & Chr(10) & Chr(10) & "Exemple 3"

Aperu :

L'InputBox demande l'utilisateur d'entrer une valeur depuis une bote de dialogue, exemple :

Sub exemple()
Dim resultat As String

resultat = InputBox("Texte ?", "Titre") 'La variable reoit la valeur entre dans l'InputBox

If resultat <> "" Then 'Si la valeur est diffrente de "" on affiche le rsultat
MsgBox resultat
End If
End Sub

Aperu :

Il est possible d'indiquer une valeur par dfaut en troisime argument :

InputBox("Texte ?", "Titre", "Valeur par dfaut")

Aperu :

3 of 4 16/10/2016 14:17
Cours VBA : les botes de dialogue http://www.excel-pratique.com/fr/vba/boites_de_dialogue.php

4 of 4 16/10/2016 14:17