VBA supprimer les filtres d'une page [Résolu]

Bruno6464 3 Messages postés lundi 8 mars 2010Date d'inscription 9 mars 2010 Dernière intervention - 8 mars 2010 à 16:28 - Dernière réponse : Bruno6464 3 Messages postés lundi 8 mars 2010Date d'inscription 9 mars 2010 Dernière intervention
- 9 mars 2010 à 11:49
Bonjour à tous,

Voila 6h 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.

Voici le debut 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
*****************************************

Donc au debut je vais chercher la feuille qui m'interresse, ensuite je la colle, et a la fin je selection ma feuille et je désactiva les filtres... sauf que ca marche pas!!!

Je suis au bord de la crise de nerfs, bave au coin de la bouche et yeux rouge!
Je vous serai très reconnaissant si il vous vient une idée pour me décoincer.

Trés bonne fin d'aprem a tous :)

Bruno.
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
Bruno6464 3 Messages postés lundi 8 mars 2010Date d'inscription 9 mars 2010 Dernière intervention - 9 mars 2010 à 11:49
3
Merci
Bon j'ai eu la solution par Tompols du forum commentcamarche.

je la poste ici en cas, ca peut toujours servir!
*************************************
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
*************************************

Ca marche super bien, même s'il doit y avoir une solution plus "facile".

Bonne journée a tous.


Bruno.

Merci Bruno6464 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de Bruno6464
Molenn 797 Messages postés mardi 7 juin 2005Date d'inscription 23 février 2011 Dernière intervention - 8 mars 2010 à 16:45
0
Merci
Tu n'es pas obligé d'annuler les filtres. Il te suffit avant d'effectuer ton action de forcer l'affichage de toutes les données.

Ce que tu peux faire manuellement en faisant Menu Données\Filter\Afficher tout.

Ce que je fais avec le bout de code suivant, c'est :
1 - Activer la feuille qui m'intéresse
2 - Vérifier dans la barre de menu si Afficher tout est acessible ou non (s'il est accessible, c'est qu'il y a un filtre d'actif sur la feuille).
3 - Afficher toute les données si nécessaire

Tu es obligé de contrôler la présence d'un filtre, autrement, si tu te contentes de forcer l'affichage des données, et bien ça plante ta macro.

 'Définition des variables
    Dim Pop As CommandBarPopup
    
    'Vérification qu'il n'y a pas de filtres automatiques, si oui, affichage de toutes les données
    Worksheets(NomOnglet).Activate
    Set Pop = CommandBars("Data").Controls("&Filtrer")
    If Pop.Controls("&Afficher tout").Enabled = True Then
        Worksheets(NomOnglet).ShowAllData
    End If


Molenn
Commenter la réponse de Molenn
Bruno6464 3 Messages postés lundi 8 mars 2010Date d'inscription 9 mars 2010 Dernière intervention - 9 mars 2010 à 09:17
0
Merci
Bonjour Molenn, et un grand merci pour ta réponse.

J'ai testé sur un fichier a part, et ta solution marche parfaitement!, mais... sur mon fichier a moi... ca ne fonctionne pas! :/

[EDIT]: Bon... je viens de relever un truc important... ce ne sont pas des filtres automatiques, ces filtres sont issus d'un tableau croisé dynamique -_-'
Il faut donc que je demande au tableau croisé de tout afficher, ou alors le desactiver... et le tout en vba!

Si quelqu'un a une idée de comment le coder, je suis preneur!

Sinon, trés bonne journée a tous! Sous la neige :)

Bruno.
Commenter la réponse de Bruno6464

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.