VBA – Zone de Liste
In this Article
Ce tutoriel vous montrera comment travailler avec des zones de liste en utilisant VBA.
En VBA, vous pouvez créer une Zone de liste (« ListBox ») où un utilisateur peut choisir une des options listées. La zone de liste est souvent utilisée dans les formulaires d’utilisateur, mais peut également être utilisée dans une feuille de calcul. Dans ce tutoriel, vous apprendrez à créer, à remplir et à supprimer une zone de liste. Vous verrez également comment obtenir un choix de l’utilisateur en VBA et l’utiliser dans le code.
Noter qu’il existe également un contrôle nommé zone de liste déroulante, bien que les noms soient très similaires, ces contrôles sont deux types de contrôles distincts. Ce tutoriel traite du contrôle zone de liste seulement.
Si vous souhaitez apprendre à créer une zone de liste déroulante, aussi appelée « ComboBox », cliquez ici : ComboBox en VBA
Si vous voulez apprendre à créer une case à cocher, cliquez ici : Case à cocher VBA
Créer une Zone de Liste
Pour insérer une zone de liste dans la feuille de calcul, il faut aller dans l’Onglet Développeur du rubban, cliquez sur Insertion et, sous Contrôles ActiveX, choisissez Zone de liste:
Image 1. Insertion d’une zone de liste dans la feuille de calcul
Lorsque vous sélectionnez la zone de liste 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 zone de liste
Ici, vous pouvez définir différentes propriétés de la zone de liste. Pour commencer, nous avons changé l’attribut Name en lstZoneListe. Maintenant, nous pouvons utiliser la zone de liste avec ce nom dans le code VBA.
Remplir une Zone de Liste en VBA
Tout d’abord, nous devons remplir la zone de liste avec des valeurs. Dans la plupart des cas, une zone de liste doit être remplie à l’ouverture du classeur. Pour cette raison, nous devons placer un code permettant de remplir la liste de valeurs dans l’objet Workbook, sous l’évènement Open. Cette procédure est exécutée chaque fois que l’utilisateur ouvre le classeur. Voici le code :
With Feuil1.lstZoneListe
.AddItem "John"
.AddItem "Michael
.AddItem "Jennifer
.AddItem "Lilly
.AddItem "Robert"
End With
Comme vous pouvez le voir dans l’image 3, nous avons rempli notre zone de liste avec 5 noms (John, Michael, Jennifer, Lilly et Robert) :
Image 3. Remplir la boîte de liste en VBA
Remplir une Zone de Liste à Partir d’une Plage de Cellules
Une autre façon de remplir une liste est de laisser un utilisateur le faire. Une liste peut être liée à une plage de cellules. Ainsi, chaque fois qu’un utilisateur saisit une nouvelle valeur dans la plage de cellules, la zone de liste est mise à jour avec cette valeur. Pour activer cette fonction, il faut aller dans les propriétés de la liste et définir l’attribut ListFillRange:
Image 4. Remplir la zone de liste à partir de la plage de cellules
Nous avons lié notre Listbox avec la plage E2:E5, où nous mettons les noms que nous voulons (Nathan, Harry, George, Roberta). En conséquence, la Listbox est maintenant remplie de ces noms.
Obtenir un Élément Sélectionné d’une Zone de Liste en VBA
Le but d’une zone de liste est d’obtenir le choix de l’utilisateur. Pour récupérer une valeur sélectionnée par un utilisateur, vous devez utiliser ce code :
Dim strÉlémentSélectionné As Variant
strÉlémentSélectionné = Feuil1.lstZoneListe.Value
La sélection de l’utilisateur se trouve dans l’attribut Value de l’objet Feuil1.lstZoneListe. Cette valeur est affectée à la variable strÉlémentSélectionné:
Image 5. Obtenir une valeur sélectionnée dans la zone de liste en VBA
Nous avons sélectionné Michael dans la zone de liste et exécuté la procédure. Comme vous pouvez le voir dans l’Image 5, la valeur de la variable strÉlémentSélectionnée est Michael, ce qui correspond à la valeur que l’utilisateur a sélectionné. De plus, vous pouvez traiter cette variable dans la suite de votre code.
Effacer une Zone de Liste
Afin d’effacer le contenu d’une zone de liste en VBA, vous devez utiliser la méthode Clear de l’objet Feuil1.lstZoneListe. Cette méthode permet de supprimer tous les éléments de la zone de liste. Voici le code :
Feuil1.lstZoneListe.Clear
Lorsque nous exécutons le code, nous obtenons une listbox vide :
Image 6. Effacer la zone de liste
Utiliser une Zone de Liste dans un Formulaire Utilisateur
Comme nous l’avons mentionné, la zone de liste est le plus souvent utilisée dans les formulaires utilisateur. Pour expliquer comment procéder, nous allons d’abord insérer un formulaire. 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 7. 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 supérieure. Vous obtiendrez ensuite une fenêtre avec tous les contrôles disponibles. Vous pouvez cliquer sur ListBox pour la créer dans le formulaire utilisateur.
Image 8. Insérer une zone de liste dans le formulaire d’utilisateur
Nous allons nommer la Zone de liste lstZoneListe. 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.lstZoneListe
.AddItem "John"
.AddItem "Michael"
.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 boîte de liste avec ces 5 noms :
Image 9. La zone de liste avec les valeurs dans le formulaire d’utilisateur
Si vous souhaitez obtenir la valeur sélectionnée à partir de la zone de liste, vous devez utiliser la même logique présentée précédemment pour une listbox dans une feuille de calcul.