Oui Non Boîte de message (Msgbox) - Exemples de code VBA

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.

Vous contribuerez au développement du site, partager la page avec vos amis

wave wave wave wave wave