Changer PivotCache

Bonjour a tous (desole je suis sur un qwerty, donc je ne sais pas mettre les accents)!

Je suis nouveau sur VBA, j'ai commence il y a seulement deux semaines donc mes connaissances sont assez limitees.

J'utilise excel 2013.

Mon probleme est le suivant:

Je recois deux tableaux que je dois comparer. Les fichiers sont assez mal fait donc j'ai cree une macro qui les remet en forme correctement et ensuite j ai fait des pivot table sur une autre sheet qui utilisent ces fichiers comme sources. Cette macro sera utilisee regulierement: les utilisateurs colleront leurs deux fichiers dans deux feuilles differentes et a partir de la, les pivot table mettront en evidence certaines choses.

Le probleme est que les pivot table sont completement perdues dans les references apres la transformation des fichiers a cause du rajout de deux colonnes (ce qui est logique). J aimerais donc creer une macro qui change les pivots cache une fois ces fichiers transformes.

J ai cherche sur beaucoup de forums la reponse la plus classique est celle-ci:

"Sub ChangePivotDataSourceRange()

Dim sht As Worksheet

Dim SrcData As String

Dim pvtCache As PivotCache

'Determine the data range you want to pivot

Set sht = ThisWorkbook.Worksheets("Sheet1")

SrcData = sht.Name & "!" & Range("A1:R100").Address(ReferenceStyle:=xlR1C1)

'Create New Pivot Cache from Source Data

Set pvtCache = ActiveWorkbook.PivotCaches.Create( _

SourceType:=xlDatabase, _

SourceData:=SrcData)

'Change which Pivot Cache the Pivot Table is referring to

ActiveSheet.PivotTables("PivotTable1").ChangePivotCache (pvtCache)

End Sub"

Le nom de ma sheet source c'est DataT et celle ou se trouve ma pivot Transition table et le nom super original de ma pivot est (PivotTable1):

Le code remanie avec mes sheets donne ceci:

"

Sub ChangePivotDataSourceRange()

Dim sht As Worksheet

Dim SrcData As String

Dim pvtCache As PivotCache

Dim Max_RowT As Integer, Max_ColT As Integer

Worksheets("DataT").Activate

Max_ColT = Application.WorksheetFunction.CountA(Range("1:1"))

Max_RowT = Application.WorksheetFunction.CountA(Range("A:A"))

'Determine the data range you want to pivot

Set sht = ThisWorkbook.Worksheets("DataT")

SrcData = sht.Name & "!" & Range("A1:R100").Address(ReferenceStyle:=xlR1C1)

'Create New Pivot Cache from Source Data

Set pvtCache = ActiveWorkbook.PivotCaches.Create( _

SourceType:=xlDatabase, _

sourcedata:=SrcData)

'Change which Pivot Cache the Pivot Table is referring to

Worksheets("Transition table").Activate

ActiveSheet.PivotTables("PivotTable1").ChangePivotCache (pvtCache)

End Sub "

J'obtiens alors une erreur 438.

Si vous avez une idee qui pourrait m aider ce serait top!


J'ai oublie de dire que j'utilise Max_RowT et Max_ColT pour changer le range dynamiquement, ce qui donne:

"SrcData = sht.Name & "!" & Range(Cells(1,1),Cells(Max_RowT,Max_ColT)).Address(ReferenceStyle:=xlR1C1)

Bonjour et bienvenu(e),

Merci de joindre un fichier à ta demande.

Cdlt.

Bonjour,

D'abord merci pour votre reponse. Il s'avere que j'ai trouve la solution a mon probleme en utilisant le code suivant:

Sub TransitionDataT()

Dim Data_sht As Worksheet

Dim Pivot_sht As Worksheet

Dim StartPoint As Range

Dim DataRange As Range

Dim PivotName As String

Dim NewRange As String

'Set Variables Equal to Data Sheet and Pivot Sheet

Set Data_sht = ThisWorkbook.Worksheets("DataT")

Set Pivot_sht = ThisWorkbook.Worksheets("Transition table")

'Enter in Pivot Table Name

PivotName = "PivotTable1"

'Dynamically Retrieve Range Address of Data

Set StartPoint = Data_sht.Range("A1")

Set DataRange = Data_sht.Range("A1").CurrentRegion

'Cells(1, 1), Cells(Max_RowT, Max_ColT))

NewRange = Data_sht.Name & "!" & _

DataRange.Address(ReferenceStyle:=xlR1C1)

DataRange.Select

'change Pivot Table Data Source Range Address

Pivot_sht.PivotTables(PivotName).ChangePivotCache _

ThisWorkbook.PivotCaches.Create( _

SourceType:=xlDatabase, _

sourcedata:=NewRange)

'

''Ensure Pivot Table is Refreshed

Pivot_sht.PivotTables(PivotName).RefreshTable

End Sub

Le probleme etait du a la selection des donnees sources (la formule selectionnait l'ensemble de la fuille excel).

Bonne journee,

Raphael

Rechercher des sujets similaires à "changer pivotcache"