Fonction MsgBox: Afficher une alerte ou une boite de dialogue en VBA

Bloqué sur Excel?
Obtenez rapidement une réponse personnalisée en posant votre problème sur le forum: forum.formuleexcel.com
C'est gratuit!

Nous allons parler d’une des applications très courantes de VBA: afficher un message d’alerte ou une boite de dialogue proposant un choix à l’utilisateur, tout ceci avec la fonction MsgBox en VBA.

Afficher un message d’alerte

Utilisation la plus simple de MsgBox est la suivante:

MsgBox(mon message d’alerte)

Votre message peut être du texte:

MsgBox ("Attention il y a une erreur!")

msgbox d'erreur en VBA

Vous pouvez également faire appel à n’importe quelle variable VBA, y compris aux valeurs des cellules du classeur:

i = 2
MsgBox ("La variable i est égale à " & Str(i) & " et la cellule C6 contient: " & Range("C6").Value)

message d'alerte en VBA

Vous pouvez utiliser ce type d’alerte pour indiquer une erreur à l’utilisateur du fichier et lui donner une indication quant à la raison de l’erreur, ou encore que tout s’est bien passé.

Afficher une boite de dialogue avec Msgbox

L’application que nous venons de voir précédemment ne laisse pas vraiment le choix à l’utilisateur: il peut juste cliquer sur OK… Nous allons voir comment laisser plusieurs choix de réponses à l’utilisateur et à effectuer un programme différent selon chaque cas.

Tout d’abord, puisque nous demandons son avis à l’utilisateur, il nous faudra stocker cet avis dans une variable. On utilise donc une syntaxe du type:

Réponse = MsgBox(Mon message, style de boutons, Titre)

Les arguments utilisés sont utilisés de la manière suivante:

  • Le message: De la même manière qu’au premier exemple, il s’agit du message affiché pour l’utilisateur.
  • Style de boutons: Il est possible d’afficher plusieurs types de boutons en bas de la boite de dialogue. Par défaut, comme au premier exemple, le seul bouton est OK, mais les boutons Abandonner, Réessayer, Ignorer, Oui, Non et Annuler sont disponibles. Concrètement, il faudra utiliser les valeurs suivantes:
    vbOKOnly Seulement le bouton OK
    vbOKCancel Boutons OK et Annuler.
    vbAbortRetryIgnore Boutons Abandonner, Réessayer et Ignorer.
    vbYesNoCancel Boutons Oui, Non et Annuler.
    vbYesNo Boutons Oui et Non.
    vbRetryCancel Boutons Réessayer et Annuler.
  • Le titre: Il s’agit du titre que vous pouvez spécifier en haut de la MsgBox.
  • La réponse: Il s’agira d’un entier indiquant sur quel bouton l’utilisateur vient de cliquer:
    OK 1
    Annuler 2
    Abandonner 3
    Réessayer 4
    Ignorer 5
    Oui 6
    Non 7

 Exemple de boites de dialogue

Cet exemple de macro VBA permet de choisir entre 3 options Oui, Non et Annuler, et selon le message, renvoie une seconde boite d’alerte différente dans chaque cas.

Sub alerte()
Message = "Voulez vous commencer un nouveau projet?"
Style = vbYesNoCancel
Titre = "Démarrer"
reponse = MsgBox(Message, Style, Titre)
If reponse = 6 Then 
MsgBox ("Nouveau projet")
ElseIf reponse = 7 Then
MsgBox ("On reste dans le projet actuel")
ElseIf reponse = 2 Then 
MsgBox ("Opération anulée") 
End If 
End Sub

Msgbox avec plusieurs choix