VBA, lier une ComboBox à une ListBox

kennedy

XLDnaute Junior
Bonjour à 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.


Code:
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 journée
 

youky(BJ)

XLDnaute Barbatruc
Re : VBA, lier une ComboBox à une ListBox

Salut kennedy,
Peut être comme ceci mais non testé . . .
Bruno
Code:
 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
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : VBA, lier une ComboBox à une ListBox

Bonjour Kennedy, bonjour le forum,

Dans l'exposé tu dis que les données qui alimentent la ComboBox sont la la colonne A et celles de la ListBox dan sla colonne C et dans le code tu actives un autre classeur... Tes données sont-elles dans deux classeurs différents ?

Pour vérifier ton code il va nous falloir recréer son environnement... Userform, Combo, Listbox, données etc... Je pense que si tu veux une réponse rapide tu devrais nous envoyer soit ton fichier (s'il n'est pas trop lourd) ou un fichier exemple basé sur ton fichier avec juste une poignée de données.


[Édition] Bonjour Youky on s'est croisé
 

kennedy

XLDnaute Junior
Re : VBA, lier une ComboBox à une ListBox

Bonjour, je me permet de revenir sur ce post.

Comment procéder si ma listbox, est une listbox multicolonne à deux colonnes?.
J'ai essayer:

Code:
Me.ListSources.AddItem Workbooks("TablesCesarv1.0.xls").sheets("Sheet1").cells(j, 3) & cells(j  4).value

Mais ça ajoute les 2 éléments que je veux avoir séparément dans la même colonne de la listbox... Quelqu'un aurait une solution s'il vous plait? :)

Bonne journée.
 
Dernière édition:

kennedy

XLDnaute Junior
Re : VBA, lier une ComboBox à une ListBox

J'ai essayer:

Code:
Me.ListSources.Column(1).AddItem Workbooks("Correspondance vFinal 2.3.xls").Sheets("infos").Cells(j, 36)
Me.ListSources.Column(2).AddItem Workbooks("Correspondance vFinal 2.3.xls").Sheets("infos").Cells(j, 37)

Mais ça ne marche pas non plus. La pour le coup j'ai une erreur:

" Erreur d'exécution '381'

Impossible de lire la propriété Column. Index de table de propriétés non valide."
 

youky(BJ)

XLDnaute Barbatruc
Re : VBA, lier une ComboBox à une ListBox

Bonsoir,
comme ceci.
J'ai mis une variable k (à voir si à déclarer)
Sinon à la place de k tu peux mettre . . .Me.ListSources.listcount-1
Code:
k=k+1
Me.ListSources.List(k,1)= Workbooks("Correspondance vFinal 2.3.xls").Sheets("infos").Cells(j, 36)
Me.ListSources.List(k,2)= Workbooks("Correspondance vFinal 2.3.xls").Sheets("infos").Cells(j, 37)

Bruno
 
Dernière édition:

kennedy

XLDnaute Junior
Re : VBA, lier une ComboBox à une ListBox

Salut, merci de te pencher encore une fois sur mon problème.:)

Par contre ça ne marche pas chez moi? J'ai l'erreur "381":

"Impossible de définir la propriété List. Index de table de propriéés non valide"

il a pas l'air d'aimer le "List(k,1)"
 

youky(BJ)

XLDnaute Barbatruc
Re : VBA, lier une ComboBox à une ListBox

Exact:
Autant pour moi, j'ai oublié le -1 donc mets k-1
Si tu as que 2 colonnes cette ligne suffit.
Bruno
Code:
k=k+1
Me.ListSources.List(k-1,1)= Workbooks("Correspondance vFinal 2.3.xls").Sheets("infos").Cells(j, 36)
 

kennedy

XLDnaute Junior
Re : VBA, lier une ComboBox à une ListBox

Je dois mal faire quelque chose? :x J'ai toujours la même erreur qui s'affiche sur mon écran.

"Impossible de définir la propriété List. Index de table de propriéés non valide"
Je ne comprend pas trop ^^

Le bout de code du début du post a légèrement changé. :
Code:
Private Sub Userform_Activate()
..........................
..........................
..........................
 Workbooks("Correspondance vFinal 2.3.xls").Activate
Worksheets("infos").Activate
            Range("AI2:AK65536").Sort Key1:=Range("AI2"), Order1:=xlAscending, Header:=xlGuess, _
            OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
            DataOption1:=xlSortNormal
    'Récupère les données de la colonne A...
    For j = 1 To Range("AI65536").End(xlUp).Row
        ComboBox3 = Range("AI" & j)
        '...et filtre les doublons
        If ComboBox3.ListIndex = -1 Then ComboBox3.AddItem Range("AI" & j)
    Next j

End sub


Private Sub ComboBox3_Change()                          'Lie la ComboBox avec la Listbox sur l'onglet 1. ("Fenêtre de contrôle")
Dim k, j As Integer

     Me.ListSources.Clear
        
        For j = 1 To Range("AJ65536").End(xlUp).Row
            If Cells(j, 35) = ComboBox3.Value Or (Val(ComboBox3.Value) = Cells(j, 35) And Val(ComboBox3.Value) = ComboBox3.Value) Then
                                [B]k = k + 1
                Me.ListSources.List(k - 1, 1) = Workbooks("Correspondance vFinal 2.3.xls").Sheets("infos").Cells(j, 36)[/B]           
           End If
        Next j
    
End Sub
 
Dernière édition:

youky(BJ)

XLDnaute Barbatruc
Re : VBA, lier une ComboBox à une ListBox

Bonsoir,
Désolé du retard j'étais absent.
Bruno
Edit: en rouge ce qui manquait, revoir le nom du fichier et la sheets
Code:
Private Sub ComboBox3_Change()                          'Lie la ComboBox avec la Listbox sur l'onglet 1. ("Fenêtre de contrôle")
Dim k, j As Integer
     Me.ListSources.Clear
        
        For j = 1 To Range("AJ65536").End(xlUp).Row
            If Cells(j, 35) = ComboBox3.Value Or (Val(ComboBox3.Value) = Cells(j, 35) And Val(ComboBox3.Value) = ComboBox3.Value) Then
[COLOR="Red"]Me.ListSources.AddItem Workbooks("TablesCesarv1.0.xls").sheets("Sheet1").cells(j, 3) & cells(j  4).value[/COLOR] 
  k = k + 1
Me.ListSources.List(k - 1, 1) = Workbooks("Correspondance vFinal 2.3.xls").Sheets("infos").Cells(j, 36)           
           End If
        Next j
End Sub
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 329
Messages
2 087 334
Membres
103 519
dernier inscrit
Thomas_grc11