J'aimerai récupérer les noms de tous mes TCD dans mon classeur pour pouvoir y modifier leur source. Pour le moment j'ai ceci :
Sub tcd()
Dim NomTCD As String
Dim tcd As PivotTable
Dim Pvt As PivotTable
Dim Cible As String, NomFeuille As String
Dim source As String
Dim nombre As Integer, nombre1 As Integer
Dim nom As String, nominv As String, nom1 As String, nominv1 As String
'Définit le premier TCD de la feuille active
Set Pvt = ActiveSheet.PivotTables(1)
MsgBox Pvt
'Extrait le nom de la feuille
NomFeuille = Left(Pvt.SourceData, InStr(1, Pvt.SourceData, "!") - 1)
'Pour gérer la version française d'Excel et remplacer le format xlL1C1 en xlR1C1.
Cible = Mid(Pvt.SourceData, Len(NomFeuille) + 2)
source = NomFeuille & "!" & Replace(Application.ConvertFormula( _
Formula:=Cible, fromReferenceStyle:=xlR1C1, toReferenceStyle:=xlA1, toAbsolute:=xlAbsolute), "[" & ThisWorkbook.Name & "]", "")
'compte les caracteres jusqu'au "."
nombre = InStr(source, ".xls")
'lit les caractere jusqu'au nombre trouver juste au dessus
nom = Left(source, nombre)
'inverse les caracteres
nominv = StrReverse(source)
'compte jusqu'au "!"
nombre1 = InStr(nominv, "!")
nominv1 = Left(nominv, nombre1)
'réinverse les cactere
nom1 = StrReverse(nominv1)
'garde le nom du tableau sélectionner auparavant pour changer son lien en-dessous
NomTCD = Pvt.Name
ActiveSheet.PivotTables(NomTCD).ChangePivotCache _
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=nom & "xlsm" & nom1, Version:=xlPivotTableVersion12)
ActiveWindow.SmallScroll Down:=-21
End Sub
Ca fonctionne mais je doit choisir le TCD à modifier:
Set Pvt = ActiveSheet.PivotTables(1)
Mais j'aimerai qu'il me fasse ceci pour tous les TCD automatiquement, donc il faut que je trouve les noms de mes TCD, les mettent dans une variable et fasse une boucle sur mon code mais je ne sait pas comment faire. Sachant que les nom des TCD peuvent changer et il peut y en avoir 1 ou 2 ou 3... dans mon classeur. Car plusieur classeur seront passé en revue.