VBA - combobox dépendantes

nioup

XLDnaute Nouveau
Bonjour,
je débute en VBA et j'aurais besoin de vos lumières...
Dans un userform, je dois pouvoir choisir les dates d'un planning (première combobox), et les produits à fabriquer en fonction de ces dates dans une deuxième combobox.

Par exemple, si j'ai dans ma feuille excel:
Date Produit
15/07 A
15/07 B
16/07 B
16/07 C
16/07 B
17/07 C

Si je sélectionne "16/07" dans ma première combobox, j'aimerais ne pouvoir choisir que "B" ou "C" dans ma deuxième combobox, en ayant "B" qui s'affiche une seule fois.
J'ai déjà réussi à supprimer les dates en doublons dans la combobox1, mais je sèche sur la suite...
Merci !

--
nioup
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : VBA - combobox dépendantes

Bonjour,


Code:
Private Sub UserForm_Initialize()
  Set MonDico = CreateObject("Scripting.Dictionary")
  For Each c In [dates]
    If Not MonDico.Exists(c.Value) Then MonDico.Add c.Value, c.Value
  Next c
  Me.ComboBox1.List = MonDico.items
End Sub

Private Sub ComboBox1_Change()
  Me.ListBox1.Clear
  For Each c In [dates]
    If CDate(c) = CDate(Me.ComboBox1) Then Me.ListBox1.AddItem c.Offset(0, 1)
  Next c
End Sub

JB
Formation Excel VBA JB
 

Pièces jointes

  • FormCascadeDateProduit.xls
    29 KB · Affichages: 137
  • FormCascadeDateProduit.xls
    29 KB · Affichages: 160
  • FormCascadeDateProduit.xls
    29 KB · Affichages: 161

nioup

XLDnaute Nouveau
Re : VBA - combobox dépendantes

Merci c'est sympa ça marche super :)

Pour certaines dates, quand on n'a rien prévu au planning, le nom de produit est un point:
Date Produit
15/07 A
15/07 B
16/07 B
16/07 C
16/07 B
17/07 C
17/07 .
18/07 .
18/07 A

Comment faire pour que la valeur "." n'apparaisse pas dans la combobox2 ?

Merci

--
nioup
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : VBA - combobox dépendantes

Voir PJ

Code:
Private Sub UserForm_Initialize()
  Set MonDico = CreateObject("Scripting.Dictionary")
  For Each c In [dates]
    If Not MonDico.Exists(c.Value) Then MonDico.Add c.Value, c.Value
  Next c
  Me.ComboBox1.List = MonDico.items
End Sub

Private Sub ComboBox1_Change()
  Me.ListBox1.Clear
  For Each c In [dates]
    If CDate(c) = CDate(Me.ComboBox1) And c.Offset(0, 1) <> "." Then
      Me.ListBox1.AddItem c.Offset(0, 1)
    End If
  Next c
End Sub

JB
 

Pièces jointes

  • FormCascadeDateProduit.xls
    28 KB · Affichages: 168
  • FormCascadeDateProduit.xls
    28 KB · Affichages: 184
  • FormCascadeDateProduit.xls
    28 KB · Affichages: 196
Dernière édition:

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : VBA - combobox dépendantes

Bonjour,
Code:
Private Sub UserForm_Initialize()
  Set MonDico = CreateObject("Scripting.Dictionary")
  For Each c In [dates]
    If Not MonDico.Exists(c.Value) Then MonDico.Add c.Value, c.Value
  Next c
  Me.ComboBox1.List = MonDico.items
End Sub
Private Sub ComboBox1_Change()
  Set MonDico = CreateObject("Scripting.Dictionary")
  For Each c In [dates]
    If Not MonDico.Exists(c.Offset(0, 1).Value) And CDate(c) = CDate(Me.ComboBox1) And c.Offset(0, 1) <> "." Then
       MonDico.Add c.Offset(0, 1).Value, c.Offset(0, 1).Value
    End If
  Next c
  Me.ListBox1.List = MonDico.items
End Sub

JB
 

Discussions similaires

Réponses
3
Affichages
350
Réponses
11
Affichages
473

Statistiques des forums

Discussions
311 735
Messages
2 082 023
Membres
101 873
dernier inscrit
excellllll