Remplissage automatique combobox
Bonjour à tous,
Merci à ceux qui vont prendre le temps de lire mon petit problème.
Voila, j'ai pu réaliser une programmation liant 5 combobox (je suis débutant) dans un useform
Le codage fonctionne bien mais je souhaiterai le faire évoluer.
Ci-dessous mon code actuel :
Code :
Private Sub UserForm_Initialize()
Set f = Sheets("pricelist")
Set Mondico = CreateObject("Scripting.Dictionary")
For Each C In Range(f.[A2], f.[A65000].End(xlUp))
Mondico(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 Range(f.[A2], f.[A65000].End(xlUp))
If C = Me.ComboBox1 Then Mondico(C.Offset(, 1).Value) = C.Offset(, 1).Value
Next C
Me.ComboBox2.List = Mondico.Items
Me.ComboBox2.ListIndex = -1
Me.ComboBox3.ListIndex = -1
Me.ComboBox4.ListIndex = -1
Me.ComboBox5.ListIndex = -1
End Sub
Private Sub ComboBox2_Change()
Set Mondico = CreateObject("Scripting.Dictionary")
For Each C In Range(f.[A2], f.[A65000].End(xlUp))
If C = Me.ComboBox1 And C.Offset(, 1) = Me.ComboBox2 Then Mondico(C.Offset(, 2).Value) = C.Offset(, 2).Value
Next C
Me.ComboBox3.List = Mondico.Items
Me.ComboBox3.ListIndex = -1
Me.ComboBox4.ListIndex = -1
Me.ComboBox5.ListIndex = -1
End Sub
Private Sub ComboBox3_Change()
Set Mondico = CreateObject("Scripting.Dictionary")
For Each C In Range(f.[A2], f.[A65000].End(xlUp))
If C = Me.ComboBox1 And C.Offset(, 1) = Me.ComboBox2 And C.Offset(, 2) = Me.ComboBox3 Then Mondico(C.Offset(, 3).Value) = C.Offset(, 3).Value
Next C
Me.ComboBox4.List = Mondico.Items
Me.ComboBox4.ListIndex = -1
Me.ComboBox5.ListIndex = -1
End Sub
Private Sub ComboBox4_Change()
Set Mondico = CreateObject("Scripting.Dictionary")
For Each C In Range(f.[A2], f.[A65000].End(xlUp))
If C = Me.ComboBox1 And C.Offset(, 1) = Me.ComboBox2 And C.Offset(, 2) = Me.ComboBox3 And C.Offset(, 3) = Me.ComboBox4 Then Mondico(C.Offset(, 4).Value) = C.Offset(, 4).Value
Next C
Me.ComboBox5.List = Mondico.Items
Me.ComboBox5.ListIndex = -1
End Sub
Private Sub ComboBox5_Change()
Set Mondico = CreateObject("Scripting.Dictionary")
For Each C In Range(f.[A2], f.[A65000].End(xlUp))
If C = Me.ComboBox1 And C.Offset(, 1) = Me.ComboBox2 And C.Offset(, 2) = Me.ComboBox3 And C.Offset(, 3) = Me.ComboBox4 And C.Offset(, 4) = Me.ComboBox5 Then Mondico(C.Offset(, 5).Value) = C.Offset(, 5).Value
Next C
End Sub
Private Sub CommandButton1_Click()
LCou = Feuil1.Range("B65536").End(xlUp).Row
Feuil1.Cells(LCou + 1, "D").Value = ComboBox1.Value
Feuil1.Cells(LCou + 1, "B").Value = ComboBox2
Feuil1.Cells(LCou + 1, "C").Value = ComboBox3
Feuil1.Cells(LCou + 1, "F").Value = ComboBox4
Feuil1.Cells(LCou + 1, "G").Value = ComboBox5
Feuil1.Cells(LCou + 1, "H").Value = ComboBox6
Feuil1.Cells(LCou + 1, "E").Value = TextBox1
ComboBox1.Value = ""
ComboBox2.Value = ""
TextBox1.Value = ""
MsgBox "Ligne correctement ajoutée", vbInformation
Unload Me
End Sub
Private Sub Annuler_Click()
Unload Me
End SubDans l'idéal, je souhaiterai qu'une fois la combobox1 sélectionnée, puis la seconde, la 3eme, 4eme et 5eme se remplissent automatiquement pour éviter la séléction manuelle.
J'ai pu chercher sur les forums mais je n'arrive pas à adapter ce qu'il y a sur le net à mon code.
Si l'un ou l'une de vous pouvais me donner un petit coup de pouce
Je vous remercie par avance les amis
Loan
Salut Ioanito,
trop compliqué à comprendre!
Peux-tu expliquer ce que tu veux faire et, surtout...
Dans ton cas, ça m'a l'air (en tout cas pour moi) plus que nécessaire!
A+
Bonjour Curulis57
Merci de ta réponse.
En effet, ce n'est pas simple.
Ci-joint le fichier.
J'ai un Useform quand on click sur "ajouter une ligne"
On choisi :
- le fournisseur
- la référence
- la désignation
- l'unité
- le prix
Ensuite on click sur "Ajouter" et nos sélections s'ajoute automatiquement sur la ligne "11"
cela fonctionne bien mais je souhaiterais améliorer
C'est à dire qu'une fois la Combobox 1 renseignée, puis le Combobox 2 renseignée, la Combobox 3,4 et 5 se remplissent automatiquement ... plutôt que de sélectionner manuellement
J’espère avoir été plus clair
Merci de vos retours
Loan
Salut Ioanito,
voici ma vision des choses avec un code plus simple!
Avant de continuer, sache que j'ai remplacé tes Combo3-4-5 par une ListBox-3 colonnes qui se charge d'afficher les détails du produit en fonction de sa référence.
Si ça te va, avec mon code, on continue, sinon, je passe la main! Trop éloigné de ma façon de faire!
A mon sens, en supposant que ce sont des commandes client :
- il manque une colonne à gauche, soit 'Date', soit 'Nom client' (où encode-t-on le client?) ;
- une colonne 'Total commande'
Ne trierais-tu pas cette feuille de 'commande' (?) par date? Date la plus récente en haut ?
A te lire.
A+
Bonsoir,
Merci de ton retour. j'ai finalement trouvé une solution.
j'ai remplacé mes combobox 3,4,5 par des textbox à remplacement automatique.
En tout cas merci de ton aide.
Je clôture la discussion
Bonne continuation