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 Sub

http://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

Rechercher des sujets similaires à "liste choix combobox"