Après échec de mes multiples essais, je m'adresse à vous pour m'aider à paramétrer sur mon USERFORM, 2 Combobox en cascade dont le PREMIER doit être sans doublons.
J'ai cherché partout sur le net, malheureusement j'ai pas trouvé ce qui correspond mon besoin.
Dim f
Private Sub UserForm_Initialize()
Set f = Sheets("feuil1")
Set MonDico = CreateObject("Scripting.Dictionary")
For Each c In f.Range("B6:B" & f.[B65000].End(xlUp).Row) ' on explore la colonne de niveau 1
MonDico(c.Value) = "" ' on ajoute l'élément de la famille au dictionnaire
Next c
Me.ComboBox1.List = MonDico.keys
End Sub
Private Sub ComboBox1_Change()
Me.ComboBox2.Clear
Set MonDico = CreateObject("Scripting.Dictionary")
For Each c In f.Range("B6:B" & f.[B65000].End(xlUp).Row) ' on explore la colonne de niveau 1
If c = Val(Me.ComboBox1) Then MonDico(c.Offset(, 1).Value) = "" ' si famille alors on ajoute l'élément de la sous-famille au dictionnaire
Next c
Me.ComboBox2.List = MonDico.keys
End Sub
[aparte]
Juste de passage pour une question qui me turlupine
(et cela risque de perturber mon sommeil ) NOURA:
Vous êtes de la même famille DEMERS et toi ?
[aparte]
Juste de passage pour une question qui me turlupine
(et cela risque de perturber mon sommeil ) NOURA:
Vous êtes de la même famille DEMERS et toi ?
Re : [RESOLU] 2 ComboBox en Cascade / le 1er sans doublons
Bonsoir Dranreb, le forum
je ne trouve pas la bonne expression pour t'exprimer mes remerciement.
j'étais en train de compléter la programmation de mon userform, mais tu l'a fais à ma place
c'est un geste tellement appréciable et je te remercie tellement
Bonne fin de soirée et bon weekend
A+
Dim f
Private Sub UserForm_Initialize()
Set f = Sheets("feuil1")
Set MonDico = CreateObject("Scripting.Dictionary")
For Each c In f.Range("B6:B" & f.[B65000].End(xlUp).Row) ' on explore la colonne de niveau 1
MonDico(c.Value) = "" ' on ajoute l'élément de la famille au dictionnaire
Next c
Me.ComboBox1.List = MonDico.keys
End Sub
Private Sub ComboBox1_Change()
Me.ComboBox2.Clear
Set MonDico = CreateObject("Scripting.Dictionary")
For Each c In f.Range("B6:B" & f.[B65000].End(xlUp).Row) ' on explore la colonne de niveau 1
If c = Val(Me.ComboBox1) Then MonDico(c.Offset(, 1).Value) = "" ' si famille alors on ajoute l'élément de la sous-famille au dictionnaire
Next c
Me.ComboBox2.List = MonDico.keys
End Sub
Bonjour JB, le poste date un peu mais je tente ma chance.
J'ai utilisé le code mentionné ci-dessus mais je suis bloqué : la ComboBox2 n'affiche pas les données de ma sélection C9:C après sélection de la ComboBox1 (sélection A9:A). Une idée ? Merci d'avance, Vincent.
Bonjour VDEL
Ce que j'ai modifié et qui semble répondre à ton Problème
VB:
Private Sub ComboBox_Fournisseur_Change()
'On va rechercher dans la Colonne "A" et NON "C"'
Me.ComboBox_Produit.Clear
Set MonDico = CreateObject("Scripting.Dictionary")
For Each c In f.Range("A9:A" & f.[B65000].End(xlUp).Row) ' on explore la colonne de niveau 1
If c = Me.ComboBox_Fournisseur Then MonDico(c.Offset(, 1).Value) = "" ' si famille alors on ajoute l'élément de la sous-famille au dictionnaire
Next c
Me.ComboBox_Produit.List = MonDico.keys
End Sub
Bonjour VDEL
Ce que j'ai modifié et qui semble répondre à ton Problème
VB:
Private Sub ComboBox_Fournisseur_Change()
'On va rechercher dans la Colonne "A" et NON "C"'
Me.ComboBox_Produit.Clear
Set MonDico = CreateObject("Scripting.Dictionary")
For Each c In f.Range("A9:A" & f.[B65000].End(xlUp).Row) ' on explore la colonne de niveau 1
If c = Me.ComboBox_Fournisseur Then MonDico(c.Offset(, 1).Value) = "" ' si famille alors on ajoute l'élément de la sous-famille au dictionnaire
Next c
Me.ComboBox_Produit.List = MonDico.keys
End Sub