Vba Suppression de filtre [Résolu/Fermé]

Signaler
-
 Bruno64 -
Bonjour à tous,

Voila 3h que je lutte avec ma macro...
Je vais essayer d'expliquer clairement mon soucis.

Ma macro appelle une feuille nommée "recap" dans un dossier sur le reseau.
Cette fiche recap elle remplie par diverses personnes du bureau, elle est donc soumise à pas mal de manipulations.

Mon but est d'utilisée cette feuille pour effectuer des opérations et remplir ensuite Ma feuille!

Bref, la plupart du temps ma macro fonctionne trés bien, le seul soucis est lorsque les utilisateurs de la feuille récap modifient les filtres... (Ils décochent, recochent a tout va...), et moi j'ai besoin que toutes les données soient affichées pour faire mes calculs via macro.

Donc il faut que::
- Soit, je supprime les filtres (tjr en vba) pour tout afficher.
- Soit, de trouver une commande qui ignore les filtres?

Bref, je rame.
Merci de m'avoir lu, et bonne journée a tous.


Bruno.

12 réponses

Je pose tout de même la soluce finale, pour les gens qui rencontreront le même soucis d'erreur en fin de boucle.
Il suffit de rajouter un test d'erreur => next.

Ce qui donne à la fin:

Sub effacer_filtres_TCD()

Sheets("RECAP").Select
Application.ScreenUpdating = False
For Each pt In ActiveSheet.PivotTables
For Each pf In pt.VisibleFields
For Each Pi In pf.PivotItems
Pi.Visible = True
On Error Resume Next
Next Pi
Next pf
Next pt

Application.ScreenUpdating = True

End Sub

Vala!

A Bientot :)
(et encore merci a tom)
5
Merci

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

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
1219
Date d'inscription
jeudi 29 juillet 2004
Statut
Contributeur
Dernière intervention
25 novembre 2013
447
Bonjour,
pour supprimer les filtres de la page active : ActiveSheet.AutoFilterMode = False
à adapter... :)
Bonjour tompols, et merci de me répondre!

J'ai déjà essayé cette commande, mais je dois mal l'employer...
Voici un bout de mon code:

****************************************
Dim NomRep As String

Sheets("Habill").Select

NomRep = Cells(2, 1).Value
Workbooks.Open Filename:=(NomRep & "recap_mec-instrum.xls")

Sheets("Recap").Select
Sheets("Recap").Copy before:=Workbooks("synthese_MEC_instrum-2010.xls").Sheets(1)

Windows("recap_mec-instrum.xls").Activate
ActiveWorkbook.Saved = False
ActiveWorkbook.Close

Sheets("RECAP").Select
ActiveSheet.AutoFilterMode = False
*****************************************

Voila, dans ce bout de code je vais chercher ma page et je la colle dans mon classeur, ensuite je suis sencé désactiver les filtres, mais ca ne marche pas... Cela n'affiche pas d'erreurs, mais mes données restent filtrées!

Je cherche, je cherche! mais je commence a avoir des pulsions meurtrières envers mon clavier et mon écran...
Si quelqu'un a la solution (je suis sur que c'est tout con en plus)!

Bonne journée!

Bruno.
Messages postés
1219
Date d'inscription
jeudi 29 juillet 2004
Statut
Contributeur
Dernière intervention
25 novembre 2013
447
Re,
bon j'ai pas trop l'habitude de travailler avec des TCD en vba mais en me basant sur l'aide et l'explorateur d'objets j'ai fait ça :
Sub effacer_filtres_TCD()

Application.ScreenUpdating = False

For Each pt In ActiveSheet.PivotTables
    For Each pf In pt.VisibleFields
        For Each Pi In pf.PivotItems
            Pi.Visible = True
        Next Pi
    Next pf
Next pt

Application.ScreenUpdating = True

End Sub 

