Les listes déroulantes (outils Formulaire) permettent maintenant de se déplacer dans les entrées au fur et à mesure de la saisie ce qui représente une sympathique amélioration.
Un utilisateur du forum voulait aller plus loin : Que les entrés de la liste soient filtrées si elles ne contenaient pas la saisie.
Liste servant d'exemple
Une liste de 36 000 communes françaises (Tab_Communes).
Solution proposée
Utilisation d'une liste déroulante de type ActiveX (les liste de type Formulaire n'autorisant pas la saisie) présente dans le ruban Développeur.

Préparation des données servant pour les entrées de la liste (Propriété ListFillRange de la liste).
Dans une feuille masquée (ici ListesDéroulantes), on place la formule suivante en C3 par exemple.
=FILTRE(Tab_Communes[Libellé de la commune];
ESTNUM(CHERCHE(C1;Tab_Communes[Libellé de la commune]));
"Pas de correspondance")
Interprétation de la formule
- La fonction CHERCHE donne la position où est trouvé le texte ou bien un erreur #VALEUR!
- La fonction ESTNUM convertit les positions en VRAI et les #VALEURS! en FAUX donnant la matrice Inclure de la fonction FILTRE.
On contrôle qu'en saisissant un texte en C1 la fonction en C3 renvoie bien la liste Tab_Communes filtrée.
On définit un nom (ruban Formules>Définir un nom) correspondant à cette table dynamique, ici PlageListe1.
On fait référence à la table dynamique en C3 (en n'oubliant pas le # à la fin).
Voir Comment faire référence à toute la plage de résultat ?

On contrôle que le nom PlageListe1 renvoie bien la plage en saisissant la formule =PlageListe1 dans une cellule ayant assez de place en dessous pour afficher tous les résultats (Cellule à effacer ensuite).
Paramétrage de la liste
On active le Mode Création dans le ruban Développeur (1).
On sélectionne la liste et on affiche ses propriétés (2).

On paramètre les propriétés suivantes :
- MatchEntry : 2-fmMatchEntryNone
- LinkedCell : ListesDeroulantes!$C$1
- ListFillRange : PlageListe1

Test de la liste
On désactive le Mode Création dans le ruban Développeur.
Malheureusement ce n'est pas suffisant. La recherche fonctionne mais si l'on utilise la barre de défilement, on aperçoit une répétition des éléments (problème de mise à jour ?).
Ajout de 2 lignes de VBA
On active le Mode Création dans le ruban Développeur.
Clic droit sur la liste > Visualiser le code.
Ajouter les 2 lignes centrales.
Private Sub ComboBox1_Change()
ComboBox1.ListFillRange = "PlageListe1"
ComboBox1.DropDown
End Sub
Ainsi la liste devrait mieux fonctionner.

Rappel : Il faudra enregistrer le fichier en .xlsm (Classeur prenant en charge les macros).
Merci pour votre attention bienveillante.