Travailler en VBA avec une liste ou une combobox

Nombreux sont ceux qui ont recours au VBA pour améliorer leur développements informatique sous Access ou sous Excel. En effet, ce  langage de programmation permet de créer des macros. Automatiser des tâches récurrentes, exploiter des données, développer des interfaces utilisateurs tout devient possible pour peu que l’on ait les connaissances qui vont bien. Et dans le cadre des interfaces, le développeur est souvent amené à avoir recours aux contrôles ActiveX que sont les listes et les zones de listes modifiables (combobox). Voici comment travailler avec ces deux contrôles.

Apprendre les macros Excel VBA

Alimenter une liste avec la méthode addItem

Rien de plus simple. Il suffit de nommer son objet et ensuite de lui appliquer la méthode sus-mentionnée.

maListe.addItem("monElement")

Bien entendu, en fonction du contexte on peut imaginer la mise en oeuvre d’une boucle itérative (for, while ou do) si besoin est pour alimenter de manière dynamique la liste.

Alimenter une liste avec la propriété rowsource

Deux cas de figure se présentent selon que vous travaillez avec Excel ou Access.

Avec Excel, la valeur de la propriété rowsource fait référence à une plage de cellule

maListe.rowSource = "A1:A10"

Avec Access, la valeur est soit une liste de valeur

maListe.rowSource = "Element1;Element2;Element3"

Soit une requête de sélection (maRequete est un objet de type requête dans Access)

maListe.rowSource = maRequete

Sélectionner un élément d’une liste

Attention, car la méthode différent selon que vous employez une liste ou une zone de liste modifiable. C’est là les petites subtilités du VBA qui vont vous faire perdre un temps précieux dans votre programmation ! Il faut se faire une raison, cela fait parti de l’apprentissage !

Pour une liste

maListe.selectedItem(indiceElement)

Pour une combobox

maListe = maValeur

 

Travailler en VBA avec une liste ou une combobox
Votez pour ce billet !

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *