Liste déroulante avec saisie semi automatique

Bonjour à tous,

je suis bloqué par un problème qui est expliqué dans le titre.

Dans le fichier joint, je souhaiterais que sur la feuille test je puisse avoir une saisie semi auto sur Nom/Prénom.

Actuellement, j'ai sur une liste déroulante simple mais ce serait plus rapide de pouvoir taper quelques caractères.

je viens de chercher sur plusieurs forums et à chaque fois que j'essaye d'incorporer la fonction DECALER ca ne fonctionne pas.

Merci de votre aide

Bonjour,

Solution macro que j'ai eu l'occasion de réaliser il y a peu de temps...

Option Compare Text

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim tx$, i%, j%
    If Target.Address = "$F$3" Then
        ThisWorkbook.Names.Add "ListA", "=Liste"
        If Target.Value <> "" Then
            tx = Target & "*"
            With [Liste]
                For i = 1 To .Rows.Count
                    If .Cells(i, 1) Like tx Then Exit For
                Next i
                If i <= .Rows.Count Then
                    Do While .Cells(i + j, 1) Like tx
                        j = j + 1
                    Loop
                    ThisWorkbook.Names.Add "ListA", "=OFFSET(Liste," & i - 1 & ",," & j & ")"
                    Application.EnableEvents = False
                    If j = 1 Then Target = .Cells(i, 1)
                    Application.EnableEvents = True
                    Exit Sub
                End If
            End With
        End If
    End If
End Sub

La macro est très proche de la solution formule. Dans les 2 cas tu nommes la liste de base (ici nommée Liste), de préférence en dynamique si elle peut varier. La liste doit être triée par ordre alpha. Tu décoches dans la validation la case Quand des données non valides sont tapées. Dans la version macro, tu crées un 2e nom (ici ListA) que tu définis au départ =Liste. Et en validation tu mets =ListA. La macro définit les éléments de Liste correspondant à ta frappe initiale et redéfinit ListA avec une formule DECALER...

En formule, c'est la même formule DECALER que tu tapes comme validation. C'est donc quasi identique...

Petit avantage pour la macro : si un seul item correspond à ta frappe initiale, elle l'affecte avant que tu aies besoin de le sélectionner dans la liste résiduelle (ce que la formule ne peut faire !)

Par contre il conviendrait de normaliser ta liste sous la forme : NOM Prénom. Elle comporte des anomalies à cet égard.

Possibilités supplémentaires qui peuvent s'ajouter : Tri de la liste en cas d'ajout ou modification (déclenchement manuel ou automatique). [autre petite macro à faire]

Décochage des cases à cocher lors de changement en F3 : ça c'est à ajouter dans la macro.

Cordialement.

Bonsoir,

Vraie saisie intuitive type Google.

Private Sub ComboBox1_Change()
 If Me.ComboBox1 <> "" Then
  Set d1 = CreateObject("Scripting.Dictionary")
  clé = UCase(Me.ComboBox1) & "*"
  For Each c In Sheets("liste employé").[Liste]
    If UCase(c) Like clé Then d1(c.Value) = ""
  Next c
  Me.ComboBox1.List = d1.keys
  Me.ComboBox1.DropDown
  [F3] = Me.ComboBox1
 End If
End Sub

Private Sub ComboBox1_DropButtonClick()
  ComboBox1.List = Sheets("liste employé").Range("liste").Value
End Sub

Pour une recherche par le prénom : clé = "*" & UCase(Me.ComboBox1) & "*"

Ceuzin

Bonjour,

ca marche nickel merci a vous deux.

Je vais essayer la saisie intuitive google pour un autre fichier

Merci encore

Donc je viens d'essayer la saisie intuitive et c'est ce qu'il me fallait.

C'est parfait sauf que je n'arrive pas à récupérer la valeur de la combobox .

Je souhaiterais que la valeur soit retournée dans une variable en string.

Comment faire?

Rechercher des sujets similaires à "liste deroulante saisie semi automatique"