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,
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
- Messages
- 827
- Excel
- 2007 FR
- Inscrit
- 17/12/2018
- Emploi
- Technicien maintenance robot Retraité
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
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.
Salutations
je n'ai touché a rien dans ton fichier (brut de téléchargement !!)
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