Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Rediriger la source de plusieurs PivotTables

1 réponse
Avatar
Igor
Bonjour le groupe
(Excel 2013)

J'ai mon classeur principal (.xlsm) contenant une feuille avec une table de
données ListObject("DataLines") et plusieurs autres feuilles avec des
pivotTables un peu élaborées branchées sur cette table. Et contenant aussi
des autres feuilles.

Je veux créer et enregistrer un autre classeur (.xlsx) contenant ces données
et ces PivotTables.
Et je n'y arrive point.

Impossible de réussir à rediriger le pivotcache ou la sourcedata de mes
pivottables sur le classeur nouveau !
La copie des feuilles est OK (même avec la ListObject)
Ensuite, dans le meilleur des cas, j'ai une erreur 1004 : Excel refuse
d'enregistrer. Carrément.
Les autres fois, le classeur est bien créé, pas d'erreur levée. Mais quand
je le rouvre, il est corrompu et fait planter Excel.
Je crois comprendre que la difficulté vient du fait qu'il y a plusieurs PT
sur la même source


Voilà un extrait de mon code...
Un peu d'aide serait appréciée : j'ai l'impression de tourner en rond

Merci aux bonnes âmes !



'*********************************************************************
'Copie des feuilles utiles dans un nouveau classeur
ThisWorkbook.Sheets(Array("Global", "Status", "Metrics", "IS", "Summary",
"DataLines", "Parameters")).Copy

Set wkbGlobal = ActiveWorkbook 'celui qui vient d'être créé ligne
précédente

'enregistrer ce classeur Global
ActiveWorkbook.SaveAs strFileName, 51 '<=ça c'est OK, mais les PT ne
sont pas encore branchées sur la bonne source

With wkbGlobal
'informations générales sur la feuille Global
.Sheets("Global").Range("B6").Value = strFileName

'J'ai essayé ce qui suit. Il semble le faire, mais refuse ensuite
d'enregistrer le fichier (corrompu, qu'il dit)
'rediriger la SourceData des PT
.Sheets("Status").PivotTables(1).SourceData = _
.Sheets("Datalines").ListObjects("TableData").Range.Address(ReferenceStyle:=xlR1C1,
external:=True)
.Save

'J'ai essayé avec le CacheIndex sans plus de succès
' .Sheets("Metrics").PivotTables(1).CacheIndex = _
' .Sheets("Status").PivotTables(1).CacheIndex
.Save

'suis en train d'essayer ChangePivotCache mais ça merdouille aussi pour
l'instant

1 réponse

Avatar
Igor
Je me réponds pour que vous n'y passiez pas la nuit ^^

Devant le refus définitif d'Excel d'enregistrer mon classeur contenant mes
feuilles copiées, j'ai contourné...
Faut dire que les PT ("un peu élaborés") contiennent des tas de trucs :
regroupements de dates, de nombres, des champs calculés, filtres en tous
genres, et slicers, et pas mal de détails de présentation.

J'ai fait un tout petit classeur exemple qui ne pose pas de problème, lui.
Ni pour la SourceData, ni pour le CacheIndex.
Et qui s'enregistre très bien.
Je n'ai donc pas précisément compris d'où venait l'erreur. En tous cas, pas
un problème de syntaxe.

La soluce adoptée :
enregistrer mon classeur comme classeur final, et y supprimer tout ce qui y
était inutile.
Comme ça pas besoin de changer la source des PivotTables !

Mais ça m'a obligé à revoir le reste du programme déjà écrit, car j'avais
d'autres classeurs à créer, avec les autres trucs supprimés dans Global. Une
fois les feuilles supprimées, c'est dur ;)

Merci (à moi d'abord) et à vous : d'exister.

"Igor" a écrit dans le message de
news:546a1f58$0$2395$
Bonjour le groupe
(Excel 2013)

J'ai mon classeur principal (.xlsm) contenant une feuille avec une table
de données ListObject("DataLines") et plusieurs autres feuilles avec des
pivotTables un peu élaborées branchées sur cette table. Et contenant
aussi des autres feuilles.

Je veux créer et enregistrer un autre classeur (.xlsx) contenant ces
données et ces PivotTables.
Et je n'y arrive point.

Impossible de réussir à rediriger le pivotcache ou la sourcedata de mes
pivottables sur le classeur nouveau !
La copie des feuilles est OK (même avec la ListObject)
Ensuite, dans le meilleur des cas, j'ai une erreur 1004 : Excel refuse
d'enregistrer. Carrément.
Les autres fois, le classeur est bien créé, pas d'erreur levée. Mais quand
je le rouvre, il est corrompu et fait planter Excel.
Je crois comprendre que la difficulté vient du fait qu'il y a plusieurs PT
sur la même source


Voilà un extrait de mon code...
Un peu d'aide serait appréciée : j'ai l'impression de tourner en rond

Merci aux bonnes âmes !



'*********************************************************************
'Copie des feuilles utiles dans un nouveau classeur
ThisWorkbook.Sheets(Array("Global", "Status", "Metrics", "IS", "Summary",
"DataLines", "Parameters")).Copy

Set wkbGlobal = ActiveWorkbook 'celui qui vient d'être créé ligne
précédente

'enregistrer ce classeur Global
ActiveWorkbook.SaveAs strFileName, 51 '<=ça c'est OK, mais les PT ne
sont pas encore branchées sur la bonne source

With wkbGlobal
'informations générales sur la feuille Global
.Sheets("Global").Range("B6").Value = strFileName

'J'ai essayé ce qui suit. Il semble le faire, mais refuse ensuite
d'enregistrer le fichier (corrompu, qu'il dit)
'rediriger la SourceData des PT
.Sheets("Status").PivotTables(1).SourceData = _

.Sheets("Datalines").ListObjects("TableData").Range.Address(ReferenceStyle:=xlR1C1,
external:=True)
.Save

'J'ai essayé avec le CacheIndex sans plus de succès
' .Sheets("Metrics").PivotTables(1).CacheIndex = _
' .Sheets("Status").PivotTables(1).CacheIndex
.Save

'suis en train d'essayer ChangePivotCache mais ça merdouille aussi pour
l'instant