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