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
MsgBox "Bienvenue dans cette application"
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
MsgBox "Bienvenue dans cette application"
Dans cet exemple, seulement le libellé est utilisé.
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.
MsgBox "Bienvenue dans cette application", vbInformation, "DOPHIS"
Dans cet exemple, un titre est ajouté à la boîte de dialogue.
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.
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
reponse = MsgBox(libellé, [choix-du-bouton], [titre])
Exemple
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 :
Constante | Valeur | Description |
---|---|---|
vbOKOnly | 0 | Affiche le bouton OK uniquement. |
vbOKCancel | 1 | Affiche les boutons OK et Annuler. |
vbAbortRetryIgnore | 2 | Affiche les boutons Abandonner, Répéter et Ignorer. |
vbYesNoCancel | 3 | Affiche les boutons Oui, Non et Annuler. |
vbYesNo | 4 | Affiche les boutons Oui et Non. |
vbRetryCancel | 5 | Affiche les boutons Répéter et Annuler. |
vbMsgBoxHelpButton | 16384 | Affiche 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.
Bouton par défaut
Pour les styles par défaut des boutons, il faut ajouter une des constantes suivantes :
Constante | Valeur | Description |
---|---|---|
vbDefaultButton1 | 0 | Premier bouton par défaut. |
vbDefaultButton2 | 256 | Deuxième bouton par défaut. |
vbDefaultButton3 | 512 | Troisième bouton par défaut. |
vbDefaultButton4 | 768 | Quatriè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 :
Constante | Valeur de retour | Bouton choisi |
---|---|---|
vbOK | 1 | OK |
vbCancel | 2 | Annuler |
vbAbort | 3 | Abandonner |
vbRetry | 4 | Répéter |
vbIgnore | 5 | Ignorer |
vbYes | 6 | Oui |
vbNo | 7 | Non |
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.