Aide pour macro filtre TCD

Bonjour,

J'aurais besoin de votre aide pour une macro pour un nouveau projet que j'ai. J'ai un fichier composé de 3 feuille, la première avec des données, la seconde un TCD (que je souhaite masqué par la suite) et la 3ème feuille avec les top3 provenant du TCD, et des case à cocher pour choisir quelles colonnes doit apparaitre dans le top3.

J'ai réussi a créer une macro pour sélectionner les colonnes du TCD que je souhaite avoir, mais je n'arrive pas a faire que la colonne s'enlève lorsque je désélectionne, la coche associé. De plus a chaque fois que je sélectionne une coche la macro m’envoie sur la feuille TCD, ce que je ne souhaite pas (je souhaite que toutes les actions de la macro se font en tâche de fond)

Est-ce que quelqu'un peut m'aider pour ma macro ?

Voici le fichier, merci d’avance pour votre aide

13classeur1.xlsm (34.74 Ko)

Bonjour,

A mon avis vous ne partez pas dans le bon design mais comme je ne connais pas votre besoin, votre code fonctionnel pour une checkbox. A adapter pour les autres :

Sub Macro1()
With Worksheets("TCD").PivotTables("Tableau croisé dynamique1") 'Avec le TCD
    If ActiveSheet.Shapes("Case à cocher 1").OLEFormat.Object.Value = 1 Then 'Si la case à cocher 1 est vraie alors
        .AddDataField .PivotFields("NQP Montage"), "Somme de NQP Montage", xlSum 'Ajoute le champs au TCD
        Else 'Sinon
        .PivotFields("Somme de NQP Montage").Orientation = xlHidden 'Retire le champs au TCD
    End If
End With
End Sub

A noter qu'à chaque fois que vous retiré un champ/l'ajoutez, l'ordre d'apparition de ces derniers change dans le TCD comme ils ne sont plus dans le même ordre dans la liste des champs, dans ce cas il est nécessaire d'inclure une étape de réglage de la position du champs dans le TCD :

Sub Macro1()
With Worksheets("TCD").PivotTables("Tableau croisé dynamique1") 'Avec le TCD
    If ActiveSheet.Shapes("Case à cocher 1").OLEFormat.Object.Value = 1 Then 'Si la case à cocher 1 est vraie alors
        .AddDataField .PivotFields("NQP Montage"), "Somme de NQP Montage", xlSum  'Ajoute le champs au TCD
        .PivotFields("Somme de NQP Montage").Position = 1 'Position du champs
        Else 'Sinon
        .PivotFields("Somme de NQP Montage").Orientation = xlHidden 'Retire le champs au TCD
    End If
End With
End Sub

Cdlt,

Merci beaucoup Ergotamine, j'ai utilisé votre 1er code, car l'ordre d’apparition des champs n'a pas d'importance pour moi

Bonjour

Un TCD sait faire un top 3 (ou n).

Quelques segments et le tour est joué

On peut même aller plus loin avec des segments http://www.excel-formations.fr/Trucs_astuces/TCD06.php

Rechercher des sujets similaires à "aide macro filtre tcd"