Nous avons vu ensemble, tout au long de cette partie un peu dense, les différents variables, opérateurs, boucles et fonctions. Il nous reste à voir une dernière partie importante : comment interagir avec les utilisateurs ?
Nous voici dans le dernier chapitre de la partie 2. C’est un chapitre qui va être plus visuel, car vous allez voir les boîtes de dialogue et les formulaires.
Interagissez avec Excel en créant votre boîte de dialogue
Depuis le début de ce cours, vous avez déjà utilisé des boîtes de dialogue sans vraiment les nommer.
Vous avez au début de ce chapitre utilisé les msgbox. C’est la boîte de dialogue la plus simple pour Excel.
Le code est très simple. C’est seulement :
Sub premier_message()
msgbox ("Hello World")
End Sub
Quand vous exécutez ce code, vous obtenez une petite fenêtre qui vous dit :
Ah oui je me rappelle, nous avions utilisé la msgbox pour donner à l’utilisateur son département de rattachement.
Effectivement, c’était bien cela ! C’est une version simple des différentes interactions que nous allons voir avec les utilisateurs.
Vous pouvez customiser un peu ce bouton pour qu’il soit plus sympa pour l’utilisateur. Vous pouvez rajouter par exemple le bouton Annuler :
Sub deuxieme_message()
msgbox "Souhaitez-vous confirmer la fermeture de l'onglet ?", vbYesNo + vbQuestion
End Sub
Dans cette deuxième version, j’ai rajouté vbYesNo
qui permet d’afficher les boutons Oui et Non, ainsi que l'icône vbQuestion
qui vous permet d’avoir un point d'interrogation :
Voici les principales personnalisations rapides que vous pouvez faire :
Bouton :
vbOKOnly => bouton OK
vbOKCancel => boutons OK et Annuler
vbAbordRetryIgnore => boutons Abandonner, Répéter et Ignorer
vbYesNoCancel => boutons Oui, Non et Annuler
vbYesNo => boutons Oui et Non
Icône :
vbCritical => icône Interdit
vbQuestion=> icône Question
vbExclamation => icône Exclamation
vbInformation => icône Information
Cette boîte de dialogue peut vous renvoyer également le bouton que l’utilisateur a choisi :
1 : OK
2 : Annuler
3 : Abandonner
4 : Répéter
5 : Ignorer
6 : Oui
7 : Non
Voici le code pour récupérer la réponse de l’utilisateur avec une variable :
Sub deuxieme_message()
msgbox "Souhaitez-vous confirmer la fermeture de l'onglet ?", vbYesNo + vbQuestion
End Sub
Et voici l’état de la variable :
Vous pouvez également demander des informations à l’utilisateur en ouvrant une InputBox
et en lui demandant de saisir une information.
Allez par exemple demander à l’utilisateur de saisir lui-même son département de naissance :
Sub demande_utilisateur()
Dim departement As Integer
departement = InputBox("Quel est votre département de naissance ?", "demande du département", 0)
End Sub
La première partie de l’ InputBox
permet de poser la question à l’utilisateur, puis ensuite de saisir le titre de cette fenêtre. La dernière partie permet de saisir une valeur par défaut. Nous stockons cette information dans une variable, puis vous pouvez maintenant l’utiliser dans la suite de votre programme.
Utilisez les boîtes de dialogue Excel
Certaines boîtes de dialogue sont propres à Excel. C’est le cas des deux boîtes de dialogue que vous allez voir maintenant.
La première s’appelle GetOpenFileName
, et elle permet quand vous l’utilisez d’ouvrir une fenêtre pour choisir le fichier à ouvrir.
L’utilisation est très simple :
Sub ouverture_fichier()
Application.GetOpenFilename Title:="Sélectionner le fichier à ouvrir pour la mise à jour"
End Sub
Ce code va ouvrir la fenêtre qui permet d’ouvrir de nouveaux fichiers Excel. J’ai ici personnalisé le texte de cette fenêtre.
La deuxième s’appelle GetSaveAsFileName
. Vous l’avez peut-être deviné : elle permet d’ouvrir la fenêtre “Enregistrer sous” d’Excel. Elle fonctionne exactement de la même manière.
Est-ce qu’il y a aussi une boîte de dialogue pour imprimer ?
Non effectivement, il n’existe pas de boîte de dialogue toute faite pour imprimer une page. Cependant, comme d’habitude en VBA, il y a une solution à tout !
Vous pouvez utiliser une ligne de code pour choisir l’imprimante et une deuxième qui lance l’impression (ou qui vous demande où il faut enregistrer le fichier si c’est une impression PDF).
Voici le code :
Sub Impression() Application.Dialogs(xlDialogPrinterSetup).Show ActiveSheet.PrintOut Copies:=1, Collate:=True, _ IgnorePrintAreas:=False End Sub
Utilisez les formulaires
Pour finir ce chapitre, nous allons voir ensemble les formulaires. C’est un outil puissant mais assez compliqué. Nous n’allons pas pouvoir faire un exemple très compliqué dans cette partie. L’idée est plutôt que vous puissiez vous rendre compte de la grande capacité des formulaires en VBA.
Jusqu’à maintenant vous avez vu des fenêtres ou des boîtes de dialogue propres à Microsoft. Les formulaires vous permettent de créer vous-même de nouvelles boîtes de dialogue en insérant différents objets.
Pour commencer, vous allez ajouter un userform
. C’est une feuille spéciale qui permet de fabriquer votre boîte de dialogue. Pour cela, il faut aller dans "Insertion" puis "UserForm".
Vous avez maintenant une fenêtre vide que vous allez pouvoir paramétrer en ajoutant différents contrôles, comme :
du texte ;
des listes ;
des cases à cocher ;
des boutons d’options ;
des boutons bascules ;
des onglets ;
des barres de défilement ;
etc.
Voici un petit formulaire qui permet de demander à l’utilisateur de choisir dans une liste son département de naissance :
Voici le code associé au bouton OK :
Private Sub Bouton_OK_Click()
Dim choix_departement As String
choix_departement = ComboBox1.Value
Unload Me
Association_region_formulaire (choix_departement)
End Sub
Je déclare une variable choix_departement
qui vous permet de récupérer la valeur de la combobox1
en utilisant le .value
.
Le code Unload
me permet de fermer le userform
, puis j’appelle un sous-programme que nous avons vu au début de ce chapitre. Il va vous renvoyer avec une msgbox l’agence à laquelle vous vous êtes rattaché.
Sub Association_region_formulaire(departement_naissance As Integer)
Select Case departement_naissance
Concernant le bouton Annuler, j’ai simplement utilisé une msgbox qui dit à l’utilisateur qu’il a abandonné la procédure.
Enfin, concernant la liste, j’ai seulement passé la liste des départements que j’ai stockés dans une feuille Excel en utilisant les propriétés de la combobox.
Quand vous cliquez sur la combobox, sur la gauche du VBE vous avez toute la liste des propriétés. C’est assez large, cela va du nom et de la valeur du bouton, en passant par la couleur et les bordures, etc.
Pour la combobox, vous avez également une propriété qui est RowSource
. De mon côté, j’ai chargé pour la plage de cellules “Feuil1!A2:A46”.
Une fois que vous avez fini le paramétrage, vous pouvez, quand vous êtes sur le userform
, utiliser le bouton “Play” pour tester le userform.
À vous de jouer !
Vous avez proposé à votre directeur une ultime évolution en utilisant un petit userform
et des boîtes de dialogue.
Ainsi, vous avez proposé à votre directeur de simplifier une dernière fois son travail en lançant un userform
à l’ouverture du fichier, qui va contenir différents boutons pour exécuter des actions sur le fichier :
un bouton pour lancer la macro de mise à jour (en n’oubliant pas de vérifier si l’onglet n’est pas déjà présent ; si c’est le cas, on l’indique à l’utilisateur et on lui demande s’il souhaite :
fermer le fichier,
rester sur le fichier sans lancer la macro) ;
ajout d’un paramétrage du seuil pour la couleur dans le formulaire (l’utilisateur rentre la valeur du seuil) ;
un bouton qui permet d’ouvrir la fenêtre Enregistrer sous, puis qui demande si vous souhaitez quitter le fichier Excel (si oui, on ferme Excel, sinon on le laisse ouvert).
Cette ultime étape permettra à votre chef d’avoir une mini-interface d’administration.
En résumé
La boîte de dialogue msgbox permet d'interagir avec l’utilisateur en lui donnant des informations.
Changez les paramètres (icône, message, boutons) des msgbox en fonction de ce que vous souhaitez dire à l’utilisateur.
Utilisez l’
InputBox
pour récupérer des informations saisies au clavier par l’utilisateur.Certaines boîtes de dialogue comme
GetOpenFileName
ou encoreGetSaveAsFileName
sont déjà paramétrées par Excel.Les formulaires permettent d’offrir une grande latitude dans la manière de communiquer avec les utilisateurs au travers des
userforms
.
Nous avons fini cette deuxième partie consacrée aux variables, opérateurs, fonctions, sous-programmes et formulaires.
Je vous invite à clôturer maintenant ce chapitre avec le quiz. Bonne chance 🙂 !