VBA supprimer les filtres d'une page

Résolu
Bruno6464 Messages postés 3 Date d'inscription lundi 8 mars 2010 Statut Membre Dernière intervention 9 mars 2010 - 8 mars 2010 à 16:28
Bruno6464 Messages postés 3 Date d'inscription lundi 8 mars 2010 Statut Membre Dernière intervention 9 mars 2010 - 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.

3 réponses

Bruno6464 Messages postés 3 Date d'inscription lundi 8 mars 2010 Statut Membre Dernière intervention 9 mars 2010
9 mars 2010 à 11:49
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.
3
Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 7
8 mars 2010 à 16:45
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
0
Bruno6464 Messages postés 3 Date d'inscription lundi 8 mars 2010 Statut Membre Dernière intervention 9 mars 2010
9 mars 2010 à 09:17
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.
0
Rejoignez-nous