Modifier source TCDs

Bonjour à tous,

Je cherche à mettre à jour la source des TCD lorsque le Range de la source est censé évoluer, mais, malgré le rafraichissement correct des TCD lorsque les données se vident, je n'arrive pas à faire prendre en compte l'agrandissement du Range due à l'ajout de données. Du coup les TCD se rafraichissent mais le Range de la source ne semble pas évoluer.

Sub TEST()

    Dim ws As Worksheet
    Dim wsData As Worksheet
    Dim wsPT As Worksheet
    Dim lastCol As Long, LastRow As Long
    Dim rngPT As Range
    Dim PCache As PivotCache
    Dim PT As PivotTable

        Set wsData = Worksheets("Combined Table")
        Set wsPT = Worksheets("Calculation")

    With wsData
        LastRow = .Cells(.Rows.Count, 1).End(xlUp).Row - 1
        Set rngPT = .Cells(2, 1).Resize(LastRow, 61)
    End With

    Set PCache = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=rngPT.Address)

     'ActiveWorkbook.PT.ChangePivotCache ActiveWorkbook. _
        'PivotCaches.Create(SourceType:=xlDatabase, SourceData:=rngPT.Address, _
        'Version:=xlPivotTableVersion15)

        'Pour la partie ci-dessus j'ai toujours des codes d'erreur "Object does not support this property or method".

    For Each PT In wsPT.PivotTables
        PT.SourceData = address_source
        PT.PivotCache.Refresh
    Next PT

End Sub

A la base j'ai créé les TCD ainsi :

Dim wsData As Worksheet
Dim wsPT As Worksheet
Dim lastCol As Long, LastRow As Long
Dim rngPT As Range
Dim PCache, PCache1 As PivotCache
Dim PT, PT2, PT3, PT4, pT5, PT6, PT7 As PivotTable

    Set wsData = Worksheets("Combined Table")
    Set wsPT = Worksheets("Calculation")

    With wsData
        LastRow = .Cells(.Rows.Count, 1).End(xlUp).Row - 1
        Set rngPT = .Cells(2, 1).Resize(LastRow, 61)
    End With

        wsData.Activate

        Set PCache = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=rngPT.Address)
        Set PT = PCache.CreatePivotTable(TableDestination:="Calculation!R1C1", TableName:="TCD_1")

        Set PT2 = PCache.CreatePivotTable(TableDestination:="Calculation!R20C1", TableName:="TCD_2")

        Set PT3 = PCache.CreatePivotTable(TableDestination:="Calculation!R40C1", TableName:="TCD_3")

        Set PT4 = PCache.CreatePivotTable(TableDestination:="Calculation!R60C1", TableName:="TCD_4")

        Set pT5 = PCache.CreatePivotTable(TableDestination:="Calculation!R80C1", TableName:="TCD_5")

        Set PT6 = PCache.CreatePivotTable(TableDestination:="Calculation!R100C1", TableName:="TCD_6")

        Set PT7 = PCache.CreatePivotTable(TableDestination:="Calculation!R120C1", TableName:="TCD_7")

Merci bien de m'éclairer.

Bonjour,

Peux-tu envoyer un fichier avec des données (quelques lignes suffisent avec l'ensemble de tes procédures (de test) ?

Cdlt.

Re,

Merci de la réponse.

J'ai modifié cela et ça fonctionne :

Dim address_source As String

Ajouté cela aussi :

rngPT.Name = "address_source"

Où rngPT est le range définissant la source des données.

    For Each PT In wsPT.PivotTables
        PT.SourceData = "address_source"
        PT.PivotCache.Refresh
    Next PT
Rechercher des sujets similaires à "modifier source tcds"