VBA – Boîte de Dialogue Oui-Non (Msgbox)

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

David Gagnon

Last updated on août 22, 2022

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.

vba write messagebox code

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 vba information msgbox icon
vbCritical vba critical msgbox icon
vbQuestion vba question msgbox icon
vbExclamation vba exclamation msgbox icon

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.

vba-free-addin

Module Complémentaire d'Exemples de Code VBA

Accédez facilement à tous les exemples disponibles sur le site.

Naviguez simplement dans le menu, cliquez, et le code sera inséré directement dans votre module. Module complémentaire .xlam.

(Aucune installation requise!)

Téléchargement gratuit

Retour aux exemples de code VBA