La Fonction MsgBox en VBA : Guide Complet

La fonction MsgBox en VBA (Visual Basic for Applications) est un outil puissant pour afficher des messages, des avertissements ou des informations à l’utilisateur. Elle permet également de recueillir des réponses de l’utilisateur sous forme de boutons cliquables. Cet article est divisé en deux parties : la première explique comment envoyer un message sans attente de réponse, et la seconde détaille comment traiter la réponse de l’utilisateur.

Améliorez l’interactivité de vos macros en maîtrisant ‘MsgBox’ et d’autres fonctions clés grâce à notre formation Excel VBA complète.

Partie 1 : Envoi d’un message sans attente de réponse

Lorsque vous souhaitez simplement afficher une information à l’utilisateur sans attendre de réponse, vous pouvez utiliser MsgBox sans parenthèses. Voici comment procéder :

Syntaxe


Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
MsgBox libellé, choix_du_bouton, titre
MsgBox "Bienvenue dans cette application"

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
MsgBox libellé, choix_du_bouton, titre
MsgBox "Bienvenue dans cette application"

libellé :

Saisissez le texte que vous souhaitez voir apparaître dans la boîte de dialogue, il est important d’utiliser des guillements avant et après le texte , par exemple :

« Le traitement a été réalisé »

Par contre si votre texte a été défini dans une variable, il ne faut surtout pas mettre de guillemet autour de votre variable

Choix-du-bouton :

Vous pouvez définir les icônes et les bouton à afficher, ce point sera détaillé ci-dessous. Ce point est optionnel et peut ne pas être renseigné.

Titre :

Vous choisissez le titre à afficher en haut de la boîte de dialogue. Ce point est aussi optionnel.

Exemple


Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
MsgBox « Bienvenue dans cette application »
MsgBox "Bienvenue dans cette application"

Dans cet exemple, seulement le libellé est utilisé.

exemple msgbox vba

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
MsgBox « Bienvenue dans cette application », vbInformation
MsgBox « Bienvenue dans cette application », vbInformation
MsgBox "Bienvenue dans cette application", vbInformation

Dans cet exemple, une icône est ajouté en second paramètre. Le choix du type d’icône ou bouton est détaillé ci-dessous.

exemple msgbox vba avec icone

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
MsgBox « Bienvenue dans cette application », vbInformation, « DOPHIS »
MsgBox « Bienvenue dans cette application », vbInformation, « DOPHIS »
MsgBox "Bienvenue dans cette application", vbInformation, "DOPHIS"

Dans cet exemple, un titre est ajouté à la boîte de dialogue.

exemple msgbox avec titre

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Dim message As String
message = « Bienvenue dans cette application » & vbCr & vbCr
message = message & « Vous êtes connecté avec le login : «  & Environ(« username »)
MsgBox message, vbExclamation, « DOPHIS »

Dim message As String

message = « Bienvenue dans cette application » & vbCr & vbCr
message = message & « Vous êtes connecté avec le login :  » & Environ(« username »)

MsgBox message, vbExclamation, « DOPHIS »

Dim message As String

message = "Bienvenue dans cette application" & vbCr & vbCr
message = message & "Vous êtes connecté avec le login : " & Environ("username")

MsgBox message, vbExclamation, "DOPHIS"

Le libellé peut être remplacé par une variable. Dans ce cas, il est primordiale de ne pas mettre de guillemets autour de la variable.

La construction du texte à afficher s’effectue en suivant les recommandations pour concatener différents éléments.

exemple msgbox avec variable pour le texte

Partie 2 : Envoi d’un message avec traitement de la réponse

Lorsque vous avez besoin de recueillir une réponse de l’utilisateur, par exemple pour confirmer une action, vous pouvez utiliser MsgBox avec différents boutons et traiter la valeur de retour. Le système va identifier quelle bouton est cliqué et stocker l’information dans la variable reponse. Vous pouvez évidemment nommer cette variable avec un autre nom.

Syntaxe

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Dim reponse As Integer
reponse = MsgBox(libellé, [choix-du-bouton], [titre])
Dim reponse As Integer
reponse = MsgBox(libellé, [choix-du-bouton], [titre])

