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 :