Tri combobox

cs_Fabian123 Messages postés 180 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 22 novembre 2013 - 5 mars 2008 à 15:35
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 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
 
End Sub

Merci d'avance pour votre aide!

2 réponses

Firelion Messages postés 27 Date d'inscription lundi 18 février 2008 Statut Membre Dernière intervention 29 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)
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
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
0
Rejoignez-nous