Liste déroulante sans doublons
Bonjour à tous,
Quelqu'un peut-il me dire comment faire pour récupérer les données d'une colonne (B par exemple), suite à un filtre sur la colonne A, et les mettre ensuite dans une combobox ?
J'arrive à récupérer les données dans la combobox, mais impossible de récupérer uniquement les valeurs uniques.
Sub liste_batiments_Change()
liste_locaux.Clear 'reset à chaque fois la combobox liste_locaux
Filtre_afficher_locaux (liste_batiments.Value) 'permet de filtrer la feuille excel automatiquement (filtre sur colonne A)
N = liste_batiments.Value
x = Sheets("SC").Range("A7:A65536").Find(N, lookat:=xlWhole).Row 'permet de récupérer l'indice de la ligne où le filtre commence à prendre effet
z = Sheets("SC").Range("B" & Rows.Count).End(xlUp).Row
Set DicoLocaux = CreateObject("Scripting.Dictionary")
For y = x To z
If (liste_batiments.Value = Sheets("SC").Cells(y, 1).Value) Then
DicoLocaux(y) = Sheets("SC").Cells(y, 2).Value
End If
Next y
Me.liste_locaux.List = DicoLocaux.Items 'On remplit la liste avec les élements de la colonne B (suite au filtre sur colonne A)
End SubLe souci c'est que je récupère TOUT dans ma combobox... et je ne souhaite avoir que les valeurs uniques...
Exemple : ci-joint une capture d'écran, dans ma seconde combobox, je ne veux avoir que les valeurs "108" et "115"
Merci pour votre retour.
Cordialement
Bonjour
Tu devrais joindre ton fichier...
Bye !
Bonjour gmb,
J'ai réussi à me dépatouiller en copiant collant le résultat du filtre dans une feuille intermédiaire ; j'ai ensuite alimenter ma combobox à partir de celle-ci.
C'est ok pour moi.
Merci !
Bonjour,
Comme YAPA de fichier joint, et pas de déclarations, je ne vais pas m'amuser à en construire un pour tester, je te donne donc la piste sur laquelle je m'orienterai :
Au lieu de travailler sur la feuille "SC" je créerai un TabloSC avec les 2 colonnes
Au lieu de créer un Dico filtré avec les éléments filtrés de la colonne 1
Je fabriquerai un Dico (d) non filtré sur sous les éléments de TabloSC
ensuite un mini Dico (df) filtré sur les clefs parsées de d
Ça doit donner quelque chose comme :
Sub filtre(liste_batiments)
Dim df, f, a, i%, S
Set f = Sheets("SC")
Set d = CreateObject("Scripting.Dictionary")
a = f.Range("A7:B" & f.[B65000].End(xlUp).Row)
For i = LBound(a) To UBound(a)
S = a(i, 1) & " " & a(i, 2)
If Not d.Exists(S) Then d.Add (S), ""
Next
a = d.keys
Set df = CreateObject("Scripting.Dictionary")
For i = LBound(a) To UBound(a)
S = Split(a(i))
If liste_batiments = Val(S(0)) Then
If Not df.Exists(S(1)) Then df.Add S(1), ""
End If
Next
'[E2].Resize(df.Count) = Application.Transpose(df.keys) 'débogage...
Me.liste_locaux.List = df.keys
End Sub
Sub test()
filtre 151382
End SubA+