VBA – Zones de Liste Déroulante
In this Article
- Créer une Zone de Liste Déroulante dans une Feuille de Calcul Excel
- Remplir une Liste Déroulante en Code VBA
- Remplir une Liste Déroulante à Partir d’une Plage de Cellules
- Obtenir l’Élément Sélectionné dans une Liste Déroulante en VBA
- Effacer une Liste Déroulante
- Utiliser une Liste Déroulante dans un Formulaire VBA
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 :
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.