Continuons l'exploration des possibilités offertes par les nouvelles fonctions Excel 365.
Aujourd'hui, nous souhaitons filtrer une listbox au fur et à mesure de la saisie dans un textbox. L'idée est bien entendu de réduire la liste au fur et à mesure de la saisie, et donc de permettre une "saisie intuitive".
Avec Excel 365, c'est très simple, puisque cette version expose les fonctions TRIER et FILTRE.
Voici un userform muni de deux contrôles, tboCapture pour la saisie intuitive, et lboContacts qui contiendra la liste des contacts qui correspondent à la saisie. L'exemple exposé ici permet de filtrer la liste sur les prénoms qui contiennent la saisie, où que cette saisie se trouve dans le prénom.
Filtre renvoie une plage dynamique dans Excel et un array dans VBA. Voici l'exemple d'une plage dynamique renvoyée par Filtre
En utilisant cette formule dans Evaluate, on peut récupérer le tableau correspondant.
A l'initialisation du userform, on remplira la liste avec le tableau complet trié. Evaluate permet de restituer la valeur évaluée de l'argument passé. Si l'on passe une formule à Evaluate, cette dernière renvoie donc le résultat de la formule.
Sur l'évènement Change de tboCapture, on utilisera Evaluate pour recevoir l'array trié grâce à la formule évaluée. il faudra simplement tester que la saisie renvoie bien un array. Dans le cas contraire, c'est-à-dire lorsque la saisie ne correspond à aucun prénom, on videra simplement la liste.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité,
merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.