Lier une cellule a des filtres de TCD

23test.xlsm (31.46 Ko)

Bonjour,

Je cherche à faire en sorte d'automatiser un process,

Pour l'instant je fonctionne avec les segments mais cela m'oblige à manuellement parcourir une liste assez longue de types de pièces alors que l'info que je veux placer en filtre de mes TCD est déjà répertoriée dans un autre TCD.

Je joins un fichier Test pour que cela soit plus clair.

Le résultat voulu serait de voir mon TCD 1 se mettre a jour par rapport aux 3 pièces qui ont le plus de défauts (c'est déjà le cas vu que c'est un TCD) et surtout ensuite, que les 3 cellules reprenant les 3 types de pièces avec le plus de défaut servent pour définir les filtres des 6 TCD (1 tcd par type de pièce / responsabilités client ou Nous)

Bonsoir,

Une proposition avec Power Query. Pour actualiser Onglet Données, Requêtes et connexions, Actualiser tout.

(Il est possible d'automatiser cela avec une instruction VBA)

Cordialement.

EDIT :

Fichier réparé

84test.xlsm (38.73 Ko)

Bonjour,

Merci pour votre version cependant il ne s'agit plus de changer les filtres de Tableaux Dynamiques, alors que c'est ce qui m'intéresse principalement,

il faudrait donc impérativement garder les 6 TCD et faire en sorte que leur filtres soient rattachés et s'actualisent par rapport aux 3 cellules qui elles-même sont rattachées au tableau déterminant les 3 pièces avec le plus de NC.

Je ne m'y connais pas assez mais je pense que cela ne se fait qu'en VBA via "visualiser le code" lorsqu'un fait clic-droit sur un onglet

Si quelqu'un peut me proposer un code qui fonctionnerait pour actualiser 6 filtres de TCD en fonction de 3 cellules (1 cellule pour 2 TCD avec le même filtre)

Merci

Bonjour à tous

Faire des boucles VBA pour filtrer les TCD est contre productif

Il faut paramétrer les champs de pages en mono sélection et non multi sélection

Renommer le 1er TCD : TCD1

Dans le module de la feuille

Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)

    If Target.Name <> "TCD1" Then Exit Sub
    Application.ScreenUpdating = False
    PC1 = Range("L8").Value
    PC2 = Range("L9").Value
    PC3 = Range("L10").Value
    For Each Pt In PivotTables
        Select Case Mid(Pt.Name, 2, 1)
            Case "1"
            Pt.PivotFields("Type de piece").CurrentPage = PC1
            Case "2"
            Pt.PivotFields("Type de piece").CurrentPage = PC2
            Case "3"
            Pt.PivotFields("Type de piece").CurrentPage = PC3
        End Select
    Next
End Sub

Bonjour, cela ne fonctionne pas

J'ai bien renommé le TCD1 mais il y a une erreur à cette ligne visiblement :

 Pt.PivotFields("Type de piece").CurrentPage = PC1

RE

As-tu bien repassé tous les champs de pages en mono sélection ?

Il va sans dire que j'ai testé ma solution...

Désolé je ne comprends pas de quoi il s'agit. Que sont les champs de pages et comment les changer du coup stp ?

Alors, je pense avoir compris ce que tu voulais dire, en faisant des recherches, ce que tu appelles champs de page c'est tout simplement appelé filtres dans le TCD maintenant, il y a du avoir un changement de terminologie entre les versions. J'ai donc bien décocher "Sélectionner plusieurs éléments" pour les passer en mono comme tu disais. Le code s’exécute lors de l'actualisation des données cependant ça m'a changé les 6 filtres des 6 TCD pour la même pièce

Aussi, j'ai du renommer PIECE 1/2/3 par PC1/2/3 car il me semble comprendre que c'est ainsi qu'ils sont nommés dans ton code.

En bref, le résultat n'est pas celui espéré pour l'instant car ça met bien à jour les 6 tableaux mais avec la même valeur au lieu des valeurs des 3 cases rouges par paire de tableau

RE

Non il ne fallait pas renommer PIECE 1/2/3, PC1/2/3 étant des variables alimentées par les cellules L8, L9 et L10 (que tu avais mises en rouge)

Pour info la traduction a évolué mais c'est toujours pagefield, et on retrouve page à divers endroits dans les paramètres des TCD (la logique microsoft...)

https://learn.microsoft.com/fr-fr/office/vba/api/excel.pivottable.pagefields

Bonjour,

J'ai revérifié que je n'avais pas oublié quelque chose, et du coup effectivement, dans mon fichier, le TCD1 ne se nommait pas ainsi car j'ai dû oublier de sauvegarder après l'avoir renommé à un moment (je travaille sur un très vieil ordinateur super lent qui va bientôt être remplacé donc les sauvegardes sont difficiles)
Maintenant cela fonctionne sur le fichier test, je vais essayer d'adapter pour mon fichier réel et je vous tiendrais au courant

Bon, ca ne fonctionne pas..

Une piste pourrait être car ces tableaux sont dans une feuille de calcul avec plein d'autres TCD qui me sont tous utiles (j'ai tout rassemblé) et je ne comprends pas suffisamment le code pour savoir comment est-ce qu'il vient cibler les 6 tableaux dont je veux changer les filtres?

Ici j'ai volontairement choisi un autre type de pièce dans les filtres (ils sont bien en mono-sélection) pour chaque TCD mais le code ne change pas les filtres en fonction de mes 3 cellules séparées du Tableau (renommé TCD1 dans ce fichier également)

Des idées? Serait-ce car il y'a d'autres TCD qui "interfèreraient" ?

Bonjour

D'où l'intérêt de poster un fichier représentatif

Le code traite les TCD de la feuille donc s'il y a en a d'autres, c'est sûr que selon leur nom et leur structure cela risque d'interférer ou planter

Les 3 cellules utilisés sont, comme déjà dit, L8, L9 et L10 : on le voit dans le code...

On pourrait se baser directement sur le TCD (en cas d’exæquo on peut avoir plus de 3)...

Re,

Désolé je pensais que ça serait suffisant comme fichier, étant donné que ça représente la partie sur laquelle je souhaitais travailler, j'ai reconstruit au mieux, mais il y a tout un tas de liens entre les tableaux, chronologies, etc que je n'ai pas refait car cela aurait pris beaucoup trop de temps.

Je vous joins un fichier avec toute la feuille, tant pis pour les infos confidentielles, mais bon je ne peux pas faire plus représentatif

La partie encadrée est celle où il faudrait que cela fonctionne.

Merci du coup de main en tout cas

RE

Impossible de tester, la source des TCD étant en dehors du classeur.

Le code teste le second caractère du nom des TCD et agit si "1" ou "2" ou "3" donc tout TCD n'ayant pas ce texte en 2ème position n'est pas impacté normalement

Merci,

le problème a été vite résolu lorsque j'ai changé les noms de 6 TCD pour correspondre à ton code, je n'ai pas suffisamment de connaissances en VBA pour comprendre donc merci pour ton explication, tout fonctionne lors de l'actualisation des données,

Un grand merci pour ta patience et ton efficacité :)

RE

C'était basé sur ton exemple initial...

L'important est que ce soit résolu... Merci du retour

Ah je comprends mieux, j'ai nommé mes tableaux "n'importe comment" dans le fichier test c'était juste pour illustrer à quoi ils servent désolé ^^'

Rechercher des sujets similaires à "lier filtres tcd"