VBA Combobox liée à une Listbox
Résolu
Julistage
Messages postés
31
Statut
Membre
-
cousinhub29 Messages postés 1129 Date d'inscription Statut Membre Dernière intervention -
cousinhub29 Messages postés 1129 Date d'inscription Statut Membre Dernière intervention -
Bonsoir à tous !
Voilà comme l'indique le titre de mon post, je souhaiterais lier une selection faite dans une combobox avec une liste d'item lui correspondant. Du style: La combobox contient une catégorie de produits, et la listbox contient la sous-catégorie.
Voilà ce que j'ai commencé à faire... Mais ça marche pas trop. ça va chercher des données, mais ce ne sont pas les bonnes...
En gros dans la combobox, se trouve des éléments se trouvant dans la colonne A d'un fichier excel, et dans la listbox, il doit apparaitre des éléments se trouvants dans la colonne C...
Voilà mon bout de code, si quelqu'un voit une erreur s'il vous plait? Mes sous catégories sont fausses au moment de la selection de la catégorie via la combobox.
Merci d'avance, Bonne soirée ! :)
Voilà comme l'indique le titre de mon post, je souhaiterais lier une selection faite dans une combobox avec une liste d'item lui correspondant. Du style: La combobox contient une catégorie de produits, et la listbox contient la sous-catégorie.
Voilà ce que j'ai commencé à faire... Mais ça marche pas trop. ça va chercher des données, mais ce ne sont pas les bonnes...
En gros dans la combobox, se trouve des éléments se trouvant dans la colonne A d'un fichier excel, et dans la listbox, il doit apparaitre des éléments se trouvants dans la colonne C...
Voilà mon bout de code, si quelqu'un voit une erreur s'il vous plait? Mes sous catégories sont fausses au moment de la selection de la catégorie via la combobox.
Private Sub Userform_Activate()
..........................
..........................
..........................
'Récupère les données de la colonne A...
For j = 1 To Range("A65536").End(xlUp).Row
ComboBox3 = Range("A" & j)
'...et filtre les doublons
If ComboBox3.ListInde x = -1 Then ComboBox3.AddItem Range("A" & j)
Next j
End sub
Private Sub ComboBox3_Change()
Dim j As Integer
Me.ListSources.Clear
For j = 1 To Range("C65536").End(xlUp).Row
If Cells(j, 1) = ComboBox3.Value Then
Workbooks("TablesCesarv1.0.xls").Activate
Worksheets("Sheet1").Activate
Me.ListSources.AddItem Range("C" & j).Value
End If
Next j
End Sub
Merci d'avance, Bonne soirée ! :)
4 réponses
Bonjour,
Je ne comprends par pourquoi tu alimentes ta ListBox à partir d'un autre fichier, alors que tu alimentes ta ComboBox à partir du fichier actif...
De plus, tu détermines la dernière ligne de la colonne C du fichier actif, et tu récupères donc les données de l'autre fichier????
Tu ne peux pas mettre toutes les données dans le même fichier?
Est-ce que les données de l'autre fichier, en colonne C, correspondent aux mêmes lignes que les données colonne A du fichier actif?
Bref, je pense que la meilleure méthode serait de regrouper les 2 lignes dans une feuille bien distincte...
Mais sans connaître les structures de tes 2 fichiers, difficiles d'en dire plus...
Bon courage
Je ne comprends par pourquoi tu alimentes ta ListBox à partir d'un autre fichier, alors que tu alimentes ta ComboBox à partir du fichier actif...
De plus, tu détermines la dernière ligne de la colonne C du fichier actif, et tu récupères donc les données de l'autre fichier????
Tu ne peux pas mettre toutes les données dans le même fichier?
Est-ce que les données de l'autre fichier, en colonne C, correspondent aux mêmes lignes que les données colonne A du fichier actif?
Bref, je pense que la meilleure méthode serait de regrouper les 2 lignes dans une feuille bien distincte...
Mais sans connaître les structures de tes 2 fichiers, difficiles d'en dire plus...
Bon courage
Bonjour Consinhub. :) Merci de t'être penché sur mon problème. J'ai résolu mon problème. En fait mes deux colonnes sont bien dans le même fichier, juste je n'ai pas penser à le préciser dans mon code.
Voilà un autre moyen d'arriver au résultat escompté. Le bout de code que j'ai présenté marche aussi. J'avais un soucis de tri alphabétique qui me faussait l'ensemble de la table. J'ai modifié ce problème et ça marche maintenant très bien.
Bonne journée à tous.
Private Sub Userform_Activate()
..........................
..........................
..........................
'Récupère les données de la colonne A...
For j = 1 To Range("A65536").End(xlUp).Row
ComboBox3 = Range("A" & j)
'...et filtre les doublons
If ComboBox3.ListInde x = -1 Then ComboBox3.AddItem Range("A" & j)
Next j
End sub
Private Sub ComboBox3_Change()
Dim j As Integer
Me.ListSources.Clear
For j = 1 To Range("C65536").End(xlUp).Row
If Cells(j, 1) = ComboBox3.Value Then
Me.ListSources.AddItem Workbooks("TablesCesarv1.0.xls").sheets("Sheet1").cells(j,3).value
End If
Next j
End Sub
Voilà un autre moyen d'arriver au résultat escompté. Le bout de code que j'ai présenté marche aussi. J'avais un soucis de tri alphabétique qui me faussait l'ensemble de la table. J'ai modifié ce problème et ça marche maintenant très bien.
Bonne journée à tous.