• Initiateur de la discussion Initiateur de la discussion mth
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

mth

XLDnaute Barbatruc
Bonsoir à tous,

Je cale complètement sur un code afin de réaliser un filtre sur un TCD.
Je dispose d'une liste d'un peu plus d'une vingtaine d'items, liste notée dans un onglet TAB (de F2 à F23).
Dans un onglet "Dégressif" se trouve un TCD, qui se met à jour en fonction d'une requête, donc les items peuvent changer.
Ce TCD contient trois champs en filtre, dont un nommé Collection.
Je cherche en un clic à filtrer le TCD afin de n'afficher que les collections présentes dans ma liste de l'onglet TAB, (puis ensuite tout réafficher si besoin.)
J'ai essayé avec une boucle, c'est interminable, j'ai tenté un tableau mais je ne sais visiblement pas faire, bref ... je cale.
Je vous tansmets en PJ mon fichier, pourriez-vous m'aider à mettre en place ce filtre.
Merci d'avance pour tous vos conseils,
M
 

Pièces jointes

Dernière édition:
Re : Filtre TCD

Coucou 😀

PS, ton fichier joint, enregistré en .xls, ne fonctionne pas, tu aurais du le joindre en .xlsm (juste pour info, car les TCD sont très différents à partir de 2007)

sinon, avec ce code, peut-être :

Code:
Sub Masque()
Dim PvI As PivotItem
Dim Plg As Range
With Application
    .ScreenUpdating = False
    .Calculation = xlCalculationManual
    Set Plg = Sheets("Tab").Range("F2:F23")
    For Each PvI In ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
        "Collection (s)").PivotItems
            If IsError(Application.Match(PvI, Plg, 0)) Then PvI.Visible = False
    Next PvI
    .Calculation = xlCalculationAutomatic
    .ScreenUpdating = True
End With
End Sub

Sub Affiche()
Dim PvI As PivotItem
With Application
    .ScreenUpdating = False
    .Calculation = xlCalculationManual
    For Each PvI In ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
        "Collection (s)").PivotItems
            PvI.Visible = True
    Next PvI
    .Calculation = xlCalculationAutomatic
    .ScreenUpdating = True
End With
End Sub

bon courage 😉
 
Re : Filtre TCD

🙂 🙂 Bonjour Hubert 🙂 🙂

Merci de venir à mon secours.
(Je viens de modifier la PJ pour la passer en xlsm.)

Merci infiniment pour ton code, tu es formidable, je regarde ça tout de suite et te dis 🙂

Plein de bises et @ ++ 🙂

M
 
Re : Filtre TCD

re 🙂

Bon ben forcément, c'est du label bhbh, alors ça fonctionne remarquablement !!
Et cerise sur le gâteau, c'est très rapide (quand je pense à mes boucles épouventables que j'avais tentées avant, c'est vraiment autre chose !!!)

Et tu sais quoi Hubert ? j'ai même compris ce que tu avais écrit 🙂

Tu me retires une belle épine du pieds, je n'arrivais à rien de correct, vraiment un énorme merci pour ton aide toujours si précieuse 🙂

T'embrasse,

M
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
525
Réponses
1
Affichages
400
Réponses
16
Affichages
1 K
  • Question Question
Microsoft 365 recherche idée
Réponses
6
Affichages
922
Retour