Empêcher la saisie auto du premier item dans une CB avec saisie intuitive

Bonjour à tous,

J'ai utilisé un bout de code qui me permet de filtrer ma liste déroulante en fonction de ce que l'utilisateur tape.

Private Sub CB1_F_Essai_Change()

a = Array("Blé tendre d'hiver", "Orge d'hiver", "Avoine d'hiver", "Seigle - Triticale", "Orge de printemps", "Pois de printemps", "Avoine de printemps", "Blé tendre de printemps")
CB1_F_Essai.List = Filter(a, CB1_F_Essai.Text, True, vbTextCompare)
CB1_F_Essai.DropDown

End Sub

Le problème est qu'Excel étend automatiquement la saisie au premier item correspondant dans ma combobox.

Par exemple, si je tape O, Excel étend directement la saisie à Orge d'hiver qui est le premier item correspondant dans ma combobox CB1_F_Essai.

De ce fait, mon code plus haut ne me propose que l'item Orge d'hiver au lieu des deux items Orge d'hiver ET Orge de printemps.

formulaire

Le code ci-dessus fonctionne seulement quand je fais une erreur de saisie (par exemple j'écris orgt et j'efface le t --> org). La saisie automatique d'Excel s'arrête et mon code me propose bien Orge d'hiver ET Orge de printemps.

formulaire 2

Je ne sais pas si c'est bien clair mais j'espère que vous pourrez m'aider !!

Merci

Vinci-Binci

LA SOLUTION : Dans MatchEntry, sélectionner 2 - FmMatchEntryNone.

J'ai aussi changé mon code qui me permet d'avoir une saisie intuitive en me donnant l'ensemble des correspondances dans ma liste déroulante (*saisie* --> à droite et à gauche de ce que j'ai saisi dans la combobox) et en ne prenant pas en compte les accents.

Voici le code (avec les remarques ou explications pour que je comprenne pourquoi j'ai fait cela si je dois me replonger un jour dedans) :

Private Sub CB1_F_Essai_Change()

'Vérifier si du texte a été saisi dans la liste déroulante
If CB1_F_Essai <> "" Then

'Vérifier si le texte dans la liste déroulante n'est pas un élément de la liste (item)
If IsError(Application.Match(CB1_F_Essai, liste_especes, 0)) Then

'Trouver les items qui correspondent à la saisie (clés) et stocker les données dans la mémoire de l'ordinateur (Dictonnaire)
Set dico = CreateObject("Scripting.Dictionary")

tampon = "*" & UCase(CB1_F_Essai.Text) & "*"

'Rechercher la correspondance avec le tampon pour chaque espèce
For Each espece In liste_especes

'Vérifier si la saisie correspond aux especes avec et sans accent et stocker les especes retenues dans le dico
If UCase(espece) Like tampon Or Texte_Sans_Accent(UCase(espece)) Like tampon Then dico(espece) = ""

Next espece

'Donner la nouvelle liste des items (especes retenues = clés) à la combobox
CB1_F_Essai.list = dico.keys

'Dérouler la combobox
CB1_F_Essai.DropDown

End If

Else

CB1_F_Essai.list = liste_especes
CB1_F_Essai.DropDown

End If

End Sub

A savoir : liste_especes est un array que je fais au moment de l'initialisation de mon formulaire

Rechercher des sujets similaires à "empecher saisie auto premier item intuitive"