Liste déroulante avec un préfiltre automatique ?

Bonjour le forum,

J'ai une question pour laquelle j'espère que vous pourrez m'aider.
Dans le fichier ci-joint, j'ai un formulaire pour le déménagement de collaborateurs, avec un local de départ et un local d'arrivée.

J'ai créé une liste déroulante basée sur une liste de locaux dans les cellules B3, C3, B7, C7, etc. Est-il possible que lorsque je déroule cette liste, elle se préfiltre automatiquement ? Par exemple, lorsque je saisis "A", seuls les locaux commençant par "A" s'affichent ?

J'ai une liste de 300 locaux et il est fastidieux de trouver un local dans la liste déroulante lorsque l'on a des centaines de locaux.

Merci d'avance pour votre aide.

Cordialement,

20essai-v01.xlsm (15.55 Ko)

Bonjour à tous,
Ta version est a jour ?

quand j'ecris a en b3 (b3 vide) la liste des a s'affiche et inl ne reste qu'a choisir, meme pas besoin de cliquer dans la fleche.

Crdlmt

Bonjour,

Je vous remercie pour votre message.

J'utilise Excel 365 et j'ai rencontré un problème avec les listes déroulantes.

Lorsque j'écris le texte « A » dans une cellule où une liste déroulante est présente, Excel affiche un message d'erreur.

Pour contourner ce problème, j'ai essayé d'utiliser un code VBA (ci-dessous) pour vérifier si le texte saisi dans une cellule est présent dans une plage spécifique. J'ai également utilisé ce code VBA pour mettre en évidence en rouge les cellules contenant un texte différent de celui présent dans la plage spécifiée. Cependant, ce code VBA ne fonctionne plus avec Excel 365. J'aimerais comprendre pourquoi.

Pouvez-vous m'aider à résoudre ce problème ?

Merci.

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rngLocaux As Range
    Dim cell As Range
    Dim isFound As Boolean

    ' Spécifiez la plage des locaux dans l'onglet Données
    Set rngLocaux = Sheets("Données").Range("C2:C8")

    ' Vérifiez si la cellule modifiée est E19
    If Not Intersect(Target, Me.Range("B3")) Is Nothing Then
        isFound = False
        ' Parcours des locaux pour vérifier si la valeur existe
        For Each cell In rngLocaux
            If cell.Value = Target.Value Then
                isFound = True
                Exit For
            End If
        Next cell

        ' Si la valeur n'est pas trouvée, appliquez la mise en forme
        If Not isFound And Target.Value <> "" Then
            With Target
                .Interior.Color = RGB(255, 0, 0) ' Rouge
                .Font.Color = RGB(255, 255, 255) ' Blanc
            End With
        Else
            ' Sinon, réinitialisez la mise en forme
            With Target
                .Interior.ColorIndex = xlNone
                .Font.ColorIndex = xlAutomatic
            End With
        End If
    End If
End Sub

Bonjour,

Je vous remercie pour votre message.

J'utilise Excel 365 et j'ai rencontré un problème avec les listes déroulantes.

Lorsque j'écris le texte « A » dans une cellule où une liste déroulante est présente, Excel affiche un message d'erreur.

Si c'est de ce message que tu parles alors procède de cette façon

forum

Slts

Bonjour,

Je te remercie pour ton aide.
Je regrette, mais je ne peux pas filtrer correctement, par exemple en saisissant "C-", lorsque je déroule la liste, je vois tous les numéros, et je voudrais uniquement voir ceux qui commencent par "C-", et cela au fur et à mesure que je saisis. Il est dommage que cette possibilité n'y soit pas par defaut.

image

Salutations

je n'ai touché a rien dans ton fichier (brut de téléchargement !!)

6tuto.zip (156.35 Ko)

Je constate que cela fonctionne correctement pour vous.

Par ailleurs, j'utilise actuellement une formule RECHERCHEV(ci-dessous) pour remplir automatiquement les champs "Nom" et "Prénom" en fonction du code du collaborateur «1000» que je saisis dans une cellule. Cependant, j'aimerais savoir s'il est possible d'avoir l'équivalent de cette fonctionnalité en VBA. En d'autres termes, je souhaite pouvoir saisir le nom, prénom du collaborateur manuellement tout en laissant la possibilité que les champs "Nom" et "Prénom" se remplissent automatiquement quand je renseigne le bon code.

=RECHERCHEV(G7;Données!A:D;2;FAUX)

Merci d'avance

Bonjour,

Je réponds à ma demande car j'ai trouvé tout seul, pour une fois
Le remaplcement de la formule =RECHERCHEV(G7;Données!A:D;2;FAUX) par du VBA

Par contre je ne suis pas sur du code VBA mais il fait le job

Je le partage ci-dessous

Private Sub CommandButton1_Click()
    Dim ValeurRecherche As Variant
    Dim Résultat As Variant

    ' Récupérer la valeur de la cellule G7 dans l'onglet "Formulaire"
    ValeurRecherche = Me.Range("G7").Value

    ' Effectuer la recherche dans l'onglet "Données"
    Résultat = Application.VLookup(ValeurRecherche, Sheets("Données").Range("A:D"), 2, False)

    ' Vérifier si la valeur est trouvée
    If Not IsError(Résultat) Then
        ' Si la valeur est trouvée, récupérer le prénom et le nom associés
        Dim Prénom As String
        Dim Nom As String

        Prénom = Application.VLookup(ValeurRecherche, Sheets("Données").Range("A:D"), 2, False)
        Nom = Application.VLookup(ValeurRecherche, Sheets("Données").Range("A:D"), 3, False)

        ' Afficher le prénom dans la cellule C7 de l'onglet "Formulaire"
        Me.Range("C7").Value = Prénom

        ' Afficher le nom dans la cellule E7 de l'onglet "Formulaire"
        Me.Range("E7").Value = Nom
    Else
        ' Afficher un message d'erreur si la valeur n'est pas trouvée
        MsgBox "La valeur saisie n'est pas présente dans la plage A:D de l'onglet Données.", vbExclamation
    End If
End Sub

La réponse et la résolution à ma demande initiale "Liste déroulante avec un préfiltre automatique" voir le lien ci-dessous

https://forum.excel-pratique.com/excel/liste-deroulante-avec-saisie-semi-automatique-192240

Meilleures salutation

Rechercher des sujets similaires à "liste deroulante prefiltre automatique"