VBA - combobox dépendantes

  • Initiateur de la discussion Initiateur de la discussion nioup
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

N

nioup

Guest
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
 
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

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

Dernière édition:
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
Microsoft 365 Règle de 3
Réponses
11
Affichages
951
Réponses
3
Affichages
757
Retour