VBA – Zone de Liste

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

David Gagnon

Last updated on janvier 12, 2022

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) :

vba-populate-listbox-in-vba

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:

vba-populate-listbox-from-cells-range

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 :

vba-clear-listbox

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.

vba insert listbox in userform

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 : vba listbox in userform

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.

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