XL 2010 ComboBox liste déroulante intuitive 2 colonnes tri ordre croissant sur la 2ème colonne

modus57

XLDnaute Occasionnel
Bonjour,
J'ai un tableau constitué de 2 colonnes qui alimente une liste déroulante intuitive d'un combobox.
Dans la colonne 1 le code produit est au format 000 & la colonne 2 contient le nom du produit.
Voici mon code :
VB:
Private Sub UserForm_Initialize()
Set f = Sheets("BD2")
ComboBox1.List = Sheets("BD2").Range("liste").Value
End Sub
À ce niveau ça fonctionne bien.
Code:
Private Sub ComboBox1_Change()
If Me.ComboBox1 <> "" Then
Set d1 = CreateObject("Scripting.Dictionary")
clé = UCase(Me.ComboBox1) & "*"
For Each c In Sheets("BD2").[liste]
If UCase(c) Like clé Then d1(c.Value) = ""
Next c
Me.ComboBox1.List = d1.keys
Me.ComboBox1.DropDown
End If
End Sub

Private Sub ComboBox1_DropButtonClick()
ComboBox1.List = Sheets("BD2").Range("liste").Value
End Sub
Par contre pour ces 2 évènements ça fonctionne moyennement :
- pour commencer je n'arrive pas afficher le premier item à l'initiation de l'userform.
- la combobox affiche le code produit au format 1 au lieu de 001 et cela ne me convient pas.
- ensuite, après la saisie de la ou les premières lettres dans la combobox les items sont bien filtrés mais au clic sur l'un deux, seul le nom du produit s'affiche mais pas son code.
Je sèche et ne trouve pas de solution.
Quel est le code pour que la combobox affiche le bon format et comment faire un tri croissant sur la colonne 2 ?
Merci par avance pour votre aide et vos réponses.
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Une fois comprise sa philosophie, on devrait se poser moins de questions avec cette ressource :
Notamment: un format "000" peut être précisé derrière la spécification de colonne à la méthode Add d'un ComboBoxLiées, et d'autre part les listes des ComboBox que les appels à cette méthode lui font prendre en charge sont partout construites classées et sans doublon.
Et j'oubliais: une petite procédure complémentaire, un peu pointue mais dont un modèle général est donné dans l'aide, permet de lui imposer une recherche intuitive (groupe de caractères tapés existant à n'importe quelle position)
 
Dernière édition:

modus57

XLDnaute Occasionnel
Bonjour Dranreb,
Merci pour votre proposition, je vais lire cela attentivement, pour la mettre en application une fois comprise.
Dans l'immédiat une petite correction :
VB:
Me.ComboBox1.ListIndex = 0
Seul le code du produit s'affiche mais pas son nom.
 

Discussions similaires

  • Question
Microsoft 365 vba
Réponses
14
Affichages
419
Haut Bas