dimanche 17 janvier 2016
Utilisation des MsgBox en VBA
Utilisation des MsgBox
Publié par myDearFriend! le 03-11-2007 (64937 lectures)
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 ?
En fait, on peut utiliser la MsgBox comme une méthode ou comme une fonction. Tout dépend de l'utilisation qu'on veut en faire.
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 :
MsgBox
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 :
MsgBox
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
La MsgBox est une boîte de dialogue dite modale, c'est-à-dire que le programme est interrompu tant que l'utilisateur ne ferme pas le message (en cliquant sur l'un des boutons ou sur la croix de fermeture). En tant que fonction, cette instruction renvoie la réponse de l'utilisateur sous forme d'une valeur numérique de type Integer. Cette valeur représente le numéro du bouton choisi.
Syntaxe :
MsgBox(prompt[, buttons] [, title] [, helpfile, context])
Les arguments nommés sont décrits ci-dessous :
Arguments Descriptions
prompt
Chaîne de caractères représentant le message de la boîte de dialogue. La longueur maximale de cet argument est approximativement de 1024 caractères selon la police utilisée. Le passage à la ligne s'opère en insérant un retour chariot vbCr ou un saut de ligne vbLf ou bien une combinaison des deux vbCrLf.
Pour rappel, les constantes vbCr, vbLf et vbCrLf représentent respectivement les valeurs suivantes : Chr(13), Chr(10) et Chr(13) + Chr(10).
buttons
Facultatif. C'est grâce à cet argument que l'on va pouvoir définir les boutons souhaités, le style d'icône et le bouton par défaut (celui qui sera pris en compte si l'utilisateur appuie sur Entrée).Il s'agit d'une donnée numérique représentant la somme des constantes possibles (voir plus bas). La valeur par défaut est vbOkOnly (soit la valeur 0).
title
Facultatif. Chaîne de caractères valant titre de la boîte de dialogue. A défaut, c'est le nom de l'application qui sera pris en compte.
helpfile *
Facultatif. Expression de chaîne indiquant le fichier d'aide à utiliser pour la boîte de dialogue. Cet argument fonctionne de paire avec l'argument context.
context *
Facultatif. Expression indiquant le numéro de la rubrique d'aide associée. Cet argument fonctionne de paire avec l'argument helpfile.
* Contrairement à VB, VBA ne permet pas de faire des applications autonomes. Aussi, je ne vois pas vraiment l'utilité de ces deux derniers arguments pour VBA. J'ignore même s'ils sont pleinement utilisables dans ce langage.
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
Affiche le bouton OK uniquement.
vbOKCancel 1
Affiche les boutons OK Annuler
vbAbortRetryIgnore 2
Affiche les boutons Abandonner Recommencer Ignorer
vbYesNoCancel 3
Affiche les boutons Oui Non Annuler
vbYesNo 4
Affiche les boutons Oui Non
vbRetryCancel 5
Affiche les boutons Recommencer Annuler
vbCritical 16
Affiche l'icône Message critique
vbQuestion 32
Affiche l'icône Question
vbExclamation 48
Affiche l'icône Point d'exclamation
vbInformation 64
Affiche l'icône Information
vbDefaultButton1 0
Le premier bouton est le bouton par défaut.
vbDefaultButton2 256
Le deuxième bouton est le bouton par défaut.
vbDefaultButton3 512
Le troisième bouton est le bouton par défaut.
vbDefaultButton4 768
Le quatrième bouton est le bouton par défaut.
vbApplicationModal 0
Boîte de dialogue modale. L'utilisateur doit répondre au message affiché dans la zone de message avant de pouvoir continuer de travailler dans l'application en cours.
vbSystemModal 4096
Modal système. Toutes les applications sont interrompues jusqu'à ce que l'utilisateur réponde au message affiché dans la zone de message.
vbMsgBoxHelpButton 16384
Ajoute le bouton Aide à la zone de message.
VbMsgBoxSetForeground 65536
Indique la fenêtre de zone de message comme fenêtre de premier plan.
vbMsgBoxRight 524288
Le texte est aligné à droite.
vbMsgBoxRtlReading 1048576
Indique que le texte doit apparaître de droite à gauche sur les systèmes hébraïques et arabes.
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.
OK
1 vbOK
Annuler
2 vbCancel
Abandonner
3 vbAbort
Recommencer
4 vbRetry
Ignorer
5 vbIgnore
Oui
6 vbYes
Non
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 Annuler. Il n'existe donc pas de valeur de retour nulle.
Si la boîte de dialogue est dotée d'un bouton Annuler, appuyer sur Échap équivaut à cliquer sur Annuler.
Pour toutes vos questions ou si vous rencontrez des difficultés, n'hésitez pas à rejoindre nos Forums de Discussions !
Tags Fonction VBA Bouton MsgBox Méthode
Articles du même auteur Voir cet article au format PDF Imprimer cet article
Autres articles dans cette catégorie Publié le Vues
VBA et les variables 09-02-2008 35590
Utilisation des MsgBox 03-11-2007 64938
Tutoriels n° 04 : Associer la macro à un bouton de la barre d'outils Formulaires ou à un objet Dessin 11-06-2006 8276
Tutoriels n° 03 : Et si nous pouvions lancer cette procédure à l'aide d'un bouton ? 11-06-2006 8734
Tutoriels n° 02 : A quoi ressemble le code généré par l'enregistreur et comment y accéder ? 10-06-2006 7186
Tutoriels n° 01 : Comment utiliser l'enregistreur de macro et réaliser votre première procédure VBA ? 06-06-2006 12149
Débuter avec VBA 06-06-2006 23889
Inscription à :
Publier les commentaires (Atom)
Aucun commentaire:
Enregistrer un commentaire