Liste de choix ComboBox
Salut,
J'ai écrit une routine pour trier la liste d'un ComboBox pour qu'elle n'affiche que les références (issues d'une colonne Excel) qui contiennent le(s) caractère(s) qu'on vient de taper dans le ComboBox.
Ca marche, mais quand le caractère saisi dans le ComboBox est situé en première position dans une des références possibles, le ComboBox " présélectionne " automatiquement la première référence correspondante et la liste du ComboBox n'affiche que la valeur " présélectionnée ".
Par exemple, si je saisis " A " et que le tableau comporte les valeurs " AAA " et " AAB ", la valeur " AAA " sera présélectionnée, avec les 2 derniers A surlignés (pour être remplacés par les caractères qui pourraient éventuellement être saisis ensuite), et la liste n'affiche que " AAA " . Si je supprime le texte surligné (les 2 derniers " A "), la liste affiche " AAA " et " AAB ".
Comment faire pour que seuls les caractères entrés dans le ComboBox soient affichés et qu'aucune valeur ne soit " présélectionnée " tant que la saisie de la référence ne correspond pas à une entrée de la liste de choix ou qu'une valeur de cette liste soit sélectionnée ?
Voilà le code, qui fait le tri dans les valeurs de la colonne A :
Private Sub ComboBox1_Change()
End Sub
J'ai essayé d'ajouter un SendKeys"{Delete}" après le Next I pour simuler la suppression du texte surligné. Ca l'efface bien, ce que je veux, mais ça efface aussi la valeur qu'on sélectionne dans la liste du ComboBox.
Merci d'avance.
Manu
Bonjour,
Exemple de saisie intuitive (site de J.Boisgontier)
http://boisgontierjacques.free.fr/fichiers/DonneesValidation/ListeIntuitive5.xls
Dim a()
Private Sub UserForm_Initialize()
Set f = Sheets("BD")
a = f.Range("A2:A" & f.[A65000].End(xlUp).Row).Value
Me.ComboBox1.List = a
End Sub
Private Sub ComboBox1_Change()
Set d1 = CreateObject("Scripting.Dictionary")
tmp = UCase(Me.ComboBox1) & "*"
For Each c In a
If UCase(c) Like tmp Then d1(c) = ""
Next c
Me.ComboBox1.List = d1.keys
Me.ComboBox1.DropDown
End Sub
Private Sub ComboBox1_Click()
ActiveCell = Me.ComboBox1
Unload Me
End Subhttp://boisgontierjacques.free.fr/pages_site/listes_cascade.htm#ListeIntuitiveForm
Ceuzin
Ca y est j'ai trouvé. Il suffit de mettre la propriété MatchEntry du ComboBox à 2 (None). C'était pas un problème d'instruction VBA.
Manu