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....😕
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 :
MACRO SECONDAIRE
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....😕
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