Excel VBA : MsgBox et InputBox, exemples et boutons Oui/Non

Par GeekRadin
Excel VBA : MsgBox et InputBox, exemples et boutons Oui/Non

Dans Excel VBA, MsgBox affiche un message ou propose des boutons. InputBox permet de saisir une valeur. Chercher une « message box input » mélange donc deux outils. Pour demander Oui ou Non, utilise MsgBox ; pour recueillir du texte ou un nombre, choisis la boîte de saisie adaptée.

Les exemples ci-dessous sont volontairement courts et n’effacent aucune donnée. Utilise Excel de bureau, une copie de classeur et des macros que tu comprends. Excel pour le Web ne permet pas d’exécuter ces macros VBA. (1)

Préparer un classeur sans modifier l’original

  1. Crée une copie du classeur et enregistre-la au format .xlsm si tu veux conserver les macros.
  2. Ouvre l’éditeur Visual Basic depuis l’onglet Développeur. Sous Windows, le raccourci habituel est Alt + F11.
  3. Dans le projet de cette copie, insère un module standard.
  4. Colle un seul exemple, place le curseur dans sa procédure et lance-le.

Un fichier reçu d’un inconnu ne doit pas être autorisé à exécuter du code uniquement pour afficher une boîte de dialogue. Si les macros sont bloquées par ton organisation, respecte sa politique et demande quelle solution est admise.

Afficher un message avec MsgBox

Option Explicit

Sub AfficherMessage()
    MsgBox "Le contrôle est terminé.", vbInformation, "Vérification"
End Sub

Le premier argument contient le texte, le deuxième le style des boutons et de l’icône, et le troisième le titre. La documentation Microsoft décrit également la valeur renvoyée lorsqu’un bouton est choisi. (2)

Ici, la réponse n’est pas utilisée. On écrit donc l’appel sans parenthèses autour de la liste d’arguments. Quand on récupère le résultat dans une variable, les parenthèses entourent les arguments de la fonction, comme dans l’exemple suivant.

Proposer Oui ou Non, avec Non par défaut

Sub DemanderConfirmation()
    Dim reponse As VbMsgBoxResult

    reponse = MsgBox("Continuer la vérification ?", _
        vbYesNo + vbQuestion + vbDefaultButton2, "Confirmation")

    If reponse = vbYes Then
        MsgBox "Vérification autorisée.", vbInformation
    Else
        MsgBox "Aucune action effectuée.", vbInformation
    End If
End Sub

La macro compare le bouton cliqué à vbYes. Elle ne compare pas le texte « Oui » affiché dans la fenêtre : les constantes restent utilisables indépendamment de la langue de l’interface. Le deuxième bouton est sélectionné par défaut, ce qui évite de valider Oui avec une pression trop rapide sur Entrée.

Les constantes utiles pour un choix explicite
Boutons proposés Résultats à traiter
vbOKCancel vbOK ou vbCancel
vbYesNo vbYes ou vbNo
vbYesNoCancel vbYes, vbNo ou vbCancel

Si tu ajoutes Annuler, prévois son traitement. Une branche « sinon » qui lance une opération pour toutes les réponses autres que Oui peut produire l’inverse de ce que le lecteur attend.

Demander du texte avec Application.InputBox

La fonction VBA InputBox renvoie une chaîne, avec une chaîne vide quand on annule. Pour distinguer une annulation d’une saisie vide validée, Excel propose Application.InputBox : Annuler renvoie le booléen False, et Type:=2 demande du texte. (3)

Sub DemanderTexte()
    Dim saisie As Variant

    saisie = Application.InputBox( _
        Prompt:="Quel libellé utiliser ?", _
        Title:="Saisie", Type:=2)

    If VarType(saisie) = vbBoolean Then
        If saisie = False Then Exit Sub
    End If

    If Len(Trim$(CStr(saisie))) = 0 Then
        MsgBox "Le libellé est vide.", vbExclamation
        Exit Sub
    End If

    MsgBox "Libellé retenu : " & CStr(saisie), vbInformation
End Sub

La variable est un Variant pour pouvoir contenir le texte ou le booléen d’annulation. Le contrôle du type intervient avant celui de la valeur. Évite de remplacer ce bloc par un test unique qui assimile le texte « False » ou une valeur convertible à l’annulation.

Pour un nombre, Type:=1 correspond au type numérique. Pour une plage, Type:=8 correspond à une sélection de cellules, avec une gestion d’objet et d’annulation adaptée. (3) Ne réutilise pas automatiquement la macro de texte pour ces autres besoins.

Les erreurs que tu peux corriger sans tout réécrire

Une erreur de syntaxe sur MsgBox
Vérifie les guillemets droits, les virgules et la différence entre un appel seul et une affectation à une variable.
La macro disparaît après sauvegarde
Contrôle le format du fichier : un classeur .xlsx ne conserve pas le projet VBA.
La fenêtre revient sans arrêt
Examine la boucle ou l’événement qui rappelle la macro. Une boîte de dialogue ne corrige pas à elle seule la condition qui déclenche le code.
Un bouton Annuler lance quand même la suite
Ajoute une sortie explicite avant l’opération, selon le type de boîte utilisé.

Quand une boîte sans VBA suffit

Si tu veux seulement aider la saisie d’une cellule, la validation des données peut afficher un message et contrôler les valeurs admises. Elle évite de créer une macro pour une règle simple ; elle ne contourne pas une interdiction d’entreprise. Pour des conditions calculées, notre guide sur la fonction SI avec plusieurs conditions est une autre piste.

Une fenêtre personnalisée avec plusieurs champs relève plutôt d’un UserForm. Ne multiplie pas les InputBox successives quand une vraie interface permettrait de voir toutes les informations avant validation.

Teste les réponses Oui, Non, Annuler et la saisie vide sur ta copie. Puis seulement, rattache la confirmation à ton opération réelle. La boîte doit protéger une action définie, pas donner l’impression que le code est sûr parce qu’il affiche un avertissement.

Afficher les sourcesMasquer les sources

Sources

(1) Microsoft — Work with VBA macros in Excel for the web. https://support.microsoft.com/en-us/excel/work-with-vba-macros-in-excel-for-the-web

(2) Microsoft Learn — MsgBox function. https://learn.microsoft.com/en-us/office/vba/language/reference/user-interface-help/msgbox-function

(3) Microsoft Learn — Application.InputBox method. https://learn.microsoft.com/en-us/office/vba/api/excel.application.inputbox

Dernière mise à jour de l’article le 12 octobre 2026

Rate this post

Partager cet article