Dans Excel VBA, vous pouvez utiliser la fonction MsgBox pour afficher une boîte de message (comme indiqué ci-dessous) :
Une MsgBox n'est rien d'autre qu'une boîte de dialogue que vous pouvez utiliser pour informer vos utilisateurs en affichant un message personnalisé ou en obtenant des entrées de base (telles que Oui/Non ou OK/Annuler).
Pendant que la boîte de dialogue MsgBox s'affiche, votre code VBA est interrompu. Vous devez cliquer sur l'un des boutons de la MsgBox pour exécuter le code VBA restant.
Remarque : dans ce didacticiel, j'utiliserai les mots boîte de message et MsgBox de manière interchangeable. Lorsque vous travaillez avec Excel VBA, vous devez toujours utiliser MsgBox.Anatomie d'une MsgBox VBA dans Excel
Une boîte de message comprend les parties suivantes :
- Titre: Ceci est généralement utilisé pour afficher le sujet de la boîte de message. Si vous ne spécifiez rien, il affiche le nom de l'application - qui est Microsoft Excel dans ce cas.
- Rapide: C'est le message que vous souhaitez afficher. Vous pouvez utiliser cet espace pour écrire quelques lignes ou même afficher des tableaux/données ici.
- Boutons): Bien que OK soit le bouton par défaut, vous pouvez le personnaliser pour afficher des boutons tels que Oui/Non, Oui/Non/Annuler, Réessayer/Ignorer, etc.
- Icône Fermer: Vous pouvez fermer la boîte de message en cliquant sur l'icône de fermeture.
Syntaxe de la fonction VBA MsgBox
Comme je l'ai mentionné, MsgBox est une fonction et a une syntaxe similaire aux autres fonctions VBA.
MsgBox( invite [, boutons ] [, titre ] [, fichier d'aide, contexte ] )
- rapide - C'est un argument requis. Il affiche le message que vous voyez dans la MsgBox. Dans notre exemple, le texte « Ceci est un exemple de MsgBox » est l'« invite ». Vous pouvez utiliser jusqu'à 1024 caractères dans l'invite et pouvez également l'utiliser pour afficher les valeurs des variables. Si vous souhaitez afficher une invite comportant plusieurs lignes, vous pouvez également le faire (plus de détails plus loin dans ce didacticiel).
- [boutons] - Il détermine quels boutons et icônes sont affichés dans la MsgBox. Par exemple, si j'utilise vbOkOnly, il affichera uniquement le bouton OK, et si j'utilise vbOKCancel, il affichera à la fois les boutons OK et Annuler. Je couvrirai différents types de boutons plus tard dans ce tutoriel.
- [Titre] - Ici, vous pouvez spécifier la légende que vous voulez dans la boîte de dialogue du message. Ceci est affiché dans la barre de titre de la MsgBox. Si vous ne spécifiez rien, il affichera le nom de l'application.
- [fichier d'aide] - Vous pouvez spécifier un fichier d'aide accessible lorsqu'un utilisateur clique sur le bouton Aide. Le bouton d'aide n'apparaîtrait que lorsque vous utilisez le code du bouton correspondant. Si vous utilisez un fichier d'aide, vous devez également spécifier l'argument de contexte.
- [le contexte] - Il s'agit d'une expression numérique qui est le numéro de contexte d'aide affecté à la rubrique d'aide appropriée.
Si vous débutez dans le concept de Msgbox, n'hésitez pas à ignorer les arguments [helpfile] et [context]. J'ai rarement vu ceux-ci être utilisés.
Remarque : Tous les arguments entre crochets sont facultatifs. Seul l'argument « invite » est obligatoire.
Constantes du bouton Excel VBA MsgBox (exemples)
Dans cette section, je vais couvrir les différents types de boutons que vous pouvez utiliser avec une VBA MsgBox.
Avant de vous montrer le code VBA correspondant et à quoi ressemble la MsgBox, voici un tableau répertoriant toutes les différentes constantes de bouton que vous pouvez utiliser.
Constante de bouton | La description |
vbOKUniquement | Affiche uniquement le bouton OK |
vbOKAnnuler | Affiche les boutons OK et Annuler |
vbAbortRetryIgnorer | Affiche les boutons Abandonner, Réessayer et Ignorer |
vbOuiNon | Affiche les boutons Oui et Non |
vbOuiNonAnnuler | Affiche les boutons Oui, Non et Annuler |
vbRéessayerAnnuler | Affiche les boutons Réessayer et Annuler |
vbMsgBoxHelpButton | Affiche le bouton Aide. Pour que cela fonctionne, vous devez utiliser les arguments d'aide et de contexte dans la fonction MsgBox |
vbDefaultButton1 | Rend le premier bouton par défaut. Vous pouvez modifier le numéro pour changer le bouton par défaut. Par exemple, vbDefaultButton2 fait du deuxième bouton le bouton par défaut |
Remarque : En parcourant les exemples de création de différents boutons, vous vous demandez peut-être à quoi bon avoir ces boutons si cela n'a aucun impact sur le code.
Cela fait! En fonction de la sélection, vous pouvez coder ce que vous voulez que le code fasse. Par exemple, si vous sélectionnez OK, le code doit continuer et si vous cliquez sur Annuler, le code doit s'arrêter. Cela peut être fait en utilisant des variables et en affectant la valeur de la boîte de message à une variable. Nous aborderons cela dans les sections suivantes de ce didacticiel.
Voyons maintenant quelques exemples de la façon dont les différents boutons peuvent être affichés dans une MsgBox et à quoi cela ressemble.
Boutons MsgBox - vbOKOnly (par défaut)
Si vous utilisez uniquement l'invite et ne spécifiez aucun des arguments, vous obtiendrez la boîte de message par défaut, comme indiqué ci-dessous :
Voici le code qui donnera cette boîte de message :
Sub DefaultMsgBox() MsgBox "Ceci est un exemple de boîte" End Sub
Notez que la chaîne de texte doit être entre guillemets doubles.
Vous pouvez également utiliser la constante de bouton vbOKOnly, mais même si vous ne spécifiez rien, elle est prise par défaut.
Boutons MsgBox - OK & Annuler
Si vous souhaitez uniquement afficher les boutons OK et Annuler, vous devez utiliser la constante vbOKCancel.
Sub MsgBoxOKCancel() MsgBox "Vous voulez continuer ?", vbOKCancel End Sub
Boutons MsgBox - Abandonner, réessayer et ignorer
Vous pouvez utiliser la constante « vbAbortRetryIgnore » pour afficher les boutons Abandonner, Réessayer et Ignorer.
Sub MsgBoxAbortRetryIgnore() MsgBox "Que voulez-vous faire ?", vbAbortRetryIgnore End Sub
Boutons MsgBox - Oui et Non
Vous pouvez utiliser la constante 'vbYesNo' pour afficher les boutons Oui et Non.
Sub MsgBoxYesNo() MsgBox "Faut-il arrêter ?", vbYesNo End Sub
Boutons MsgBox - Oui, Non et Annuler
Vous pouvez utiliser la constante 'vbYesNoCancel' pour afficher les boutons Oui, Non et Annuler.
Sub MsgBoxYesNoCancel() MsgBox "Faut-il arrêter ?", vbYesNoCancel End Sub
Boutons MsgBox - Réessayer et annuler
Vous pouvez utiliser la constante 'vbRetryCancel' pour afficher les boutons Réessayer et Annuler.
Sub MsgBoxRetryCancel() MsgBox "Que voulez-vous faire ensuite ?", vbRetryCancel End Sub
Boutons MsgBox - Bouton Aide
Vous pouvez utiliser la constante 'vbMsgBoxHelpButton' pour afficher le bouton d'aide. Vous pouvez l'utiliser avec d'autres constantes de bouton.
Sub MsgBoxRetryHelp() MsgBox "Que voulez-vous faire ensuite ?", vbRetryCancel + vbMsgBoxHelpButton End Sub
Notez que dans ce code, nous avons combiné deux constantes de bouton différentes (vbRetryCancel + vbMsgBoxHelpButton). La première partie montre les boutons Réessayer et Annuler et la seconde partie montre le bouton Aide.
Boutons MsgBox - Définition d'un bouton par défaut
Vous pouvez utiliser la constante 'vbDefaultButton1' pour définir le premier bouton par défaut. Cela signifie que le bouton est déjà sélectionné et si vous appuyez sur Entrée, il exécute ce bouton.
Vous trouverez ci-dessous le code qui définira le deuxième bouton (le bouton « Non ») par défaut.
Sub MsgBoxOKCancel() MsgBox "Que voulez-vous faire ensuite ?", vbYesNoCancel + vbDefaultButton2 End Sub
Dans la plupart des cas, le bouton le plus à gauche est le bouton par défaut. Vous pouvez choisir d'autres boutons à l'aide de vbDefaultButton2, vbDefaultButton3 et vbDefaultButton4.
Constantes d'icône Excel VBA MsgBox (exemples)
Outre les boutons, vous pouvez également personnaliser les icônes affichées dans la boîte de dialogue MsgBox. Par exemple, vous pouvez avoir une icône critique rouge ou une icône d'information bleue.
Vous trouverez ci-dessous un tableau répertoriant le code qui affichera l'icône correspondante.
Icône Constante | La description |
vbCritique | Affiche l'icône de message critique |
vbQuestion | Affiche l'icône de question |
vbExclamation | Affiche l'icône de message d'avertissement |
vbInformations | Affiche l'icône d'information |
Icônes MsgBox - Critique
Si vous souhaitez afficher une icône critique dans votre MsgBox, utilisez la constante vbCritical. Vous pouvez l'utiliser avec d'autres constantes de bouton (en mettant un signe + entre les codes).
Par exemple, vous trouverez ci-dessous un code qui affichera le bouton OK par défaut avec une icône critique.
Sub MsgBoxCriticalIcon() MsgBox "Ceci est un exemple de boîte", vbCritical End Sub
Si vous souhaitez afficher l'icône critique avec les boutons Oui et Non, utilisez le code suivant :
Sub MsgBoxCriticalIcon() MsgBox "Ceci est un exemple de boîte", vbYesNo + vbCritical End Sub
Icônes MsgBox - Question
Si vous souhaitez afficher une icône critique dans votre MsgBox, utilisez la constante vbQuestion.
Sub MsgBoxQuestionIcon() MsgBox "Ceci est un exemple de boîte", vbYesNo + vbQuestion End Sub
Icônes MsgBox - Exclamation
Si vous souhaitez afficher une icône d'exclamation dans votre MsgBox, utilisez la constante vbExclamation.
Sub MsgBoxExclamationIcon() MsgBox "Ceci est un exemple de boîte", vbYesNo + vbExclamation End Sub
Icônes MsgBox - Informations
Si vous souhaitez afficher une icône d'information dans votre MsgBox, utilisez la constante vbInformation.
Sub MsgBoxInformationIcon() MsgBox "Ceci est un exemple de boîte", vbYesNo + vbInformation End Sub
Personnalisation du titre et de l'invite dans la MsgBox
Lorsque vous utilisez MsgBox, vous pouvez personnaliser le titre et les messages d'invite.
Jusqu'à présent, l'exemple que nous avons vu utilise Microsoft Excel comme titre. Si vous ne spécifiez pas l'argument du titre, MsgBox utilise automatiquement le titre de l'application (qui a été Microsoft Excel dans ce cas).
Vous pouvez personnaliser le titre en le spécifiant dans le code comme indiqué ci-dessous :
Sub MsgBoxInformationIcon() MsgBox "Voulez-vous continuer ?", vbYesNo + vbQuestion, "Étape 1 sur 3" End Sub
De même, vous pouvez également personnaliser le message d'invite.
Vous pouvez également ajouter des sauts de ligne dans le message d'invite.
Dans le code ci-dessous, j'ai ajouté un saut de ligne en utilisant 'vbNewLine'.
Sub MsgBoxInformationIcon() MsgBox "Voulez-vous continuer ?" & vbNewLine & "Cliquez sur Oui pour continuer", vbYesNo + vbQuestion, "Étape 1 sur 3" End Sub
Vous pouvez également utiliser le caractère de retour chariot - Chr(13) - ou le saut de ligne - Chr(10) pour insérer une nouvelle ligne dans le message d'invite.
Notez que vous pouvez ajouter une nouvelle ligne au message d'invite uniquement et non au titre.
Affectation de la valeur MsgBox à une variable
Jusqu'à présent, nous avons vu les exemples où nous avons créé des boîtes de message et personnalisé les boutons, les icônes, le titre et l'invite.
Cependant, cliquer sur un bouton n'a rien fait.
Avec la fonction MsgBox dans Excel, vous pouvez décider ce que vous voulez faire lorsqu'un utilisateur clique sur un bouton spécifique. Et cela est possible car chaque bouton a une valeur qui lui est associée.
Donc, si je clique sur le bouton Oui, la fonction MsgBox renvoie une valeur (6 ou la constante vbYes) que je peux utiliser dans mon code. De même, si l'utilisateur sélectionne le bouton Non, il renvoie une valeur différente ((7 ou la constante vbNo)) que je peux utiliser dans le code.
Vous trouverez ci-dessous un tableau qui montre les valeurs exactes et la constante renvoyée par la fonction MsgBox. Vous n'avez pas besoin de les mémoriser, il suffit d'en être conscient et vous pouvez utiliser les constantes qui sont plus faciles à utiliser.
Bouton cliqué | 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 |
Voyons maintenant comment contrôler le code de macro VBA en fonction du bouton sur lequel un utilisateur clique.
Dans le code ci-dessous, si l'utilisateur clique sur Oui, il affiche le message « Vous avez cliqué sur Oui », et si l'utilisateur clique sur Non, il affiche « Vous avez cliqué sur Non ».
Sub MsgBoxInformationIcon() Result = MsgBox("Voulez-vous continuer ?", vbYesNo + vbQuestion) If Result = vbYes Then MsgBox "Vous avez cliqué sur Oui" Sinon : MsgBox "Vous avez cliqué sur Non" End If End Sub
Dans le code ci-dessus, j'ai affecté la valeur de la fonction MsgBox à la variable Result. Lorsque vous cliquez sur le bouton Oui, la variable Résultat obtient la constante vbYes (ou le nombre 6) et lorsque vous cliquez sur Non, la variable Résultat obtient la constante vbNo (ou le nombre 7).
Ensuite, j'ai utilisé une construction If Then Else pour vérifier si la variable Result contient la valeur vbYes. Si c'est le cas, il affiche l'invite « Vous avez cliqué sur Oui », sinon il affiche « Vous avez cliqué sur Non ».
Vous pouvez utiliser le même concept pour exécuter un code si un utilisateur clique sur Oui et quitter le sous-programme lorsqu'il clique sur Non.
Remarque : lorsque vous affectez la sortie MsgBox à une variable, vous devez mettre les arguments de la fonction MsgBox entre parenthèses. Par exemple, dans la ligne Resultat = MsgBox("Voulez-vous continuer ?", vbYesNo + vbQuestion), vous pouvez voir que les arguments sont entre parenthèses.Si vous souhaitez approfondir la fonction Message Box, voici le document officiel à ce sujet.
Vous aimerez peut-être également les didacticiels Excel VBA suivants :
- Fonction de fractionnement Excel VBA.
- Fonction Excel VBA InStr.
- Travailler avec des cellules et des plages dans Excel VBA.
- Travailler avec des feuilles de calcul en VBA.
- Travailler avec des classeurs en VBA.
- Utilisation de boucles dans Excel VBA.
- Comprendre les types de données Excel VBA (variables et constantes)
- Comment créer et utiliser un classeur de macros personnelles dans Excel.
- Exemples de code de macro Excel utiles.
- Utilisation de la boucle suivante dans Excel VBA.
- Événements Excel VBA - Un guide simple (et complet).
- Comment exécuter une macro dans Excel - Un guide complet étape par étape.
- Comment créer et utiliser un complément Excel.