cs_Fabian123
Messages postés180Date d'inscriptionvendredi 18 janvier 2008StatutMembreDernière intervention22 novembre 2013
-
5 mars 2008 à 15:35
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 2018
-
5 mars 2008 à 23:51
Bonjour!
Voila ma question:
j'ai un tableau fait dans excel, trois colonnes: une avec la catégorie d'articles, une avec les articles et une avec le prix.
j'ai créé un userform dans lequel j'ai placé deux combobox et un label.
j'ai attribué à la première combobox les catégories, la seconde combobox les articles.
je souhaiterais lorsque je sélectionne une catégorie, la combobox_articles ne contienne plus que les articles correspondant à la catégorie sélectionnée précedemment.
par exemple, j'ai une catégorie "livre" et une catégorie "aliment", si je sélectionne "livre" la combobox_article n'affichera que les livres...
Enfin, le label servirais à afficher le prix unitaire de l'article sélectionné...
je vous laisse le début de code que j'ai:
Private Sub UserForm_Initialize()
Dim j As Integer
'Récupère les données de la colonne B...
For j = 1 To Range("b65536").End(xlUp).Row
ComboBox_Catégorie = Range("b" & j)
'...et filtre les doublons
If ComboBox_Catégorie.ListIndex = -1 Then ComboBox_Catégorie.AddItem Range("b" & j)
Next j
Dim k As Integer
'Récupère les données de la colonne C...
For k = 1 To Range("c65536").End(xlUp).Row
ComboBox_Articles = Range("c" & k)
'...et filtre les doublons
If ComboBox_Articles.ListIndex = -1 Then ComboBox_Articles.AddItem Range("c" & k)
Next k
Firelion
Messages postés27Date d'inscriptionlundi 18 février 2008StatutMembreDernière intervention29 avril 2008 5 mars 2008 à 17:10
Bonjour,
Je pense qu'un truc du genre fonctionnerai :
(A faire sur l'évenement validation de ta Combobox Catégorie)
'Récupération de la valeur de ta première Combobox
ValeurCategorie = Combobox.Value
'Parcours de la colonne B
For j = 1 To Range("b65536").End(xlUp).Row
'Test pour savoir si la valeur de la cellule est égale à la valeur de la combobox précédemment récupérée
If Range("b" & j).Value = ValeurCatégorie Then
'Si c'est bien égal, on est alors sur une ligne dont la catégorie qui est égale à la valeur de la combobox catégorie
'On prend donc la colonne c de cette ligne pour l'ajouter à la combobox article
ComboBox_Article.AddItem Range("c" & j)
End If
Next j
Voilà, je ne suis pas sûr de la syntaxe mais j'éspère que le raisonnement est là.
(Désolé pour ce message bicolore)
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 5 mars 2008 à 23:51
Salut Firelion, ton raisonnement est excellent.
Il faudrait juste vider le combobox_Article avant de le remplir, par contre ...
avec combobox_Article.Clear
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI