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 Sub

Dans 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

22essai.xlsm (143.31 Ko)

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+

45ioanito.xlsm (141.50 Ko)

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

Rechercher des sujets similaires à "remplissage automatique combobox"