• 6 heures
  • Facile

Ce cours est visible gratuitement en ligne.

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 04/11/2024

Interagissez avec les utilisateurs via des formulaires

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 :

Exemple de messagebox dans Excel
Exemple de messagebox dans Excel

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 :

Exemple de messagebox avec un choix (oui ou non)
Exemple de messagebox avec un choix (oui ou non)

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
Exemple de messagebox avec l’événement beforesave
Exemple de messagebox avec l’événement beforesave

Et voici l’état de la variable :

Exemple de récupération du choix de l’utilisateur dans le messagebox
Exemple de récupération du choix de l’utilisateur dans le messagebox

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

Exemple d’inputbox dans Excel
Exemple d’InputBox dans Excel

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 :

Exemple de formulaire
Exemple de formulaire

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 encore  GetSaveAsFileName  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 🙂 !

Exemple de certificat de réussite
Exemple de certificat de réussite