[RESOLU] 2 ComboBox en Cascade / le 1er sans doublons

NOURA

XLDnaute Nouveau
Bonsoir a vous

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. :confused:

Merci d'avance pour votre aide.
 

Pièces jointes

  • PF_DEPT.xlsm
    43.3 KB · Affichages: 53
  • PF_DEPT.xlsm
    43.3 KB · Affichages: 51
  • PF_DEPT.xlsm
    43.3 KB · Affichages: 62
Dernière édition:

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : 2 ComboBox en Cascade / le 1er sans doublons

Bonsoir,


Code:
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

Menus en cascade

JB
 

Pièces jointes

  • PF_DEPT.xlsm
    45.5 KB · Affichages: 74
  • PF_DEPT.xlsm
    45.5 KB · Affichages: 70
  • PF_DEPT.xlsm
    45.5 KB · Affichages: 61
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : 2 ComboBox en Cascade / le 1er sans doublons

Bonsoir à tous

[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 ?
ReBonsoir Laurent
Parfait / Empreinte de Génie / Bravo
Un grand Merci pour vous. Je vous suis bien reconnaissant.
Merci et Bonne soirée.
Bonsoir à vous, au forum
Empreinte de Génie vraiment
Un très grand merci
bise, Merci un autre fois et, bonne soirée
[/aparte]
 

NOURA

XLDnaute Nouveau
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+
 

VDEL

XLDnaute Nouveau
Re : 2 ComboBox en Cascade / le 1er sans doublons

Bonsoir,


Code:
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

Menus en cascade

JB
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.
 

Pièces jointes

  • inventaire Nice VBA 8.xlsm
    297.7 KB · Affichages: 10

ChTi160

XLDnaute Barbatruc
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
Jean marie
 

VDEL

XLDnaute Nouveau
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
Jean marie

Ca fonctionne ! Merci beaucoup !!!

Vincent
 

Discussions similaires

Statistiques des forums

Discussions
312 074
Messages
2 085 059
Membres
102 768
dernier inscrit
clem135164