Changer sources TCD par VBA

Bonjour!

Je cherche à savoir si il est possible par VBA de changer la sources de donnée d'un TCD.

J'essai de créer une copie d'un onglet/feuille excel avec un TCD mais lors de la copie le TCD récupère ses données sur la feuille originale et non pas sur la copie.

Merci d'avances de vos réponses!

bonjour,

Tu veux un code VBA pour changer la source de données en automatique ou créer un tcd identique avec des données sources différentes?

Sandrine

Bonjour,

Tu peux avec une macro modifier le PivotCache ...

Sub ChangerPivotCache()
' Modifier le PivotCache de tous les TCD dans toutes les feuilles 
Dim pt As PivotTable
Dim wks As Worksheet
  For Each wks In ActiveWorkbook.Worksheets
    For Each pt In wks.PivotTables
        pt.CacheIndex = Sheets("Pivot").PivotTables(1).CacheIndex
    Next pt
  Next wks
End Sub

En espèrant que cela t'aide ...

bonjour,

Tu veux un code VBA pour changer la source de données en automatique ou créer un tcd identique avec des données sources différentes?

Sandrine

Bonjour,

Je veux créer un TCD identique mais avec les données sources de la nouvelle feuille

Cordialement

Bonjour,

Merci de joindre un petit fichier pour illustrer tes propos.

Cdlt.

Bonjour,

Merci de joindre un petit fichier pour illustrer tes propos.

Cdlt.

Bonjour,

Vous trouverez ci-joint un petit fichier excel avec un TCD et une macro faisant la copie et renommant la nouvelle feuille

Lors de la copie le nouveau TCD ne met pas ses données sources à jour et utilise donc les données de l'ancienne feuille qui sont modifié par la suite afin de traiter des sources de données différentes sans perdre celles "enregistré" dans les feuilles copié.

Cordialement

Re,

Une proposition à étudier et à adapter.

Les données ont été mises sous forme de tableau.

Cdlt.

Option Explicit

Public Sub Copie_onglet()
Dim wb As Workbook, ws As Worksheet
Dim lo As ListObject, pt As PivotTable
Dim strName As String

    strName = InputBox("Choix du Produit")
    If strName = "" Then Exit Sub

    Set wb = ThisWorkbook
    Set ws = ActiveSheet
    ws.Copy After:=wb.Worksheets(Worksheets.Count)

    With ActiveSheet
        .Name = strName
        Set lo = .ListObjects(1)
        Set pt = .PivotTables(1)
    End With
    pt.ChangePivotCache wb.PivotCaches.Create(xlDatabase, lo.Range)

    Set pt = Nothing: Set lo = Nothing: Set ws = Nothing: Set wb = Nothing

End Sub

Merci de ta réponse,

Je suis perplexe quand à ces deux lignes :

    
    Set lo = .ListObjects(1)
        Set pt = .PivotTables(1)

Je ne comprend pas comment marche .ListObjects(1)

J'ai réussi à faire une petite macro basique qui marche sur 3 des 5 TCD mais quand je l'applique au 2 dernier excel crash.

ActiveSheet.PivotTables("TCD Graph histogramme bleu").ChangePivotCache _
            ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
                Save_Path & "[" & File_Name & "]" & Product_Name & "!R1C23:R16000C28", Version:=xlPivotTableVersion15)

Dans le lien dropbox ci-contre mon fichier sur lequel j'ai réaliser mes tests:

https://www.dropbox.com/s/ceivtzuusvpvhqf/Test%20Copie%20onglet%202.7z?dl=0

Ok j'ai réussi à faire marcher la macro

Merci de vos réponses!

Rechercher des sujets similaires à "changer sources tcd vba"