Combobox avec saisie intelligente ?

Bonjour, j'utilise des listes déroulantes dans un formulaire (combobox) avec MatchEntry sur 1 ça me permet de pré-saisir une donnée de la liste et d'aller plus vite, sauf que je voudrais savoir si il est possible lorsque on saisie sur le clavier le deuxième mot de cette donnée :

exemple dans ma liste:

Abeille

Top deux

Top Trois

Top Quatorze

Actuellement si je veux sélectionner Top Quatorze je dois commencer à taper Top puis finir avec l'ascenseur pour sélectionner manuellement Top Quatorze.

Je voudrais taper Quatorze et que Top Quatorze apparaisse dans la combobox ...Est ce possible ?

Merci et bonne journée @ tous.

Bonjour,

Une piste à améliorer car un peu bancale mais à voir si éventuellement elle te conviendrait :

Private Sub ComboBox1_Change()

    Dim I As Integer
    Dim J As Integer

    For I = 0 To ComboBox1.ListCount - 1

        If ComboBox1.List(I) Like "*" & ComboBox1.Text & "*" Then

            For J = 1 To Len(ComboBox1.List(I))

                If Mid(ComboBox1.List(I), J, 1) = ComboBox1.Text Then

                    ComboBox1.Text = Left(ComboBox1.List(I), J)
                    Exit Sub

                End If

            Next J

        End If

    Next I

End Sub

Bonjour, Theze oui effectivement un peu bancale lol, je vais essayé de l'améliorer mais c'est pas gagné ...

Bonjour,

Exemples de saisie intuitive type Google avec ComboBox ( la liste se réduit au fur et à mesure de la frappe des caractères).

La propriété MatchEntry du ComboBox doit être positionnée à frmMatchEntryNone

http://boisgontierjacques.free.fr/fichiers/DonneesValidation/DVSaisieIntuitiveComboBox.xls

http://boisgontierjacques.free.fr/fichiers/DonneesValidation/ListeIntuitive5.xls

http://boisgontierjacques.free.fr/fichiers/DonneesValidation/ListeIntuitiveFormulaireFilter.xls

Boisgontier

Bonsoir Boisgontierjacques ,

tes exemples sont super intéressants, je les sauvegarde direct !!!

J'ai opté pour cette solution :

Private Sub ComboBox1_Change()
Dim a()
  a = Application.Transpose([liste])
  Me.ComboBox1.List = a

 If Me.ComboBox1.ListIndex = -1 And IsError(Application.Match(Me.ComboBox1, a, 0)) Then
   Me.ComboBox1.List = Filter(a, Me.ComboBox1.Text, True, vbTextCompare)
   Me.ComboBox1.DropDown

End Sub

ça fonctionne très bien la seule petite amélioration serait que la première ligne de la liste déroulante de la combobox soit surligné en bleu de telle manière que dés que je fais entrée cette valeur soit pris en compte dans la combobox.

Là je suis obligé même si il reste qu'une valeur dans la liste déroulante de faire flèche du bas puis entrée... une idée ?

En tout cas un grand merci @ vous deux.

Bonjour,

Il suffit d'inscrire le mot quand il n'en reste plus qu'un seul dans la liste :

Private Sub ComboBox1_Change()

    With ComboBox1

        If .ListIndex = -1 And IsError(Application.Match(.Text, a, 0)) Then

            .List = Filter(a, .Text, True, vbTextCompare)
            If .ListCount = 1 Then .Text = .List(0)

        Else

            ActiveCell = Application.Proper(.Text)

        End If

    End With

End Sub

Bonjour, super ! merci

C'est résolu.

Bonne Journée ...

Rechercher des sujets similaires à "combobox saisie intelligente"