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
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 SubA 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 SubCdlt,
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