VBA – Boîte de Dialogue Oui-Non (Msgbox)
In this Article
Ce tutoriel explique comment utiliser la fonction VBA MsgBox pour afficher des boîtes de message aux utilisateurs (y compris la boîte de message YesNo). Vous pourriez également être intéressé par notre article sur les boîtes d’entrée (InputBoxes).
Fonction VBA MsgBox
En VBA, il est facile d’afficher une simple boîte de dialogue (MsgBox):
MsgBox "Ceci est une boîte de dialogue"
Cependant, vous pouvez faire bien plus qu’afficher une simple boîte de dialogue avec un bouton OK. Voyons rapidement un exemple compliqué avant de nous plonger dans les détails…
Boîte de dialogue VBA YesNo
Ci-dessous, nous allons créer une boîte de dialogue avec :
- Un titre « Titre de la boîte de dialogue » et un message « Texte »
- Une icône de point d’interrogation
- Options Oui/Non au lieu d’un simple « OK »
- Bouton par défaut = « Non »
Dim réponse As Integer
réponse = MsgBox("Texte", vbQuestion + vbYesNo + vbDefaultButton2, "Titre de la boîte de dialogue")
La boîte de dialogue renverra vbYes ou vbNo en fonction du choix de l’utilisateur. Vous pouvez alors effectuer différentes actions en fonction du choix :
If réponse = vbYes Then
MsgBox "Oui"
Else
MsgBox "Non"
End If
Dans la section suivante, nous vous montrerons toutes les options disponibles pour créer des boîtes de dialogue. Ensuite, nous vous présenterons la syntaxe de la fonction MsgBox et, enfin, nous examinerons d’autres exemples de boîtes de messages.
Options des boîtes de message VBA
Regardez l’image ci-dessous. Vous y verrez (presque) toutes les options disponibles pour la création de boîtes de messages. Remarquez les icônes et les différents boutons.
Ceci est une capture d’écran du « MessageBox Builder » de notre Complément VBA : AutoMacro premium. Le « MessageBox Builder » vous permet de concevoir rapidement la boîte à message de votre choix et d’insérer le code dans votre module de code. Il contient également de nombreux autres constructeurs de code, une vaste bibliothèque de code VBA et un assortiment d’outils de programmation. C’est un outil indispensable pour tout développeur VBA.
Syntaxe de la Fonction MsgBox
MsgBox( prompt [, buttons ] [, title] [, helpfile, context ] )
prompt (Obligatoire) – Il s’agit du texte principal de la boîte de dialogue.
buttons – Choisissez les boutons à afficher. S’il est omis, ‘OKonly’ est la valeur par défaut. Vous pouvez également indiquer ici l’icône à afficher et le bouton par défaut.
title – Le titre en haut de la boîte de dialogue. S’il est omis, le nom de l’application actuelle est affiché (ex. Microsoft Excel).
helpfile – Spécifie le fichier d’aide auquel l’utilisateur peut accéder lorsqu’il clique sur le bouton « Aide ». S’il est spécifié, vous devez également ajouter le contexte (ci-dessous)
context – Expression numérique représentant le numéro de contexte d’aide attribué à la rubrique d’aide appropriée. Vous pouvez probablement ignorer les arguments helpfile et context. Je ne les ai jamais vus utilisés.
Personnalisation du Titre et du Contenu de la Boîte de Dialogue
La fonction MsgBox vous permet de personnaliser le titre et le contenu des messages comme suit :
Msgbox "Contenu",,"Titre"
Autre exemple :
Sub MsgBoxContenuTitre()
MsgBox "Étape 1 terminée. Cliquez sur OK pour exécuter l'étape 2.",, "Étape 1 sur 5"
End Sub
Important! Vous devez vous rappeler d’entourer votre texte de guillemets.
Saut de Ligne dans les Boîtes de Dialogue
Vous pouvez également ajouter des sauts de ligne au contenu de votre boîte de message avec ‘vbNewLine’.
Sub MsgBoxContenuTitre_NouvelleLigne()
MsgBox "Étape 1 terminée" & vbNewLine & "Cliquez sur OK pour exécuter l'étape 2", , "Étape 1 sur 5"
End Sub
Remarquez que nous utilisons le symbole & pour joindre du texte. Pour en savoir plus sur l’utilisation du symbole & avec du texte et sur les autres options d’insertion de sauts de ligne, consultez notre article sur l’assemblage du texte.
Icônes MsgBox
VBA vous donne la possibilité d’ajouter l’une des quatre icônes prédéfinies à vos boîtes de dialogue:
Constante d’Icône | Icône |
---|---|
vbInformation | |
vbCritical | |
vbQuestion | |
vbExclamation |
La constante d’icône doit être placée dans l’argument du bouton:
Sub MsgBoxIconeQuestion()
MsgBox "Exemple de Question", vbQuestion
End Sub
Cette procédure génère la boîte de message « OK » par défaut avec un icône de point d’intérogation :
Remarquez que lorsque vous tapez, l’éditeur VBA vous montre les options disponibles :
Ceci est utile car vous n’avez pas besoin de vous souvenir de la syntaxe exacte ou des noms des icônes ou des boutons.
Nous allons maintenant faire une démonstration de chaque icône de boîte de message :
Icônes MsgBox – Information
Sub MsgBoxIconeInformation()
MsgBox "Exemple d'Information", vbInformation
End Sub
Icônes MsgBox – Critique
Sub MsgBoxIconeCritique()
MsgBox "Exemple Critique", vbCritical
End Sub
Icônes MsgBox – Question
Sub MsgBoxIconeQuestion()
MsgBox "Exemple de Question", vbQuestion
End Sub
Icônes MsgBox – Exclamation
Sub MsgBoxIconeExclamation()
MsgBox "Exemple Exclamation", vbExclamation
End Sub
Nous allons voir ci-dessous comment générer des boîtes de dialogues avec différentes dispositions de boutons. Si vous choisissez un autre type de boîte de message, vous devrez ajouter le type d’icône après les boutons en utilisant un « + » :
Sub MsgBoxQuestionOkCancel()
MsgBox "Voulez-vous continuer?", vbOKCancel + vbQuestion
End Sub
Variables MsgBox
Jusqu’à présent, nous avons principalement travaillé avec la boîte de message « OK » par défaut. La boîte de message OK ne comporte qu’une seule option: En appuyant sur « OK », le code se poursuit. Cependant, vous pouvez également spécifier d’autres groupes de boutons : OK / Annuler, Oui / Non, etc.
Dans ce cas, vous voudrez effectuer différentes actions en fonction du bouton sur lequel vous avez appuyé. Prenons un exemple.
Voici la boîte de message que nous allons générer :
Voici le code complet (nous allons le décomposer ensuite) :
Sub MsgBoxVariable()
Dim réponse As Integer
réponse = MsgBox("Voulez-vous continuer?", vbQuestion + vbYesNo)
If réponse = vbYes Then
MsgBox "Oui"
Else
MsgBox "Non"
End If
End Sub
Tout d’abord, nous assignons la sortie de la boîte de message à une variable de type nombre entier.
Dim réponse As Integer
réponse = MsgBox("Voulez-vous continuer?", vbQuestion + vbYesNo)
Ensuite, nous utilisons un If-Else pour déterminer ce qu’il faut faire en fonction du bouton pressé :
If réponse = vbYes Then
MsgBox "Oui"
Else
MsgBox "Non"
End If
La fonction MsgBox renvoie une valeur entière (entre 1 et 7). Nous définissons donc la variable comme une variable de type entier (« Integer »). Cependant, au lieu de faire référence à un nombre entier, vous pouvez faire référence à une constante (ex. vbOK, vbCancel, etc.). Regardez ce tableau pour voir toutes les options :
Bouton | Constante | Valeur |
---|---|---|
OK | vbOK | 1 |
Annuler | vbCancel | 2 |
Abandonner | vbAbort | 3 |
Réessayer | vbRetry | 4 |
Ignorer | vbIgnore | 5 |
Oui | vbYes | 6 |
Non | vbNo | 7 |
Nous allons maintenant faire une démonstration de chaque groupe de boutons :
Boîte de Dialogue OK – vbOKOnly
Il s’agit de la boîte de dialogue VBA standard.
Sub MsgBox_OKOnly()
Dim réponse As Integer
réponse = MsgBox("Exemple OK Seulement", vbOKOnly)
End Sub
Boîte de Dialogue OK Annuler – vbOKCancel
Sub MsgBox_OKCancel()
Dim réponse As Integer
réponse = MsgBox("Exemple OK Annuler", vbOKCancel)
If réponse = vbOK Then
MsgBox "OK"
Else
MsgBox "Annuler"
End If
End Sub
Boîte de Dialogue Oui Non – vbYesNo
Sub MsgBox_YesNo()
Dim réponse As Integer
réponse = MsgBox("Exemple Oui Non", vbYesNo)
If réponse = vbYes Then
MsgBox "Oui"
Else
MsgBox "Non"
End If
End Sub
Boîte de Dialogue Oui Non Annuler – vbYesNoCancel
Sub MsgBox_YesNoCancel()
Dim réponse As Integer
réponse = MsgBox("Exemple Oui Non Annuler", vbYesNoCancel)
If réponse = vbYes Then
MsgBox "Oui"
ElseIf réponse = vbNo Then
MsgBox "Non"
Else
MsgBox "Annuler"
End If
End Sub
Boîte de Dialogue Abandonner Recommencer Ignorer – vbAbortRetryIgnore
Sub MsgBox_AbortRetryIgnore()
Dim réponse As Integer
réponse = MsgBox("Exemple Abandonner Recommancer Ignorer", vbAbortRetryIgnore)
If réponse = vbAbort Then
MsgBox "Abandonner"
ElseIf réponse = vbRetry Then
MsgBox "Recommencer"
Else
MsgBox "Ignorer"
End If
End Sub
Boîte de Dialogue Recommencer Annuler – vbRetryCancel
Sub MsgBox_RetryCancel()
Dim réponse As Integer
réponse = MsgBox("Exemple Recommencer Annuler", vbRetryCancel)
If réponse = vbRetry Then
MsgBox "Recommencer"
Else
MsgBox "Annuler"
End If
End Sub
Exemples de MessageBox en VBA
Boîte de Dialogue de Confirmation Avant l’Exécution d’une Macro
Ce code affiche une boîte de message Oui/Non avant d’appeler une macro. Si vous cliquez sur Oui, la macro est appelée, si vous cliquez sur Non, la macro n’est pas exécutée.
Sub Msgbox_AvantExécution()
Dim réponse As Integer
réponse = MsgBox("Voulez-vous exécuter la Macro1?", vbQuestion + vbYesNo)
If réponse = vbYes Then Call Macro1
End Sub
Boîte de Dialogue Oui/Non – Exit Sub
Ici, nous allons confirmer auprès de l’utilisateur s’il veut continuer à exécuter une macro. Si l’utilisateur clique sur Non, le code quittera la procédure, sinon l’exécution se poursuivra.
Sub Msgbox_AvantExécution()
Dim réponse As Integer
réponse = MsgBox("Voulez-vous continuer?", vbQuestion + vbYesNo)
If réponse = vbNo Then Exit Sub
'Suite du code
End Sub
Boîte de dialogues VBA dans Access VBA
Tous les exemples ci-dessus fonctionnent exactement de la même manière en Access VBA qu’en Excel VBA.