Macro tableau croisé dynamique successifs
d
Bonjour,
Je lance un petit appel à l'aide, je cherche à créer une macro qui me permet de récupérer des graphiques à partir d'un tableau croisé dynamique.
J'ai une base de donnée qui fait que j'ai besoin de gérer des filtres mais comme cela peut bouger j'ai imaginé faire une boucle et créer un tableau croisé dynamique a chaque boucle pour la plage de données. J'ai donc mis un copier coller de ma plage de données mais lorsque je veux créer le tableau croisé le code ne fonctionne pas. Est ce que je n'ai pas oublié de dimensionner quelque chose pour le tableau croisé ?
voici la totalité du code que j'ai pour le moment. Cela plante juste après le Next PvtTCD.
Merci d'avance pour votre aide
Sub tabcroisedyn()
Set Trav = Sheets("Base")
ligne = 0
ligneref = 2
ligne2 = 2
Sheets("Base").Select
Range("A" & ligneref).Select
Do
If ActiveCell.Value = "" Then
Exit Do
Else
While Trav.Cells(ligne2, 1).Text = Trav.Cells(ligneref, 1).Text
ligne = ligne + 1
ligne2 = ligne2 + 1
Wend
ligne2 = ligneref + ligne
l = 2
Sheets("Base").Select
Set p = Range(Trav.Cells(ligneref, 1), Trav.Cells(ligne2 - 1, 12))
p.Select
Selection.Copy
Sheets("Trav macro").Select
Range("A2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveWorkbook.Names.Add Name:="TCDbase", RefersToR1C1:= _
"='Trav macro'!R1C1:R & Rows.Count.End(xlDown)& C12"
ActiveWorkbook.Names("TCDbase").Comment = ""
Dim wshTCD As Worksheet
Dim PvtTCD As PivotTable
Set wshTCD = Worksheets("TCD")
For Each PvtTCD In wshTCD.PivotTables
PvtTCD.TableRange2.Clear
Next PvtTCD
'Le moment ou ça plante
Set PvtTCD = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:="TCDbase") _
.CreatePivotTable(tabledestination:=wshTCD.Range("B5"), TableName:="TCDformule")
With ActiveSheet.PivotTables("TCDformule").PivotFields("Semaine" _
)
.Orientation = xlRowField
.Position = 1
End With
ActiveSheet.PivotTables("TCDformule").AddDataField ActiveSheet. _
PivotTables("Tableau croisé dynamique2").PivotFields("Borne_Basse"), _
"Nombre de Borne_Basse", xlCount
With ActiveSheet.PivotTables("TCDformule").PivotFields( _
"Nombre de Borne_Basse")
.Caption = "Tolérance basse"
.Function = xlAverage
End With
ActiveSheet.PivotTables("TCDformule").AddDataField ActiveSheet. _
PivotTables("TCDformule").PivotFields("Borne_Haute"), _
"Nombre de Borne_Haute", xlCount
With ActiveSheet.PivotTables("TCDformule").PivotFields( _
"Nombre de Borne_Haute")
.Caption = "Tolérance haute"
.Function = xlAverage
End With
ActiveSheet.PivotTables("TCDformule").AddDataField ActiveSheet. _
PivotTables("TCDformule").PivotFields("Resultat Numérique"), _
"Nombre de Resultat Numérique", xlCount
With ActiveSheet.PivotTables("TCDformule").PivotFields( _
"Nombre de Resultat Numérique")
.Caption = "Analyse Moyenne"
.Function = xlAverage
End With
ActiveSheet.PivotTables("TCDformule").AddDataField ActiveSheet. _
PivotTables("TCDformule").PivotFields("Valeur_Attendue"), _
"Nombre de Valeur_Attendue", xlCount
With ActiveSheet.PivotTables("TCDformule").PivotFields( _
"Nombre de Valeur_Attendue")
.Caption = "Valeur attendue"
.Function = xlAverage
End With
ActiveSheet.PivotTables("TCDformule").AddDataField ActiveSheet. _
PivotTables("TCDformule").PivotFields("Resultat Numérique"), _
"Nombre de Resultat Numérique", xlCount
With ActiveSheet.PivotTables("TCDformule").PivotFields( _
"Nombre de Resultat Numérique")
.Caption = "Analyse Min"
.Function = xlMin
End With
ActiveSheet.PivotTables("TCDformule").AddDataField ActiveSheet. _
PivotTables("TCDformule").PivotFields("Resultat Numérique"), _
"Nombre de Resultat Numérique", xlCount
ActiveWindow.SmallScroll Down:=9
With ActiveSheet.PivotTables("TCDformule").PivotFields( _
"Nombre de Resultat Numérique")
.Caption = "Analyse Maxi"
.Function = xlMax
End With
End If
Loop
End Sub