Les boîtes de dialogue (boîtes de dialogue) dans Excel VBA sont utilisées pour afficher des informations à l'utilisateur.
La fonction MsgBox affiche un message dans une boîte de dialogue et attend que l'utilisateur clique sur un bouton, puis renvoie un entier indiquant sur quel bouton l'utilisateur a cliqué.
La boîte de dialogue la plus courante est la boîte de message, mais nous pouvons également utiliser la zone de saisie.
Jusqu'à présent, nous utilisions la boîte de dialogue MsgBox pour afficher des informations à l'écran.
Sub delete_B2()
Range("B2").ClearContents
MsgBox "The contents of B2 have been deleted !" '"Le contenu de la cellule B2 a été supprimé !"
End Sub
Dans ce cas, MsgBox est appelé avec un seul argument. Voir code ci-dessous :
Nous allons maintenant créer une boîte de dialogue qui demandera une confirmation de suppression avant l'exécution des deux instructions. Ensuite, nous utiliserons trois arguments :
MsgBox([TEXT], [BUTTONS], [TITLE])
Sub delete_B2()
If MsgBox("Are you sure that you wish to delete the contents of B2 ?", vbYesNo, "Confirm") = vbYes
Then
Range("B2").ClearContents
MsgBox "The contents of B2 have been deleted !"
End If
End Sub
Résultat:
Private Sub warning(var_text As String)
MsgBox "Caution : " & var_text & " !"
End Sub
Sub macro_test()
If Range("A1") = "" Then
warning "empty cell" '"cellule vide"
ElseIf Not IsNumeric(Range("A1")) Then
warning "non-numerical value" '"valeur non numérique"
End If
End Sub
vbYesNo précise que les boutons de dialogue sont "Yes" et "No", et vbYes représente le bouton "Yes" :
If MsgBox("Text", vbYesNo, "Title") = vbYes Then 'Si le bouton Yes est enfoncé...
| Constante | Valeur numérique | Description |
|---|---|---|
| vbOKOnly | 0 | ![]() |
| vbOKCancel | 1 | ![]() ![]() |
| vbAbortRetryIgnore | 2 | ![]() ![]() ![]() |
| vbYesNoCancel | 3 | ![]() ![]() ![]() |
| vbYesNo | 4 | ![]() ![]() |
| vbRetryCancel | 5 | ![]() ![]() |
| vbCritical | 16 | ![]() |
| vbQuestion | 32 | ![]() |
| vbExclamation | 48 | ![]() |
| vbInformation | 64 | ![]() |
Voici un exemple MsgBox qui continuera à s'afficher à chaque fois dans la boucle jusqu'à ce que l'utilisateur appuie sur Yes :
Sub humor()
Do
If MsgBox("Do you like the Moonexcel site ?", vbYesNo, "Survey") = vbYes Then
Exit Do '=> Réponse Yes = Oui, on sort de la boucle
End If
Loop While 1 = 1 '=> Boucle sans fin
MsgBox ";-)"
End Sub
Pour afficher un nouveau ruban, vous pouvez utiliser la fonction Chr avec l'argument 10, qui se charge du déplacement du ruban, par exemple :
MsgBox "Example 1" & Chr(10) & "Example 2" & Chr(10) & Chr(10) & "Example 3"
On obtient le résultat suivant :
Un InputBox invite l'utilisateur à saisir une valeur dans une boîte de dialogue, par exemple :
Sub example()
Dim result As String
result = InputBox("Text ?", "Title") 'La variable reçoit la valeur saisie dans l'InputBox
If result <> "" Then 'Si la valeur est autre que "", alors le résultat sera affiché
MsgBox result
End If
End Sub
On obtient le résultat suivant :
Le troisième argument peut être utilisé pour définir la valeur par défaut :
InputBox("Text ?", "Title", "Default value")
Le résultat est le suivant :