Ce didacticiel expliquera 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 InputBoxes.
Fonction VBA MsgBox
En VBA, il est facile d'afficher une simple MsgBox :
1 | MsgBox "Ceci est une boîte de message" |
Cependant, vous pouvez faire bien plus qu'afficher une simple boîte de message OK. Regardons rapidement un exemple compliqué avant de plonger dans les détails…
VBA Oui Non Boîte de message
Ci-dessous, nous allons créer une boîte de message avec :
- Un titre « Titre de la boîte de message » et une invite « Texte »
- Une icône de point d'interrogation
- Oui/Non d'options au lieu d'un simple « OK »
- Bouton par défaut = « Non »
123 | Réponse faible en tant qu'entierréponse = MsgBox("Texte", vbQuestion + vbOuiNon + vbDefaultButton2, "Titre de la boîte de message") |
La boîte de message renverra vbYes ou vbNo selon le choix de l'utilisateur. Vous pouvez alors effectuer différentes actions en fonction du choix :
12345 | Si réponse = vbOui AlorsMsgBox "Oui"AutreMsgBox "Non"Fin si |
Dans la section suivante, nous vous montrerons toutes les options qui s'offrent à vous lors de la création de boîtes de message. Ensuite, nous vous présenterons la syntaxe de la fonction MsgBox et passerons enfin en revue d'autres exemples de boîte de message.
Options de la boîte de message VBA
Regardez l'image ci-dessous. Ici, vous verrez (presque) toutes les options qui s'offrent à vous lors de la création de boîtes de message. Remarquez les icônes et les différents boutons.
Il s'agit d'une capture d'écran du « MessageBox Builder » de notre complément VBA Premium : AutoMacro. Le MessageBox Builder vous permet de concevoir rapidement la boîte de message souhaitée et d'insérer le code dans votre module de code. Il contient également de nombreux autres générateurs de code, une vaste bibliothèque de codes VBA et un assortiment d'outils de codage. C'est un incontournable pour tout développeur VBA.
Syntaxe de la fonction MsgBox
MsgBox( invite [, boutons ] [, titre ] [, fichier d'aide, contexte ] )
invite (obligatoire) - Ceci est le texte de la boîte de message principale.
boutons - Choisissez les boutons à afficher. S'il est omis, 'OKseulement'. Ici, vous pouvez également spécifier l'icône à afficher et le bouton par défaut.
Titre - Le titre en haut de la boîte de message. S'il est omis, le nom de l'application en cours est affiché (ex. Microsoft Excel).
fichier d'aide - Spécifiez le fichier d'aide accessible lorsque l'utilisateur clique sur le bouton « Aide ». Si spécifié, vous devez également ajouter un contexte (ci-dessous)
le contexte - Expression numérique représentant le numéro de contexte d'aide affecté à la rubrique d'aide appropriée.
Vous pouvez probablement ignorer les arguments du fichier d'aide et du contexte. Je ne les ai jamais vus utilisés.
Personnaliser le titre et l'invite de la boîte de message
La fonction MsgBox vous permet de personnaliser le titre et les messages d'invite comme suit :
1 | Msgbox "Invite", "Titre" |
Un autre exemple:
123 | Sous MsgBoxPromptTitle()MsgBox "Étape 1 terminée. Cliquez sur OK pour exécuter l'étape 2.",, "Étape 1 sur 5"Fin du sous-marin |
Important! N'oubliez pas d'entourer votre texte de citations.
MessageBox Line Breaks
Vous pouvez également ajouter des sauts de ligne aux invites de votre boîte de message avec « vbNewLine ».
123 | Sous MsgBoxPromptTitle_NewLine()MsgBox "Étape 1 terminée." & vbNewLine & "Cliquez sur OK pour exécuter l'étape 2", , "Étape 1 sur 5"Fin du sous-marin |
Notez que nous utilisons le symbole & pour joindre du texte. Vous pouvez en savoir plus sur l'utilisation de & avec du texte et d'autres options pour insérer des sauts de ligne dans notre article sur la jonction de texte.
Icônes MsgBox
VBA vous donne la possibilité d'ajouter l'une des quatre icônes prédéfinies à vos boîtes de message :
Icône Constante | Icône |
---|---|
vbInformations | ![]() |
vbCritique | ![]() |
vbQuestion | ![]() |
vbExclamation | ![]() |
La constante Icon doit être placée dans l'argument du bouton :
123 | Sous MsgBoxQuestionIcon()MsgBox "Exemple de question", vbQuestionFin du sous-marin |
Cela générera la boîte de message « OK » par défaut avec l'icône Question :
Remarquez comment, lorsque vous tapez, l'éditeur VBA vous montrera les options qui s'offrent à vous :
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 - Informations
123 | Sous MsgBoxInformationIcon()MsgBox "Exemple d'informations", vbInformationFin du sous-marin |
Icônes MsgBox - Critique
123 | Sous MsgBoxCriticalIcon()MsgBox "Exemple critique", vbCriticalFin du sous-marin |
Icônes MsgBox - Question
123 | Sous MsgBoxQuestionIcon()MsgBox "Exemple de question", vbQuestionFin du sous-marin |
Icônes MsgBox - Exclamation
123 | Sous MsgBoxExclamationIcon()MsgBox "Exclamation Exemple", vbExclamationFin du sous-marin |
Ci-dessous, nous parlerons de la génération de boîtes de message avec différentes dispositions de boutons. Si vous choisissez un type de boîte de message différent, vous devrez ajouter le type d'icône après les boutons à l'aide d'un « + » :
123 | Sous MsgBoxQuestionIcon()MsgBox "Voulez-vous continuer ?", vbOKCancel + vbQuestionFin du sous-marin |
Variables de MsgBox
Jusqu'à présent, nous avons principalement travaillé avec la boîte de message « OK » par défaut. La boîte de message OK n'a qu'une seule option : Appuyer sur « OK » permet au code de continuer. Cependant, vous pouvez également spécifier d'autres groupes de boutons : OK / Annuler, Oui / Non, etc.
Dans ce cas, vous souhaiterez effectuer différentes actions en fonction du bouton enfoncé. Regardons un exemple.
Voici la boîte de message que nous allons générer :
Voici le code complet (nous le décomposerons ensuite) :
123456789101112 | Sous MsgBoxVariable()Réponse faible en tant qu'entierréponse = MsgBox("Voulez-vous continuer ?", vbQuestion + vbOuiNon)Si réponse = vbOui AlorsMsgBox "Oui"AutreMsgBox "Non"Fin siFin du sous-marin |
Nous affectons d'abord la sortie de la boîte de message à une variable entière.
123 | Réponse faible en tant qu'entierréponse = MsgBox("Voulez-vous continuer ?", vbQuestion + vbOuiNon) |
Ensuite, nous utilisons un If-Else pour déterminer quoi faire en fonction du bouton enfoncé :
12345 | Si réponse = vbOui AlorsMsgBox "Oui"AutreMsgBox "Non"Fin si |
La fonction MsgBox renvoie une valeur entière (entre 1 et 7), nous définissons donc la variable comme un type entier. Cependant, au lieu de faire référence au nombre entier, vous pouvez faire référence à une constante (ex. vbOK, vbCancel, etc.). Regardez ce tableau pour voir toutes les options :
Bouton | Constant | Valeur |
---|---|---|
d'accord | vbOK | 1 |
Annuler | vbAnnuler | 2 |
Avorter | vbAbandonner | 3 |
Réessayez | vbRéessayer | 4 |
Ignorer | vbIgnorer | 5 |
Oui | vbOui | 6 |
Non | vbNon | 7 |
Nous allons maintenant faire une démonstration de chaque groupe de boutons :
Boîte de message OK - vbOKOnly
Il s'agit de la boîte de message VBA standard.
123456 | Sous MsgBox_OKOnly()Réponse faible en tant qu'entierréponse = MsgBox("OKOnly Exemple", vbOKOnly)Fin du sous-marin |
OK Annuler la boîte de message - vbOKCancel
123456789101112 | Sous MsgBox_OKCancel()Réponse faible en tant qu'entierréponse = MsgBox("OK Annuler l'exemple", vbOKCancel)Si réponse = vbOK AlorsMsgBox "OK"AutreMsgBox "Annuler"Fin siFin du sous-marin |
Oui Non Boîte de message - vbYesNo
123456789101112 | Sous MsgBox_YesNo()Réponse faible en tant qu'entierréponse = MsgBox("Oui Non Exemple", vbOuiNon)Si réponse = vbOui AlorsMsgBox "Oui"AutreMsgBox "Non"Fin siFin du sous-marin |
Oui Non Annuler la boîte de message - vbYesNoCancel
1234567891011121314 | Sous MsgBox_YesNoCancel()Réponse faible en tant qu'entierréponse = MsgBox("Oui Non Annuler l'exemple", vbOuiNoCancel)Si réponse = vbOui AlorsMsgBox "Oui"Sinon si réponse = vbNon AlorsMsgBox "Non"AutreMsgBox "Annuler"Fin siFin du sous-marin |
Abandonner la boîte de message Ignorer la nouvelle tentative - vbAbortRetryIgnore
1234567891011121314 | Sous MsgBox_AbortRetryIgnore()Réponse faible en tant qu'entierréponse = MsgBox("Abort Retry Ignore Example", vbAbortRetryIgnore)Si réponse = vbAbort AlorsMsgBox "Abandonner"ElseIf réponse = vbRetry ThenMsgBox "Réessayer"AutreMsgBox "Ignorer"Fin siFin du sous-marin |
Réessayer la boîte de message d'annulation - vbRetryCancel
123456789101112 | Sous MsgBox_RetryCancel()Réponse faible en tant qu'entierréponse = MsgBox("Réessayer l'exemple d'annulation", vbRetryCancel)Si réponse = vbRéessayer AlorsMsgBox "Réessayer"AutreMsgBox "Annuler"Fin siFin du sous-marin |
Exemples de boîte de message VBA
Confirmation de la boîte de message avant d'exécuter la macro
Ce code affichera 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 ne s'exécute pas.
12345678 | Sous Msgbox_BeforeRunning()Réponse faible en tant qu'entierréponse = MsgBox("Voulez-vous exécuter Macro1 ?", vbQuestion + vbYesNo)Si réponse = vbOui, alors appelez Macro1Fin du sous-marin |
Oui / Non Message Box - Quitter Sub
Ici, nous allons confirmer avec l'utilisateur s'il faut continuer à exécuter une macro. Si vous cliquez sur Non, le code quittera le sous-marin, sinon la procédure continuera.
12345678910 | Sous Msgbox_BeforeRunning()Réponse faible en tant qu'entierréponse = MsgBox("Voulez-vous continuer ?", vbQuestion + vbOuiNon)Si réponse = vbNo Then Exit Sub'Du codeFin du sous-marin |
Boîte de message VBA dans Access VBA
Tous les exemples ci-dessus fonctionnent exactement de la même manière dans Access VBA et dans Excel VBA.