Rafraichir Filtre TCD Via Macro

Accueil – Le CFO masqué Forums Excel Rafraichir Filtre TCD Via Macro

Mots-clés : 

  • Ce sujet contient 1 réponse, 2 participants et a été mis à jour pour la dernière fois par Francis Paquet, le il y a 8 années et 4 mois.
2 sujets de 1 à 2 (sur un total de 2)
  • Auteur
    Articles
  • #27161
    bg
    Participant

    Bonjour à tous,
    Je fais un petit appel à l’équipe car je suis bloqué devant un problème.

    Je voudrais mettre à jour un filtre de TCD lors du changement de valeur dans une cellule.
    Via VBA, l’utilisateur choisi dans une liste et son choix est collé dans un cellule.
    De là, une formule Index+equiv rapatrie la valeur (CT_Num en cellule “B19”) qui doit être le filtre du TCD.
    J’ai consulté plusieurs site solutions etc mais je suis toujours bloqué.
    (Notamment l’article:
    https://www.lecfomasque.com/controler-plusieurs-tableaux-croises-dynamiques-avec-un-seul-menu-deroulant/)

    (Pour info, les slicers ne peuvent pas convenir dans mon cas)

    Voici mes lignes de VBA très simples:
    Sub LISTSYN()
    ActiveSheet.PivotTables(“TDCI”).PivotFields(“CT_Num”).ClearAllFilters
    ActiveSheet.PivotTables(“TDCI”).PivotFields(“CT_Num”).CurrentPage = ActiveSheet.Range(“B19”).Value

    End Sub

    Lorsque j’exécute uniquement la première ligne (le clear all Filters), cela fonctionne.
    Lorsque j’essaie d’actionner la deuxième ligne j’ai une erreur d’exécution ‘1004’.

    J’ai essayé différentes méthodes, au mieux cela me renomme le champ “CT_Num” avec la valeur de la cellule mais je n’ai jamais réussi à appliquer le filtre.

    Merci pour votre aide.
    Bernard

    #27163
    Francis Paquet
    Participant

    Bernard,

    Je vous conseille ce qui suit:
    1- Ajouter une variable du type approprié afin d’assigner la valeur voulue du filtre et ajouter l’instruction
    MyVar = ActiveSheet.Range(« B19 »).Value
    2- Je définierais un champ nommé MaDest à la cellule où se trouve le filtre en question du TCD;
    3- Je remplacerais votre ClearAllFilters par
    ActiveSheet.PivotTables(« TDCI »).PivotFields(« CT_Num »).PivotItems(Format(MyVar, “0”)).Name=MyVar
    et j’ajouterais
    range(“MaDest”).Value=MyVar

    Essayez donc cela…

    Francis

2 sujets de 1 à 2 (sur un total de 2)
  • Vous devez être connecté pour répondre à ce sujet.