Ce code efface tous les filtres de tous les tcd de la feuille active, y'a surement plus simple mais je n'ai pas le temps de chercher plus pour l'instant....
Messages postés
1219
Date d'inscription
jeudi 29 juillet 2004
Statut
Contributeur
Dernière intervention
25 novembre 2013
447
Bonjour Bruno,
effectivement c'est étrange, cela fonctionne bien chez moi.
As-tu essayé d'appliquer uniquement cette ligne (ActiveSheet.AutoFilterMode = False ) sur ton fichier pour voir si le pb vient de là ?
Le Sheets("RECAP").Select te remet-il bien la feuille Recap au premier plan (en fait, tu fait un activeworkbook.close juste avant, il se peut que le active.workbook suivant ne soit pas le bon...mais ça devrait provoquer une erreur sur les sheets("RECAP").select à moins que tu aies mis un "on error resume next" quelque part avant....) ?
en conclusion, déjà tester uniquement la partie ActiveSheet.AutoFilterMode = False sur le fichier concerné, après on verra d'où peut venir l'erreur....
Messages postés
12251
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2021
2 620
Salut,
Ou alors la procédure copie/colle la feuille recap filtrée. Dans ce cas il faudrait essayer :
Sheets("Recap").Select
ActiveSheet.AutoFilterMode = False
Sheets("Recap").Copy before:=Workbooks("synthese_MEC_instrum-2010.xls").Sheets(1)
Salut a tous les deux, et encore merci de vos réponses ^^

Alors pour repondre à Tompols, effectivement j'ai intégré un "Application.DisplayAlerts = False" en début de programme pour éviter les messages d'erreur.
Ensuite j'ai testé uniquement la partie ActiveSheet.AutoFilterMode = False sur mon fichier, et ca reste bloqué -_-'

J'ai l'impression que ces satanés filtres sont verrouillés! (Est-ce possible?)


Ensuite, coucou pijaku, et merci de t'interressé a mon soucis.
Si je comprend bien ce que tu me demande de faire, c'est de faire le reset des filtres avant de copier dans mon classeur?
Si c'est ca, je ne peux malheureusment pas le faire car le fichier recap d'origine ne doit pas changer autrepart que dans mon classeur car d'autres personnes l'utilisent.

Bref ^^ j'ai passé la journée dessus, une aspirine et au lit je verrai demain!
Merci a tous les deux, passez une bonne soirée!

Bruno.
Messages postés
1219
Date d'inscription
jeudi 29 juillet 2004
Statut
Contributeur
Dernière intervention
25 novembre 2013
447
Re,
tu peux essayer ceci :
cells.select
selection.autofilter
mais je pense que le résultat sera le meme :( (à tester qd meme)
sinon, peux-tu stp mettre un exemple de fichier avec filtre "vérouillé" sur www.cjoint.com et poster le lien afin qu'on regarde ?
Re Tom,

Je viens de tester et... marche pas non plus :(
Demain je mettrai un exemple de fichier, là j'ai plus trop le tps, la neige tombe a flot et faut que je rentre avant de rester coincer dans le bureau, comdamné a faire du Vba toute la nuit! (NooOOooOOon!)

Merci encore, demain nous vaincrons! :)

Bonne soirée.

bruno.
Bonjour,

De retour avec mon soucis de filtre a la noix.

Mais les idées sont plus claire, et je viens de relever un truc important... ce ne sont pas des filtres auto, se sont les filtres d'un tableau croisé dynamique... C'est surement pour cela que ca ne fonctionne pas.

(Je ne suis pas a l'origine de ce fichier, je ne sais absolument pas comment il a été fait...)

Il faut donc que je désactive le tableau croisé, ou alors que je lui fasse afficher tout.
Des idées de comment le code en VBA?

Bonne journée! (sous la neige).

Bruno
Merrciiii Tompols,

Bon ca bug toujours, mais ca marche pour le 1er tableau, il m'affiche tout dans la première colonne, puis il plante dans sa boucle...

"Erreur d'exécution '1004':
Impossible de définir la propriété Visible de la classe PivotItem."

Enfin bon, je trouverai, tu m'as déjà bien aidé, encore merci pour le tps qui tu y as passé!

Bonne journée.

Bruno.
Messages postés
1219
Date d'inscription
jeudi 29 juillet 2004
Statut
Contributeur
Dernière intervention
25 novembre 2013
447
re,
bon c'est que c'est sur la bonne voie, au pire poste un exemple de classeur que je jette un oeil, je serai plus dispo vers midi.....
Et bien j'ai vaincu la bête ^^

J'ai rajouté un Si-Then a la fin de la boucle pour passer et ca marche.

Bref, un gros gros gros merci à toi!!
trés bonne journée
Messages postés
1219
Date d'inscription
jeudi 29 juillet 2004
Statut
Contributeur
Dernière intervention
25 novembre 2013
447
oki, impeccable :)
bonne journée