Bonjour à tous,
j'ai actuellement un TCD relié à une source de données. J'aimerai pouvoir créer une Macro qui met a jour mon tcd. La base de données en question est susceptible de changer et le nombre de ligne aussi. C'est pourquoi j'aimerai que ma macro change la source de donnée en fonction du nombre de ligne.
J'ai donc créer la macro si dessous. Le problème étant que lorsque je l'exécute , J'ai un message d'erreur qui s'affiche : "Erreur d'execution Le nom du champ de tableau croisé dynamique n'est pas valide. POur créer un rapport de tableau croisé dynamique,vous devez utiliser des données sous forme de liste avec des étiquettes de colonnes. Si vous changez le nom du tableau croisé dynamique , vous devez taper un nouveau nom dans le champ."
Je ne sais pas quoi modifier dans mon code afin de résoudre ce problème.
J'espere que quelqu'un aura la solution! Merci d'avance!
Sub tcdmaj
Dim derligne As Integer
derligne = Range("A" & Rows.Count).End(xlUp).Row
Dim tcd3 As PivotTable, SrcData As String
If "Tableau croisé dynamique3" <> vbNullString Then
Set tcd3 = Sheets("TCD_AnoGPS& PA hors doublon").PivotTables("Tableau croisé dynamique3")
Else
Set tcd3 = Sheets("TCD_AnoGPS& PA hors doublon").PivotTables(1)
End If
' Détermine la nouvelle source de données du tcd
SrcData = ActiveSheet.Range("A1:AH" & derligne).Address(ReferenceStyle:=xlR1C1, External:=True)
' Change la source de données
tcd3.ChangePivotCache ActiveWorkbook.PivotCaches.Create( _
SourceType:=xlDatabase, _
SourceData:=SrcData)
' Détermine la nouvelle source de données du tcd
SrcData = ActiveSheet.Range("A1:AH" & derligne).Address(ReferenceStyle:=xlR1C1, External:=True)
ActiveSheet.PivotTables("Tableaucroisédynamique3").PivotCache.Refresh
Cells.Select
Selection.Copy
Sheets("Copie TCD - données pour report").Select
Cells.Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Sub