Filtres sur Tableau Croisé Dynamique (VBA)

AurelieGuillon

XLDnaute Nouveau
Bonjour le Forum,

J'ai un problème qui a été en partie traité ici https://www.excel-downloads.com/threads/vba-filtrer-un-tableau-croise-dynamique.126125/ mais les réponses données ne me permettent pas vraiment de trouver ma solution.....

Mon problème est le suivant :
J'ai un tableau croisé dynamique filtré.
Selon la valeur filtrée, cela change la valeur d'une cellule E3 qui prend le nom d'un des onglets de la feuille.
Je souhaite parcourir le filtre N_COUP de 1 à 15, appeler 2 macros qui copient des cellules dans l'onglet qui a le même nom que la cellule E3.

Un fichier d'exemple est en pj (il est en XLSM, j'espère que c'est ok, mais en xls 97-2003, il est trop gros...)

Selon les cases cochées au début de la macro, il y a deux "types" de plantage :
- si j'ai coché 1 dès le début, la macro plante car N_COUP indique "plusieurs éléments" au lieu de 1 (alors qu'il n'y a que "1" de coché!), et du coup, la cellule E3 ne correspond plus à rien.
-si je coche 2, là c'est autre chose : "Impossible de définir la propriété Visible de la classe PivotItem." (ce qui rejoint le fil cité en introduction)

Je précise que mon code provient à la base d'un enregistrement, donc j'ai du mal à voir d'où vient le problème....:confused:

Si vous avez des bonnes idées, je vous en serais reconnaissante !!

Merci d'avance pour vos réponses ,

A bientôt,


le code ci dessous :
MACRO PRINCIPALE :
Code:
Sub SAVE_TOUT()
'
    ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("N_COUP"). _
        EnableMultiplePageItems = True
       
'Pour la coupure 1

    ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("N_COUP"). _
        CurrentPage = "(All)"
    With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("N_COUP")
        .PivotItems("2").Visible = False
        .PivotItems("1").Visible = True
    End With
       


Call Save_OD_VL


'Pour les autres coupures

Dim i As Integer
For i = 2 To 14

 ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("N_COUP"). _
        CurrentPage = "(All)"
    With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("N_COUP")
        .PivotItems(i).Visible = True
        .PivotItems(i - 1).Visible = False
 '       .PivotItems(i + 1).Visible = False
    End With
   
   
Call Save_OD_VL

Next i
   
   
   
   'Pour la coupure 15

ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("N_COUP"). _
        CurrentPage = "(All)"
    With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("N_COUP")
        .PivotItems("15").Visible = True
        .PivotItems("14").Visible = False
    End With
       
Call Save_OD_VL

   
End Sub

MACRO SECONDAIRE
Code:
Sub Save_OD_VL()


Dim k As Integer
k = ActiveSheet.Index

  Sheets(Range("E3").Value).Columns("A:C").ClearContents
    
Range("E7:G1025").Copy

    Sheets(Range("E3").Value).Select
    Range("A1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
        
        Sheets(k).Select
        
End Sub
 

Pièces jointes

  • Fichier pour XLD X.xlsm
    297.1 KB · Affichages: 73

Discussions similaires

Statistiques des forums

Discussions
312 329
Messages
2 087 327
Membres
103 516
dernier inscrit
René Rivoli Monin