Re : Liste conditionnelle
Listes déroulantes filtrées par les premiers caractères saisis
Rebonjour,
J'ai trouvé quelque chose d'intéressant
et je fais passer l'info, pour ceux que ça intéresse :
Voyez ce mode opératoire :
"Liste déroulante avec saisie semi automatique pour EXCEL"
Liste déroulante avec saisie semi automatique pour EXCEL - La solution
(Ce n'était peut-être pas Laurent Longre qui avait publié une astuce comme celle-là pour filtrer les listes de
Données Validation en fonction de la frappe, je ne sais plus...)
L'idée consiste à
placer une formule dans le champ 'Source de la liste' de
Données Validation :
(A1 étant la cellule qui va afficher la liste déroulante, celle dont on assiste la saisie avec
Données Validation)
=SI(A1<>"";DECALER(premier_item;EQUIV(A1&"*";liste_items;0);;SOMME((STXT(liste_items;1;NBCAR(A1))=TEXTE(A1;"0"))*1));liste_items)
où
liste_items et
premier_item sont deux
noms dynamiques (calculés avec DECALER), ce qui permet d'outrepasser l'interdiction d'Excel d'utiliser des cellules externes dans
Données Validation (truc indispensable depuis Excel 2003).
Quand la liste de référence est interminable, on fait là un grand progrès par rapport aux listes déroulantes de base d'Excel (qui, rappelons-le, n'accepte même pas, pour alimenter les listes, de source extérieure au classeur, sans utiliser de complexes noms dynamiques, honte à lui
________________
Faiblesses résiduelles (si quelqu'un a une idée d'amélioration, je suis très intéressé) :
• Avec la formule ci-dessus,
quand l'opérateur commence à saisir les premières lettres, il ne se passe rien. Ce n'est qu'en cliquant sur la flèche que la liste (filtrée) apparaît. Et il faut cliquer sur un choix pour le sélectionner.
Dans d'autres interfaces plus confortables (les listes déroulantes d'Access sont exemplaires),
le champ saisi (ou la liste, si elle a été déroulée) s'actualise tout seul dès la première frappe, et ensuite, continue à s'actualiser au fur et à mesure de la frappe... Puis, Entrée valide et passe au champ suivant, sans avoir besoin de pointer le choix si ce choix est évident.
Je ne sais pas si cet effet (très souvent nécessaire) est possible avec Excel, mais ce serait vraiment un gros progrès dans l'ergonomie des classeurs où la saisie doit être assistée et contrôlée.
• Avec la formule ci-dessus,
ALT BAS (qui est la procédure habituelle au clavier pour dérouler les listes sans avoir à prendre sa souris, prise de souris qui ralentit beaucoup les mains agiles qui connaissent bien leur clavier)
est HS, ce qui est un beau bug.
{Correctif : si on valide avec Entrée la saisie des premiers caractères (ce qui n'est possible qu'en désactivant complètement le contrôle de saisie), ALT BAS fonctionne alors comme d'habitude.}
• Le mode opératoire ci-dessus indique de
désactiver le contrôle de saisie (onglet
Alerte d'erreur, décocher
'Quand des données non valides sont tapées'), ce qui fait perdre une grande partie de l'intérêt de
Données Validation
Pour ma part, j'ai gardé un contrôle doux, tolérant une erreur mais en la signalant (je choisis le
Style 'Information' dans le même onglet
'Alerte d'erreur' de
Données Validation), mais cela donne
une ergonomie critiquable car Excel affiche un message d'erreur alors que la saisie n'est pas encore achevée (l'opérateur peut se dire : "Quelle erreur ? Qu'est-ce qu'il me veut, ce tas de ferraille ? Il ne peut pas réfléchir un peu ?" ).
• Enfin, avec la formule ci-dessus,
la liste n'affiche que les items qui commencent par la chaîne déjà saisie, alors que l'opérateur ne sait souvent pas du tout par quel mot
commence ce qu'il cherche ; il sait à la rigueur un mot
contenu dans l'item cherché, ce n'est déjà pas si mal... :
idéalement, il faudrait que, pendant qu'il tape, la liste s'actualise en dessous en retenant tous les items qui contiennent la chaîne qu'il a déjà saisie.
_________________
En tout cas, merci pour tout
Étienne.
Mémentos et outils pour Windows, Excel et Word