Exemple


Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Sub DemanderConfirmation()
Dim reponse As Integer
reponse = MsgBox(« Voulez-vous continuer ? », vbYesNo + vbQuestion, « Confirmation »)
If reponse = vbYes Then
MsgBox « Vous avez choisi de continuer. », vbInformation, « Information »
Else
MsgBox « Vous avez choisi d’arrêter. », vbExclamation, « Avertissement »
End If
End Sub

Sub DemanderConfirmation()
Dim reponse As Integer
reponse = MsgBox(« Voulez-vous continuer ? », vbYesNo + vbQuestion, « Confirmation »)If reponse = vbYes Then
MsgBox « Vous avez choisi de continuer. », vbInformation, « Information »
Else
MsgBox « Vous avez choisi d’arrêter. », vbExclamation, « Avertissement »
End If
End Sub

Sub DemanderConfirmation()
    Dim reponse As Integer
    reponse = MsgBox("Voulez-vous continuer ?", vbYesNo + vbQuestion, "Confirmation")
    
    If reponse = vbYes Then
        MsgBox "Vous avez choisi de continuer.", vbInformation, "Information"
    Else
        MsgBox "Vous avez choisi d'arrêter.", vbExclamation, "Avertissement"
    End If
End Sub


Dans cet exemple, une boîte de message s’affiche avec les boutons Oui et Non. La réponse de l’utilisateur est stockée dans la variable reponse, et une autre boîte de message est affichée en fonction de la réponse.

Valeur de l’agument bouton

L’argument choix-du-bouton permet de spécifier les boutons, les icônes et le style de la boîte de message. Voici quelques valeurs courantes :

ConstanteValeurDescription
vbOKOnly0Affiche le bouton OK uniquement.
vbOKCancel1Affiche les boutons OK et Annuler.
vbAbortRetryIgnore2Affiche les boutons AbandonnerRépéter et Ignorer.
vbYesNoCancel3Affiche les boutons OuiNon et Annuler.
vbYesNo4Affiche les boutons Oui et Non.
vbRetryCancel5Affiche les boutons Répéter et Annuler.
vbMsgBoxHelpButton16384Affiche un bouton d’aide.

Si vous souhaitez ajouter à la boite de dialogue : une icône vbcritical et les boutons Oui et Non, il faut utilser :

vbcritical + vbYesNo

Il est possible aussi d’utiliser la valeur de ces constantes :

16 + 4

Il est aussi possible d’utiliser la somme de ces constantes :

20

Les 3 éléments précédents sont équivalents, personnelement, je préfère la première solution qui est plus simple à faire évoluer et qui est plus explicite :

  • vbcritical + vbYesNo
  • 16 + 4
  • 20

Cette description permet de comprendre que si vous utilisez les contantes, il faut bien mettre + entre les différents éléments.

Afficher des icônes

L’argument choix-du-bouton permet de spécifier les boutons, les icônes et le style de la boîte de message. Voici quelques valeurs courantes :

ConstanteValeurSignification
vbCritical16icone vbcritical pour msgbox vba
vbQuestion32icone vbquestion pour msgbox vba
vbExclamation48icone vbexclamation pour msgbox vba
vbInformation64icone vbinformation pour msgbox vba

Bouton par défaut

Pour les styles par défaut des boutons, il faut ajouter une des constantes suivantes :

ConstanteValeurDescription
vbDefaultButton10Premier bouton par défaut.
vbDefaultButton2256Deuxième bouton par défaut.
vbDefaultButton3512Troisième bouton par défaut.
vbDefaultButton4768Quatrième bouton par défaut.

Valeurs de retour possibles

La fonction MsgBox renvoie une valeur indiquant quel bouton a été cliqué par l’utilisateur. Voici les valeurs de retour possibles :

ConstanteValeur de retourBouton choisi
vbOK1OK
vbCancel2Annuler
vbAbort3Abandonner
vbRetry4Répéter
vbIgnore5Ignorer
vbYes6Oui
vbNo7Non

Si vous souhaitez intégrer des messages interactifs dans vos macros, un développeur VBA Excel peut créer des MsgBox personnalisées et efficaces.