Lister les critères actifs
Celio
-
Celio -
Celio -
Bonjour à tous,
Après avoir écumé, sans succès, les forums pour trouver une réponse, je me permets de poster ma requête.
Pour préciser un peu le titre, et donc ma question, j'aimerais trouver l'astuce pour lister, dans une MsgBox, les filtres actifs et les critères correspondants d'un tableau.
Exemple:
Filtre actif sur "Colonne 1", critère filtrant "JAUNE"
Filtre actif sur "Colonne 6", critère filtrant "CAMION".
Etc.
En vous remerciant d'ores et déjà pour votre aide.
Belle journée à tous.
Après avoir écumé, sans succès, les forums pour trouver une réponse, je me permets de poster ma requête.
Pour préciser un peu le titre, et donc ma question, j'aimerais trouver l'astuce pour lister, dans une MsgBox, les filtres actifs et les critères correspondants d'un tableau.
Exemple:
Filtre actif sur "Colonne 1", critère filtrant "JAUNE"
Filtre actif sur "Colonne 6", critère filtrant "CAMION".
Etc.
En vous remerciant d'ores et déjà pour votre aide.
Belle journée à tous.
A voir également:
- Lister les critères actifs
- Lister les disques cmd - Guide
- Triez cette liste par ordre alphabétique des villes et par note de la meilleure à la moins bonne. quel mot est formé par les 8 premières lettres de la colonne code ? ✓ - Forum Excel
- Ajoutez à la liste de contacts ana le goff, inscrite le 27 novembre 2015, dans la catégorie i. puis triez les contacts en les classant : par ordre alphabétique de leur nom de famille (critère principal), puis par date du plus récent au plus ancien (critère secondaire). quel mot apparaît à la verticale dans la colonne "catégorie" entre les lignes 200 et 209 (en-tête compris) ? ✓ - Forum Excel
- Ordre alphabetique sous word ✓ - Forum Word
- Tous les code possible de 0 à 9 (4 chiffres ) liste - Forum Jeux vidéo
1 réponse
Bonjour,
Tu dois pouvoir utiliser une fonction de ce genre
Et pour l'utiliser...
Tu dois pouvoir utiliser une fonction de ce genre
' r = plage de cellules à vérifier (si le titre de tes colonnes filtrées se trouve en A1:E1 par exemple)
Function getFilters(r As Range) As String
Dim Sh as WorkSheet
Dim strFiltres as String
Set Sh = ActiveSheet
strFiltres = ""
'Si le mode "filtre" est activé sur la feuille
If Sh.FilterMode Then
'On boucle sur les filtres pour voir ceux qui sont actifs
For i = 1 To Sh.AutoFilter.Filters.Count
If Sh.AutoFilter.Filters(i).On Then
strFiltres = strFiltres & r(i).Value & ", "
End If
Next i
'On supprime la dernière virgule
strFiltres = Left(strFiltres, Len(strFiltres) - 2)
End If
'on retourne le resultat
getFilters = strFiltres
End Function
Et pour l'utiliser...
listeFiltres = getFilters(Range("A1:E1"))
Merci beaucoup pour cette prompte réponse.
Je ne suis malheureusement qu'un bricoleur sur VBA, je n'ai donc sans doute pas toutes les connaissances nécessaires à la bonne application de votre solution. Je vous prie de m'excuser pour cela.
Voilà ce que j'ai fait:
J'ai créé un module pour y coller votre fonction.
Puis j'ai appelé cette fonction dans mon code ainsi:
MsgBox listeFiltres = getFilters(Range("A1:Z1"))
Le message renvoyé est ou "Faux" ou "Vrai, selon que, respectivement, mon tableau est filtré ou non.
Merci encore pour votre aide. Bien à vous.
Celio
listeFiltres = getFilters(Range("A1:Z1")) MsgBox listeFiltresPremière partie résolue.
Le critère filtrant est-il aussi affichable selon vous?
Si je reprends mon exemple, le résultat renvoyé est actuellement:
Colonne 1, Colonne 6
Peut-on obtenir:
Colonne 1, critère filtrant "JAUNE"
Colonne 6, critère filtrant "CAMION"
(A noter que plusieurs critères peuvent filtrer la Colonne 1 (Exemple: "JAUNE", mais aussi "BLEU")).
Encore merci pour votre aide. C'est la classe, je n'avais rien trouvé jusqu'ici.
Celio