Utilisation des MsgBox
MsgBox (lire Message Box) est sans aucun doute la première instruction que tout développeur ait connue lors de son premier contact avec VBA. Parmi nous, lequel n'a jamais vu, ou fait ses premiers pas grâce à la célèbrissime boîte de dialogue "Hello World" ?
Au delà du simple message d'alerte destiné à l'utilisateur, la MsgBox est aussi une façon pratique d'ajouter de l'interactivité à une procédure. Le dialogue avec l'utilisateur est à portée d'un clic de souris!
Dans le présent article, nous allons voir la façon d'utiliser cet outil selon le besoin et selon les arguments et constantes à notre disposition.
Pour celles et ceux d'entre vous qui maîtrisent déjà un peu VBA, un (ou deux) autre(s) article(s) sont en préparation pour aborder la personnalisation des boutons d'une MsgBox (ou presque) et un peu plus encore...
La MsgBox : méthode ou fonction ?
1er cas : méthode
J'ai recours à une MsgBox pour diffuser un simple message d'information (ou d'alerte), aucune réponse de l'utilisateur n'est attendue, un seul bouton OK est ici nécessaire, j'utilise la MsgBox en tant que méthode :
Code utilisé :
MsgBox "Nous sommes le " & Date, vbOKOnly + vbInformation, "mDF XLpages.com"
2ème cas : fonction
Je souhaite proposer un choix à l'utilisateur et j'ai l'intention d'orienter le déroulement du programme en fonction de la réponse de celui-ci. Un minimum de deux boutons est donc requis cette fois (pour les options proposées). De plus, il me faut récupérer la réponse de l'utilisateur pour traitement, c'est pourquoi je vais utiliser la MsgBox en tant que fonction maintenant :
Code utilisé :
Dim Rep As Integer
Rep = MsgBox("Voulez-vous continuez ?", vbYesNo + vbQuestion, "mDF XLpages.com")
If Rep = vbYes Then
' ici le traitement si réponse positive
' ...
Else
' ici le traitement si réponse négative
' ...
End If
Remarquez cette fois, l'utilisation d'une variable Rep (de type Integer) pour stocker et exploiter la réponse de l'utilisateur. Notez également l'ajout des paranthèses encadrant les arguments dans la fonction.
MsgBox : syntaxe, arguments et constantes
Syntaxe :
MsgBox(prompt[, buttons] [, title] [, helpfile, context])
Les arguments nommés sont décrits ci-dessous :
Arguments | Descriptions |
prompt |
|
buttons |
|
title |
|
helpfile * |
|
context * |
|
Remarque : si vous voulez omettre certains arguments dans la définition de la MsgBox, vous devez quand même placer la virgule de séparation correspondante.
Par exemple, dans le code :MsgBox "Voici mon message!", , "mDF XLpages.com"J'ai volontairement omis l'argument buttons. Cet argument étant facultatif, par défaut la valeur 0 lui sera attribuée (équivalent à vbOKonly). Voici ce que j'obtiens :
L'argument buttons peut recevoir les valeurs (cumulables) suivantes :
Constantes | Valeurs | Descriptions |
vbOKOnly | 0 |
|
vbOKCancel | 1 |
|
vbAbortRetryIgnore | 2 |
|
vbYesNoCancel | 3 |
|
vbYesNo | 4 |
|
vbRetryCancel | 5 |
|
vbCritical | 16 |
|
vbQuestion | 32 |
|
vbExclamation | 48 |
|
vbInformation | 64 |
|
vbDefaultButton1 | 0 |
|
vbDefaultButton2 | 256 |
|
vbDefaultButton3 | 512 |
|
vbDefaultButton4 | 768 |
|
vbApplicationModal | 0 |
|
vbSystemModal | 4096 |
|
vbMsgBoxHelpButton | 16384 |
|
VbMsgBoxSetForeground | 65536 |
|
vbMsgBoxRight | 524288 |
|
vbMsgBoxRtlReading | 1048576 |
|
- Le premier groupe de valeurs (0 à 5) : décrit le nombre et le type de boutons de la boîte de dialogue.
- Le deuxième groupe (16, 32, 48 et 64) : décrit le style d'icône.
- Le troisième groupe (0, 256 et 512) : définit le bouton par défaut.
- Enfin, le quatrième groupe (0 et 4096) : détermine la modalité de la zone de message. Sauf erreur de ma part, non utilisable en VBA.
Pour chaque groupe, il est possible de choisir une unique valeur. Le nombre correspondant au cumul des valeurs sélectionnées (une par groupe) sera la valeur de l'argument buttons à prendre en compte.
Par exemple, si vous voulez obtenir une MsgBox avec les boutons Oui/Non (valeur 4), une icône Question (valeur 32) et le deuxième bouton par défaut (valeur 256), il conviendra de saisir 292 comme argument buttons (soit 4 + 32 + 256).
Mais au lieu de saisir la valeur 292, on peut aussi saisir simplement l'expression vbYesNo + vbQuestion + vbDefaultButton2. Cela revient au même, reste plus pratique et rend surtout votre code plus lisible!
Valeur de retour
Nous l'avons vu un peu plus haut dans cet article, la MsgBox peut être utilisée en tant que fonction pour capter un choix de l'utilisateur. La valeur de retour est de type Integer et renvoie le numéro (l'identifiant) du bouton sélectionné par ce dernier.
On peut résumer le retour comme suit :
Si l'utilisateur clique sur... | ...voici la valeur retournée... | ...et voilà la constante VBA correspondante. |
| 1 | vbOK |
| 2 | vbCancel |
| 3 | vbAbort |
| 4 | vbRetry |
| 5 | vbIgnore |
| 6 | vbYes |
| 7 | vbNo |
Remarques
La croix de fermeture de fenêtre (rouge) est grisée et ne peut être sélectionnée lorsque la boîte de dialogue comprend plusieurs boutons sans la présence d'un bouton . Il n'existe donc pas de valeur de retour nulle.
Si la boîte de dialogue est dotée d'un bouton , appuyer sur Échap équivaut à cliquer sur .
Autres articles dans cette catégorie | Publié le | Vues |
---|---|---|
VBA et les variables | 09-02-2008 | 94571 |
Utilisation des MsgBox | 03-11-2007 | 351118 |
Tutoriels n° 04 : Associer la macro à un bouton de la barre d'outils Formulaires ou à un objet Dessin | 11-06-2006 | 15314 |
Tutoriels n° 03 : Et si nous pouvions lancer cette procédure à l'aide d'un bouton ? | 11-06-2006 | 15173 |
Tutoriels n° 02 : A quoi ressemble le code généré par l'enregistreur et comment y accéder ? | 10-06-2006 | 12056 |
Tutoriels n° 01 : Comment utiliser l'enregistreur de macro et réaliser votre première procédure VBA ? | 06-06-2006 | 21424 |
Débuter avec VBA | 06-06-2006 | 35591 |