ListBox, ComboBox
ListBox ou zone de liste
C'est un Contôle utilisable dans un UserForm ou formulaire
qui permet de sélectionner une ou plusieurs valeurs parmi une liste prédéfinie soit par l'utilisateur soit en dur dans le code.
Par exemple, comment afficher les mois de l'année et sélectionner par défaut le mois de janvier
Private Sub UserForm_Initialize() For x = 1 To 12 ListBox1.AddItem Format(DateSerial(2006, x, 1), "mmmm") Next ' Initialisation de la ListBox sur le premier élément
ListBox1.ListIndex = 0 End Sub
Les ListBox permettent d'afficher les données de deux manières différentes. La première et la plus utilisée, affiche le textetel qu'il est entré. La deuxième affiche les données sous forme de bouton d'option.
Pour cela, il faut donner, à la propriété "Liststyle" la valeur 1:
ListBox1.ListStyle = 1
Pour récuperer la valeur qui a été sélectionnée, deux possibilités :
- Récuperation du texte
mavar = ListBox1.Value
- Récupération de la position dans la liste
mavar = ListBox1.ListIndex
Les Combobox ou zones de liste modifiables.
Comme les ListBox, les ComboBox permettent d'afficher des élements sous forme de liste. Elles permettent cependant en plus à l'utilisateur d'ajouter lui même un élément en le tapant.
Les listes : combobox, listbox, laquelle choisir comment les remplir ?
Mettons que vous vouliez préciser dans votre formulaire de saisies de coordonnées la civilité (Mme, Melle, Mr). Plutôt que d'obliger l'utilisateur à l'écrire, donnez lui le choix via une liste prédéfinie.
On va donc placer dans notre formulaire une liste. Mais il y en a deux disponibles : ListBox (Zone de liste) et ComboBox (liste modifiable)et chacune comporte des options. Laquelle choisir ?
- La ListBox
- Elle propose un choix fixe d'éléments.
- Le nombre d'éléments visibles d'emblées est déterminé à l'avance. Si le nombre d'éléments de choix est trop important, un ascenceur permet de se déplacer dans la liste.
- Elle permet de faire des sélections multiples
- La ComboBox
- Permet à l'utilisateur de choisir un élément de la liste ou de taper ce qu'il souhaite.
- Un seul élément est visible à la fois, une flèche permet de développer un menu déroulant.
- Ne permet pas les choix multiples.
Comment introduire les éléments de la liste ?
Plusieurs méthodes sont disponibles : les noms des éléments peuvent être codés "en dur" ou on peut utiliser une liste tapée dans une feuille excel.
La méthode addItem
Ajoutez pour commencer une ListBox que vous nommez listCivilité.
Le code pour la remplir est à mettre dans la macro Userform_initialize :
Private Sub UserForm_Initialize() ListCivilité.AddItem "Mr" ListCivilité.AddItem "Mme" ListCivilité.AddItem "Melle" End Sub
Cette méthode fonctionne très bien mais on voit tout de suite qu'elle devient lourde dès qu'il y a beaucoup éléments.
NB : la méthode removeItem fonctionne avec la même syntaxe pour enlever un élément.
On peut cependant utiliser cette méthode pour ajouter par exemple une liste de nombres comme des années de naissance.
Mots clefs associés à cette page : combobox, contrôle, listbox, liste
- Vous devez vous identifier ou créer un compte pour écrire des commentaires

comment effacer les valeurs de la comboBox
bonjour,
J'aimerais connaitre la façon d'effacer les valeurs , dans une ComboBox, à part "" qui je pense n'est pas la bonne façon. Je récupère des dates dans une feuille par exemple janvier en A1, A2......, et ensuite si je passe dans la feuille février si je met dans la comboBox les valeurs de A1,A2... J'aimerais que les premières valeurs ne soient plus là, j'ai beau mettre le nom de ma ComboBox suivi de "" , les valeurs se rajoutent à la suite.
franckell
ListBox1.RemoveItem (Index)
Bonjour
Il faut utiliser la méthode remove.item qui fait exactement l'inverse de add.idem. Tu trouveras un exemple à télécharger ici qui illustre cette méthode:
trucs/liste_userform
Misange
Mais il me manque la fin de la 1 ere ligne , erreur 254
bonjour
j'esai de me servir de votre macro pour effacer une combobox. Mais il me manque la fin de la 1 ere ligne , erreur 424
merci d'avance pour la fin de la ligne
franckell
franckell
fin
Quelle fin de quelle première ligne ? Je ne suis pas dans votre code !
Misange
je me suis mal expliqué
voici ma macro qui me sert a voir les valeurs des lignes que j'ai sur une feuille, exemple janvier, février.... a partir de la ligne 15 jusqu'à la ligne nouvelle_ligne qui change .
je récupére dans ma combobox1 les dates dans la colonne a, que je met dans ma combobox1, et ensuite je lis ce qu'il y a sur la ligne consernée.
au départ je me met sur le mois que nous somme c'est a dire décembre combobox2, là pas de problème. mais si je vais sur janvier en me servant de la combobox 2, je récupère les dates de janvier a la suite de elle de décembre.
je vous joint ma macro que je me sert
Sub metdatejour()
Dim fff
fff = 0
'ma combobox est ""com_ligne_a_regarder ""et ma boite est ""suivit_compte""
suivit_compte.com_ligne_a_regarder = ""
'les dates que je récupère , sont depuis la ligne ("A" & nouvelle_ligne) donc i
For i = 15 To nouvelle_ligne
'Ajoute chaque date dans la liste.
fff = Range("A" & i).Value
suivit_compte.com_ligne_a_regarder.AddItem (fff)
Next i
'Sélectionne la premiere date de la liste...
suivit_compte.com_ligne_a_regarder.ListIndex = 1
End Sub
franckell
franckell
forum
Cet espace de commentaire n'est pas destiné à répondre à des questions particulières, sauf si la réponse tient en 3 mots. Je vous propose de poser votre question sur le forum microsoft answers excel qui est prévu pour cela. Si vous ne vous êtes jamais connecté au forum, voici une page qui vous expliquera comment faire. C'est volontairement que je ne réponds pas aux questions particulières ici, sinon je ne ferai plus que cela ! merci de votre compréhension.
Misange
Combobox
Bonjour,
J'aurais une question, actuellement j'ai une combobox dans un userform.
Pour remplir cette combobox, j'ai utilisé la fonction additem , les données proviennent d'une autre feuille.
Cette liste contient les noms des clients.
Ce que j'essaie de faire c'est que: Si le nom du client n est pas dans la liste , il me suffirai de me taper dans la combobox et que le nouveau nom se mette directement dans la liste de donnée initiale.
Si vous pouvez m'aider.
Merci beaucoup
N B
Forum
Bonjour
Comme signalé à de multiples endroits sur le site, Excelabo n'est PAS un forum de discussion. Je vous propose d'aller sur les forums de microsoft answers ecel ou d'exceldownloads pour y poser votre question. Merci de votre compréhension.
Misange
Misange