VBA – Zones de Liste Déroulante

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

David Gagnon

Last updated on décembre 23, 2021

Les Zones de Liste Déroulantes (ComboBox en anglais) permettent aux utilisateurs de sélectionner une option dans une liste de menus déroulants. Les zones de liste déroulantes peuvent être créées dans des Formulaires (« UserForm ») VBA ou dans une feuille de calcul Excel. Dans ce tutoriel, vous apprendrez à créer et à manipuler des listes déroulantes en VBA et dans des feuilles de calcul Excel.

Si vous voulez apprendre à créer une Listbox, cliquez ici : Boîte de liste VBA

Si vous voulez apprendre à créer une case à cocher, cliquez ici : Case à cocher VBA

Créer une Zone de Liste Déroulante dans une Feuille de Calcul Excel

Pour insérer une liste déroulante dans la feuille de calcul, vous devez aller dans l’onglet Développeur, cliquer sur Insert et sous ActiveX Controls choisir Zone de Liste Déroulante :

Image 1. Insertion d’une liste déroulante dans la feuille de calcul

Lorsque vous sélectionnez la liste déroulante que vous avez insérée, vous pouvez cliquer sur Propriétés sous l’onglet Développeur:

Image 2. Modifier les propriétés de la liste déroulante

Ici, vous pouvez définir différentes propriétés de la liste déroulante. Pour commencer, nous avons changé l’attribut Name en cmbComboBox. Maintenant, nous pouvons utiliser la liste déroulante avec ce nom dans le code VBA.

Remplir une Liste Déroulante en Code VBA

Tout d’abord, nous devons remplir la liste déroulante avec des valeurs. Dans la plupart des cas, une liste déroulante doit être remplie à l’ouverture du classeur. Pour cette raison, nous devons placer un code pour remplir la liste déroulante dans l’objet Workbook, procédure Open. Cette procédure est exécutée chaque fois que l’utilisateur ouvre le classeur. Voici le code :

With Feuil1.cmbComboBox

    .AddItem "Jonathan"
    .AddItem "Michel"
    .AddItem "Jennifer"
    .AddItem "Lilly"
    .AddItem "Robert"

End With

Lorsque vous cliquez sur le menu déroulant, vous pouvez choisir parmi 5 noms (Jonathan, Michel, Jennifer, Lilly et Robert) :

Image 3. Remplir la liste déroulante en VBA

Remplir une Liste Déroulante à Partir d’une Plage de Cellules

Une autre façon de remplir une liste déroulante est de laisser un utilisateur le faire. Une liste déroulante peut être liée à une plage de cellules. Dans cette approche, chaque fois qu’un utilisateur saisit une nouvelle valeur dans la plage de cellules, la liste déroulante est mise à jour avec cette valeur.

Pour activer cette fonction, il faut aller dans les propriétés de la liste déroulante et définir l’attribut ListFillRange sur la plage de cellules (dans notre cas E2:E5) :

Image 4. Remplir la liste déroulante à partir de la plage de cellules

 

Nous avons lié notre liste déroulante avec la plage E2:E5, où nous mettons les noms que nous voulons (Robert, Noémie, Georges, Mathieu). En conséquence, la liste déroulante est maintenant remplie de ces noms :

Image 5. Remplissage de la liste déroulante à partir d’une plage de cellules

Obtenir l’Élément Sélectionné dans une Liste Déroulante en VBA

Le but d’une liste déroulante est d’obtenir le choix d’un utilisateur. Afin de récupérer le choix de l’utilisateur, vous devez utiliser ce code :

Dim strItemSélectionné As Variant

strItemSélectionné = Feuil1.cmbComboBox.Value

Le choix de l’utilisateur se trouve dans l’attribut Value de l’objet Feuil1.cmbComboBox. Cette valeur est affectée à la variable strSelectedItem:

Image 6. Obtenir une valeur sélectionnée dans la liste déroulante en VBA

Nous avons sélectionné Noémie dans la liste déroulante et exécuté la procédure. Comme vous pouvez le voir dans l’image 5, la valeur de la variable strItemSélectionné est Noémie, qui est la valeur que nous avons sélectionnée. Maintenant vous pouvez traiter cette variable plus loin dans le code.

Effacer une Liste Déroulante

Si vous souhaitez effacer une liste déroulante en VBA, vous devez utiliser la méthode Clear de l’objet Feuil1.cmbComboBox. Cela supprimera tous les éléments de la liste déroulante. Voici le code :

Feuil1.cmbComboBox.Clear

Lorsque nous exécutons le code, nous obtenons une liste déroulante vide :

vba-clear-combobox

Image 7. Effacer la liste déroulante

 

Utiliser une Liste Déroulante dans un Formulaire VBA

Comme nous l’avons mentionné, la liste déroulante est le plus souvent utilisée dans les formulaires VBA. Pour expliquer comment procéder, nous allons d’abord insérer un formulaire utilisateur. Dans l’éditeur VBA, cliquez avec le bouton droit de la souris sur le nom du module, cliquez sur Insérer et choisissez UserForm:

Image 8. Insérer un formulaire utilisateur

Pour afficher les commandes d’insertion, vous devez activer la boîte à outils. Pour ce faire, cliquez sur l’icône Boîte à outils dans la barre d’outils. Après cela, vous obtiendrez les fenêtres avec tous les contrôles disponibles. Vous pouvez cliquer sur ComboBox pour la créer dans le formulaire utilisateur.

Image 9. Insérer une liste déroulante dans le Userform

Nous allons nommer la liste déroulante cmbComboBox. Afin de la remplir de valeurs, nous devons placer le code suivant dans la méthode Initialize de l’objet UserForm:

Private Sub UserForm_Initialize()

    With UserForm1.cmbComboBox

        .AddItem "Jonathan"
        .AddItem "Michel"
        .AddItem "Jennifer"
        .AddItem "Lilly"
        .AddItem "Robert"

    End With

End Sub

Ce code se déclenche chaque fois qu’un utilisateur exécute le formulaire d’utilisateur et remplit la zone de liste déroulante avec ces 5 noms :

Image 10. La liste déroulante avec les valeurs dans le Userform

Si vous souhaitez obtenir la valeur sélectionnée à partir de la liste déroulante, vous devez utiliser la même logique pour la liste déroulante dans une feuille de calcul, qui est expliquée plus haut dans l’article.

vba-free-addin

Module Complémentaire d'Exemples de Code VBA

Accédez facilement à tous les exemples disponibles sur le site.

Naviguez simplement dans le menu, cliquez, et le code sera inséré directement dans votre module. Module complémentaire .xlam.

(Aucune installation requise!)

Téléchargement gratuit

Retour aux exemples de code VBA