Médiaforma

VBA Excel – Messages

Print Friendly, PDF & Email

Lorsqu’on commence à écrire du code VBA, il est fréquent de vouloir afficher des données textuelles ou numériques dans une boîte de message. La méthode MsgBox() est là pour ça. Comme vous le verrez dans cet article, vous pouvez également utiliser MsgBox() en tant que fonction pour poser une question à l’utilisateur. En fonction de son choix, vous pourrez alors exécuter un bloc d’instructions ou un autre.

La méthode MsgBox()

Pour afficher une boîte de message, vous utiliserez MsgBox() en tant que méthode. Voici quelques exemples de code :

Affichage d’un message texte

MsgBox "Un message texte"

Affichage du contenu d’une cellule avec la fonction Cells()

MsgBox Cells(1, 2)

 

Affichage du contenu d’une cellule avec la fonction Range()

MsgBox Range("B2")

 

Affichage d’un texte et de la valeur d’une variable

Remarquez qu’ici, la variable est numérique, et que VBA accepte qu’on la concatène à une chaîne avec l’opérateur de concaténation « & » :

Dim n as Integer

n = 12

MsgBox "n vaut " & n

Affichage d’un texte sur plusieurs lignes

Le passage à la ligne se fait grâce au caractère Chr(10) ou à la constante vbLf. Remarquez également le caractère de soulignement (_) en fin de ligne qui permet de répartir l’instruction sur plusieurs lignes pour améliorer sa lisibilité :

MsgBox "Un message sur plusieurs lignes." & Chr(10) & _

       "Le passage à la ligne se fait avec un Chr(10)" & vbLf & _

       "ou avec la constante vbLf"

Définition du titre de la MsgBox()

Pour modifier le texte qui apparait dans la barre de titre d’une MsgBox(), vous devez passer trois paramètres à la fonction. Voici un exemple :

MsgBox "Texte dans la MsgBox()", , "Titre de la MsgBox()"

Ici, le deuxième paramètre est vide, ce qui provoque l’affichage d’une boîte de dialogue standard. Vous pourriez également utiliser les constantes suivantes :

Constante Effet
vbCritical
vbQuestion
vbExclamation
vbInformation

Voici un exemple :

MsgBox "Texte dans la MsgBox()", vbExclamation, "Titre de la MsgBox()"

La fonction MsgBox()

MsgBox() peut également être utilisé en tant que fonction. Dans ce cas, le deuxième argument indique le nombre et la nature des boutons affichés dans la boîte de dialogue :

Constante Effet
vbOKOnly
vbOKCancel
vbAbortRetryIgnore
vbYesNoCancel
vbYesNo
vbRetryCancel

 

Lorsqu’une boîte MsgBox() comporte plusieurs boutons, vous pouvez choisir celui qui est actif par défaut. L’utilisateur pourra appuyer sur la touche Entrée du clavier pour simuler un clic sur ce bouton. Pour cela, vous utiliserez les constantes du tableau suivant :

Constante Effet
vbDefaultButton1 Bouton 1 par défaut
vbDefaultButton2 Bouton 2 par défaut
vbDefaultButton3 Bouton 3 par défaut

 

Vous pouvez également utiliser les constantes vbCritical, vbQuestion, vbExclamation et vbInformation pour ajouter une icône dans la boîte de dialogue.

Mais alors, si vous choisissez (par exemple) les boutons de la boîte de dialogue, comment indiquer en plus quel bouton sera utilisé par défaut et quelle icône vous voulez utiliser ? Eh bien tout simplement en additionnant les constantes correspondantes.

Par exemple, pour afficher une boîte de dialogue qui :

  • affiche le texte « Voulez-vous continuer » ;
  • contient les boutons Oui (sélectionné par défaut) et Non ;
  • affiche une icône vbQuestion.

Vous utiliserez ces instructions :

MsgBox("Voulez-vous continuer ?", vbYesNo + vbDefaultButton1 + vbQuestion, "Important")

Mais attention : ici, MsgBox() est utilisé en tant que fonction et non en tant que méthode. Elle retourne donc une valeur qui doit être affectée à une variable ou directement testée. Les valeurs retournées par la fonction MsgBox() peuvent être les suivantes :

Valeur retournée Signification
vbOK Bouton OK cliqué
vbCancel Bouton Annuler cliqué
vbAbort Bouton Abandonner cliqué
vbRetry Bouton Recommencer cliqué
vbIgnore Bouton Ignorer cliqué
vbYes Bouton Oui cliqué
vbNo Bouton Non cliqué

Voici un exemple de code :

If MsgBox("Voulez-vous continuer ?", vbYesNo + vbDefaultButton1 + vbQuestion, "Important") = vbYes Then

    MsgBox ("OK, on continue")

Else

    MsgBox ("C'est d'accord, on s'arrête ")

End If

Voici le résultat :

Le bouton Oui est sélectionné par défaut. Si l’utilisateur appuie sur la touche Entrée du clavier ou clique sur le bouton Oui, une boîte de dialogue s’affiche :

S’il clique sur Non, une autre boîte de dialogue s’affiche :

La fonction InputBox()

Cet article ne serait pas complet si la fonction InputBox() n’était pas citée. Cette fonction demande à l’utilisateur de saisir une information textuelle ou numérique. Voici sa syntaxe :

InputBox ( message [, titre ] [, défaut ] [, xpos ] [, ypos ])

Où :

  • message représente le message à afficher dans la boîte de dialogue ;
  • titre représente le texte affiché dans la barre de titre (ce paramètre est optionnel) ;
  • défaut représente la valeur par défaut (ce paramètre est optionnel) ;
  • xpos et ypos représentent les coordonnées x et y de l’angle supérieur gauche de l’InputBox par rapport à l’angle supérieur gauche de l’écran (ces paramètres sont optionnels).

Voici un exemple de code :

Dim prenom As String

While Len(prenom) = 0

  prenom = InputBox("Quel est votre prénom", "J'ai besoin de savoir)

Wend

MsgBox "Bonjour " & prenom

Ici, une boucle While Wend répète autant de fois que nécessaire la saisie du prénom jusqu’à ce que l’utilisateur entre son prénom (c’est-à-dire une chaîne non vide).

Voici un exemple d’exécution :

Remarque

Si vous affectez le résultat de la fonction InputBox() à une variable numérique et que l’utilisateur saisit du texte, une erreur est générée et le programme prend fin, à moins que vous ne mettiez en place un gestionnaire d’erreurs, comme indiqué dans l’article Gestion d’erreurs en VBA.

Vous avez aimé cet article ? Partagez-le avec vos réseaux...
 
Comments

No comments yet.