0
(0)

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.

Excel Création Liste déroulante avec recherche

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 ?

Excel Création Liste déroulante avec recherche

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).

Excel Création Liste déroulante avec recherche

On paramètre les propriétés suivantes :

  • MatchEntry : 2-fmMatchEntryNone
  • LinkedCell : ListesDeroulantes!$C$1
  • ListFillRange : PlageListe1
Excel Création Liste déroulante avec recherche

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.

Excel Création Liste déroulante avec recherche

Rappel : Il faudra enregistrer le fichier en .xlsm (Classeur prenant en charge les macros).

Merci pour votre attention bienveillante.

Article intéressant ?

Cliquez sur une étoile pour noter cet article !

Note moyenne 0 / 5. Nombre de votes : 0

Aucun vote pour l'instant ! Soyez le premier à noter ce post.

Nous sommes désolés que cet article ne vous ait pas été utile !

Améliorons cet article !

Dites nous comment nous pouvons améliorer cet article ?

Publications similaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *