Vérifier si pas de filtre actif [Résolu]

Messages postés
61
Date d'inscription
vendredi 9 novembre 2007
Dernière intervention
28 octobre 2011
- - Dernière réponse : cs_Jack
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Dernière intervention
28 août 2015
- 8 oct. 2010 à 17:40
Bonjour à tous,

Je n'arrive pas à trouver en VBA le code qui vérifie si un filtre de colonne est actif.
Pour tous les enlever pas de pb, mais si je fais
ActiveSheet.ShowAllData et que je n'ai pas de filtre actif il me met une erreur.
J'aimerais l'éviter.

Merci de vos réponses,

Zeps ;-))
Afficher la suite 

Votre réponse

9 réponses

Meilleure réponse
Messages postés
1839
Date d'inscription
vendredi 13 mai 2005
Dernière intervention
20 novembre 2013
1
Merci
Salut,

sinon pour simplifier tu peux aussi faire comme ceci:

On Error Resume Next
ActiveSheet.ShowAllData
On Error Goto 0


Par contre pour ta 2ieme question:
J'aimerais l'éviter.


On ne peu pas faire grand chose pour toi ici... il te faudra passer quelques années avec des moines tibétain

Vlamm ! (sortie)

Merci bigfish_le vrai 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 103 internautes ce mois-ci

Commenter la réponse de bigfish_le vrai
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Dernière intervention
28 août 2015
0
Merci
Salut

Je n'ai fait que mettre en pratique l'exemple fourni dans l'aide de AutoFilter :
    Dim r As Long, mFilter As AutoFilter
    If ActiveSheet.AutoFilterMode Then
        Set mFilter = ActiveSheet.AutoFilter
        With mFilter
            Debug.Print .Filters.Count & " colonnes filtrées"
            For r = 1 To .Filters.Count
                Debug.Print "   Le filtre sur la colonne " & CStr(r) & " est " & .Filters(r).On,
                If .Filters(r).On Then
                    Debug.Print "Critère 1 " & .Filters(1).Criteria1
                Else
                    Debug.Print
                End If
                
            Next r
        End With
    End If

Tu vois donc qu'il te suffit de lire l'état logique de .On sur la colonne de ton choix pour savoir s'il est filtré ou pas.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Commenter la réponse de cs_Jack
Messages postés
61
Date d'inscription
vendredi 9 novembre 2007
Dernière intervention
28 octobre 2011
0
Merci
merci Jack de ta réponse.
Mais j'ai 2 questions :

- Comment actives tu l'aide de AutoFilter?
- Je ne veux pas avoir l'info de la colonne, je souhaites que quelque soit la config, soit il me supprime le (les) critère(s)actif (ActiveSheet.ShowAllData), soit il ne me met pas de message d'erreur si pas de critère actif.

Zeps
Commenter la réponse de cs_zeps2
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Dernière intervention
28 août 2015
0
Merci
Pour l'aide ?
Bah tu tapes le mot AutoFilter n'importe où dans ta page de code et tu appuies sur la touche F1.

Pour la seconde partie : si tu as analysé le code, tu vois :
- que l'on connait le nombre de colonne appartenant à l'auto-filtrage
- qu'il te faut scruter chaque colonne pour savoir si elle est .On ou pas.
Commenter la réponse de cs_Jack
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Dernière intervention
28 août 2015
0
Merci
Non, suffirait qu'il sache lire posément les réponses :
    If ActiveSheet.AutoFilterMode Then
qui conditionnerait le
    ActiveSheet.ShowAllData
et le tour serait joué.
Commenter la réponse de cs_Jack
Messages postés
61
Date d'inscription
vendredi 9 novembre 2007
Dernière intervention
28 octobre 2011
0
Merci
Bigfish, ton code me va bien.
Merci à Jack, mais tu ne réponds pas à mon besoin ==> pas de message d'erreur si aucun filtre "actif".

Pour les tibétains, faut savoir qu'il n'ont jamais rien éviter, c'est juste les champignons qu'ils prenaient qu'il leur faisait croire à une lévitation.
Alors pour la cueillette, j'ai juste besoin de la soirée.....
Commenter la réponse de cs_zeps2
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Dernière intervention
28 août 2015
0
Merci
Si, ton besoin étant d'éviter les erreurs, le meilleur moyen est de questionner les objets avant de vouloir les utiliser. C('est exactement le but du If de ma dernière réponse.
Commenter la réponse de cs_Jack
Messages postés
1839
Date d'inscription
vendredi 13 mai 2005
Dernière intervention
20 novembre 2013
0
Merci
Juste un petit message pour soutenir la solution de jacK que je considère, être la plus propre( si tenté que ma considération ait une valeur ).

A+
Commenter la réponse de bigfish_le vrai
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Dernière intervention
28 août 2015
0
Merci
Rrhooo, l'autre, hé
Pauv'ti bonhomme .
Mais si, elle a une valeur, la même que tout et chacun.
Tous les points de vue se discutent.

Tiens, on pourrait faire une émission qui s'appellerait "ça se discute", teins, pas bête ...
Commenter la réponse de cs_Jack

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.