Les exemples de Listes Déroulantes Auto-Filtrées de type ComboBox sont multiples.
Le principe en est le suivant :
A chaque frappe d'un caractère dans la ComboBox, la liste de ses Items est actualisée (filtrée) à partir des éléments de la liste de référence à laquelle elle est associée, en accord avec le texte en cours de saisie.
La sélection d'une valeur est alors grandement facilitée, particulièrement si la liste de référence est longue.
Voici une solution avec pour principale caractéristique un filtrage selon 3 modes possible.
La mise en œuvre est très rapide, avec un paramétrage très simple (5 paramètres à renseigner dans un module VBA)
Le nombre de ComboBox par feuille n’est pas limité (dans cette 2ème version).
Les 3 modes de filtrage
Voir les exemples de Mode de Filtrage sur la feuille "Exemples" et "Option PROCHE"
La mise en Œuvre
Certaines Touches de Fonctions sont reprogrammées (dans le contexte ComboBox) :
Pour les touches de fonction suivantes, j'ai conservé l'action standard :
Si plusieurs cellules sont sélectionnées, la saisie par ComboBox est inactivée (invisible). La saisie dans les cellules sous-jacentes n'est cependant pas bloquée. Ceci afin de permettre des actions globales comme l'effacement du contenu d'une plage, la suppression de lignes...
Les Éléments du Code VBA
Le module Module_Gestion_ComboBox
contient tout le code associé à la Gestion des ComboBox, notamment, 4 macros appelés systématiquement par les feuilles avec saisie par ComboBox, et, dans sa partie Déclarations, les Informations de paramétrage des ComboBox du classeur.
Le module Module_Proche
contient tout le code associé au Mode Proche. Inspiré d'un code de Jacques Boisgontier.
Le module Module_ZAuCasOu
contient une unique macro Sub AuCasOu() à exécuter quand plus rien ne va !, par exemple quand les événements ne soient plus détectés ou que la gestion des ComboBox est désactivée. Cela arrive parfois en cas d’erreur technique ou en Mode Debug arrêté manuellement.
Contrainte Technique
La référence "Microsoft Scripting Runtime" doit être activée (Dans l'éditeur VBA : Outils -> Référence) .
Versions
V1 : Version Initiale
V2 : Gestion de plusieurs ComboBox dans une même feuille. Améliorations diverses
V3 : 2 corrections (marquées V3 dans le code VBA)
Merci de me signaler les anomalies.
Le principe en est le suivant :
A chaque frappe d'un caractère dans la ComboBox, la liste de ses Items est actualisée (filtrée) à partir des éléments de la liste de référence à laquelle elle est associée, en accord avec le texte en cours de saisie.
La sélection d'une valeur est alors grandement facilitée, particulièrement si la liste de référence est longue.
Voici une solution avec pour principale caractéristique un filtrage selon 3 modes possible.
La mise en œuvre est très rapide, avec un paramétrage très simple (5 paramètres à renseigner dans un module VBA)
Le nombre de ComboBox par feuille n’est pas limité (dans cette 2ème version).
Les 3 modes de filtrage
- Commence par
La Liste contient tous les éléments de la Liste de référence qui commencent par les caractères saisis dans la ComboBox (ignore la casse).
La Liste est présentée dans l'ordre de la Liste de Référence - Contient
La Liste contient tous les éléments de la Liste de référence qui contiennent la chaine des caractères saisis (ignore la casse).
La Liste est présentée dans l'ordre de la Liste de Référence - Proche
La Liste contient tous les éléments de la Liste de référence qui se rapprochent de la chaine des caractères saisis (ignore la Casse, les caractères accentués, les caractères non alphanumériques)
La Liste est présentée par niveau de ressemblance décroissant. Ce mode est détaillé dans la feuille "Option PROCHE".
Voir les exemples de Mode de Filtrage sur la feuille "Exemples" et "Option PROCHE"
La mise en Œuvre
- Copier le code VBA du WorkBook du fichier (un simple appel à une procédure du module de gestion des ComboBox)
- Pour chaque feuille avec ComboBox :
- Créer une ComboBox UNIQUE (ou la à partir d’une des feuilles, par exemple Liste Déroulante 1 du fichier). A noter que certaines propriétés de la ComboBox seront modifiées dans le code VBA pour son bon fonctionnement
- Copier le Code VBA d’une des feuilles du fichier. Le Code concerne 5 événements de la feuille et pour chacun consiste à un simple appel à une procédure du module de gestion des ComboBox
- Pour chaque ComboBox :
- Donner un nom (Formules – Gestionnaire de Noms) à la plage de saisie de la ComboBox
- Donner un nom (Formules – Gestionnaire de Noms) à la liste de référence de la ComboBox
- Dans le module Module_Gestion_ComboBox :
- Pour chaque ComboBox, préciser les Informations de paramétrage associées (plage de saisie, liste de référence associée et mode de filtrage).
Certaines Touches de Fonctions sont reprogrammées (dans le contexte ComboBox) :
- Début : 1er élément de la liste (En standard : curseur en début de texte de l'élément courant de la liste)
- Fin : Dernier élément de la liste(En standard : curseur en fin de texte de l'élément courant de la liste)
- Entrée : Cellule de la Ligne Suivante
- Tab / Maj + Tab : Cellule de la Colonne Suivante / Précédente
Pour les touches de fonction suivantes, j'ai conservé l'action standard :
- Flèche ▲ / ▼ : Élément Précédent / Suivant de la liste
- Page Préc. / Page Suiv. : Remontée / Descente d'1 page dans la liste. une page = nombre max de lignes à afficher dans la liste ( propriété ListRows)
Si plusieurs cellules sont sélectionnées, la saisie par ComboBox est inactivée (invisible). La saisie dans les cellules sous-jacentes n'est cependant pas bloquée. Ceci afin de permettre des actions globales comme l'effacement du contenu d'une plage, la suppression de lignes...
Les Éléments du Code VBA
Le module Module_Gestion_ComboBox
contient tout le code associé à la Gestion des ComboBox, notamment, 4 macros appelés systématiquement par les feuilles avec saisie par ComboBox, et, dans sa partie Déclarations, les Informations de paramétrage des ComboBox du classeur.
Le module Module_Proche
contient tout le code associé au Mode Proche. Inspiré d'un code de Jacques Boisgontier.
Le module Module_ZAuCasOu
contient une unique macro Sub AuCasOu() à exécuter quand plus rien ne va !, par exemple quand les événements ne soient plus détectés ou que la gestion des ComboBox est désactivée. Cela arrive parfois en cas d’erreur technique ou en Mode Debug arrêté manuellement.
Contrainte Technique
La référence "Microsoft Scripting Runtime" doit être activée (Dans l'éditeur VBA : Outils -> Référence) .
Versions
V1 : Version Initiale
V2 : Gestion de plusieurs ComboBox dans une même feuille. Améliorations diverses
V3 : 2 corrections (marquées V3 dans le code VBA)
Merci de me signaler les anomalies.
Un exemple de saisie en cours dans la ComboBox de la Feuille Liste Déroulante en Mode "Commence par"
Etat de la ComboBox pour une saisie en cours en fonction des différents Modes de Filtrage
(les caractères de filtrage sont ici surlignés en bleu pour la compréhension du Mode de Filtrage)
(les caractères de filtrage sont ici surlignés en bleu pour la compréhension du Mode de Filtrage)
- Auteur
- crocrocro
- Version
- V3