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.
Définit deux types d'objets à évènements: ComboBoxLiées prenant en charge les ComboBox pour la saisie des données d'identification de la ligne à créer, puis, ultérieurement, à consulter voire modifier, et ControlsAssociés prenant en charge les...
www.excel-downloads.com
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)
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.