XL 2013 VBA : récupérer les valeurs de la liste déroulante du filtre automatique

dionys0s

XLDnaute Impliqué
Bonjour le forum,

je bute sur la chose suivante : j'aimerais récupérer la liste des valeurs proposées dans la liste déroulante d'une colonne de filtre automatique.
Je précise qu'il ne s'agit pas seulement de mettre la liste des valeurs uniques d'un champ dans une liste (ça je sais faire), mais bel et bien la liste des valeurs proposées dans la liste du filtre automatique. Comme le montre l'exemple dans mon petit classeur, une fois qu'on a filtré une colonne, les valeurs proposées dans la liste déroulante du filtre automatique dans une autres peuvent être différentes de la configuration initiale.

En l'espèce, dans mon exemple, quand on filtre les deux colonnes avec la valeur "Accra", le premier champ passe de 9 à 6 valeurs proposées, et le deuxième de 12 à 2.
Je m'arrache la tête sur cette histoire, s'il quelqu'un peut m'orienter, ce serait super.

D'avance, merci pour votre aide !

Edit : j'ai trouvé une page en anglais qui décrit mon besoin très précisément : après une succession de filtrages sur différents champs d'un tableau, la liste déroulante d'un champ n'est PAS seulement la liste des valeurs uniques visibles dudit champ après filtrage, mais la liste des valeurs uniques qui auraient été disponibles si le filtre de ce champ était réinitialisé "(sélectionner tout)" alors que les filtres des autres champs seraient toujours activés. Malheureusement, aucune solution n'a été apportée sur ladite page...
 

Pièces jointes

  • Liste déroulante autofilter.xlsx
    10.2 KB · Affichages: 26
Dernière édition:

dionys0s

XLDnaute Impliqué
Bonjour le forum,
bonjour patricktoulon,

pour la petite histoire, j'ai quand même développé l'usine à gaz qui permet en gros de filtrer un tableau à l'aide de ComboBox qui sont le reflet des listes déroulantes du filtre automatique du tableau.
Mais si une solution élégante émerge, je suis preneur.
 

patricktoulon

XLDnaute Barbatruc
re
oui tu n'est pas le premier a tenter un truc du genre mais c'est loin d’être a la hauteur de ce qui est interne a excel
d'ailleurs il y a d'autres paramétrés , je pense notamment au date ou les filtre propose non pas des liste mais plutôt un truc du genre treeview
 

dionys0s

XLDnaute Impliqué
Re,

Tu as raison, je ne reproduis pas du tout l'intégralité des possibilités du filtrage auto. En l'occurrence, c'est vraiment un besoin spécifique : des listes en cascades "multidirectionnelles" (pas d'ordre obligatoire de saisie) pour une valeur exacte par champ de filtrage proposé, sans accès à la base originelle. Ce sont des ComboBox dans un onglet à part qui permettent de filtrer en cascade. Mais ce cas "simple" est reproduisible de la façon suivante : à l'initialisation de l'onglet de filtrage, on initialise les listes des ComboBox avec valeurs uniques du champ associé. Par ailleurs, pour chaque ComboBox, je garde en mémoire la valeur du dernier critère appliqué, vbNullString à l'initialisation donc. Puis lorsqu'on change la valeur d'un ComboBox (événement _Change)
  • Si la valeur du ComboBox est égale au dernier critère, on n'a rien à faire (Exit Sub).
  • On actualise la valeur du critère.
  • Si le critère est différent de vbNullString, on applique le filtre, sinon on "libère" le filtre (équivalent de "(sélectionner tout)" de la liste déroulante)
  • Pour chaque ComboBox qui n'est pas celui que l'utilisateur a modifié
    • si le champ associé n'est pas filtré, on actualise les valeurs uniques triées du ComboBox. Dans le cas contraire :
      • on libère le filtrage du champ
      • on actualise les valeurs uniques triées du ComboBox
      • on restaure le filtrage du champ
Je joins un petit classeur exemple avec 1600+ lignes et 5 colonnes de filtre. Si vous avez des suggestions d'amélioration, je suis toute ouïe !

Bonne journée à tous
 

Pièces jointes

  • Listes en cascade multidirectionnelles.xlsm
    97.1 KB · Affichages: 24

Discussions similaires

Statistiques des forums

Discussions
311 709
Messages
2 081 769
Membres
101 816
dernier inscrit
Jfrcs