Lister les TCD d'un classeur

Bonsoir,

Je cherche à lister tous les TCD d’un classeur, j’ai récupéré cette macro sur internet, malheureusement celle-ci ne semble pas fonctionner.

Elle crée bien une feuille, dans la mesure où je déclare en variable objNewSheet as Object, elle génère bien la ligne de titre mais elle ne me retourne aucune information.

Si quelqu’un à une idée.

Sub ListeTableauxCroisesDynamiques()
'par Excel-Malin.com ( http://excel-malin.com )

'déclaration des variables
Dim tcd As PivotTable
Dim CompteurFeuilles As Long
Dim CompteurLignes As Integer

Application.ScreenUpdating = False

'ajout d’une nouvelle feuille
Set objNewSheet = Worksheets.Add
objNewSheet.Activate

CompteurFeuilles = 2
CompteurLignes = 2

'prépare les titres
Range(“A1”).Value = "Nom du tableau"
Range(“B1”).Value = "Source des données"
Range(“C1”).Value = "Feuille"
Range(“D1”).Value = "Plage du tableau"
Range(“E1”).Value = "Rafraîchi par"
Range(“F1”).Value = “Rafraîchi le”

'extraît l’information sur les Tableau croisés dynamiques
Do While CompteurFeuilles <= Worksheets.Count
_ Sheets(CompteurFeuilles).Select_
_ For Each tcd In ActiveSheet.PivotTables_
_ objNewSheet.Cells(CompteurLignes, 1).Value = tcd.Name_
_ objNewSheet.Cells(CompteurLignes, 2).Value = tcd.SourceData_
_ objNewSheet.Cells(CompteurLignes, 3).Value = ActiveSheet.Name_
_ objNewSheet.Cells(CompteurLignes, 4).Value = tcd.TableRange1.Address_
_ objNewSheet.Cells(CompteurLignes, 5).Value = tcd.RefreshName_
_ objNewSheet.Cells(CompteurLignes, 6).Value = tcd.RefreshDate_
_ _
_ CompteurLignes = CompteurLignes + 1_
_ Next_
_ CompteurFeuilles = CompteurFeuilles + 1_
Loop

objNewSheet.Activate

Columns(“A:F”).EntireColumn.AutoFit 'adapte la largeur des colonnes
Application.ScreenUpdating = True
End Sub

Bonne soirée
Cordialement.

Bonjour,
Après essai du module sur plusieurs classeurs contenant des TDC, tout fonctionne chez moi
Voir ta version EXCEL (année - PC ou MAC - etc)

Sub ListeTableauxCroisesDynamiques()
'par Excel-Malin.com ( http://excel-malin.com )

'déclaration des variables
Dim tcd As PivotTable
Dim CompteurFeuilles As Long
Dim CompteurLignes As Integer

Application.ScreenUpdating = False

'ajout d’une nouvelle feuille
Set objNewSheet = Worksheets.Add
objNewSheet.Activate

CompteurFeuilles = 2
CompteurLignes = 2

'prépare les titres
Range("A1").Value = "Nom du tableau"
Range("B1").Value = "Source des données"
Range("C1").Value = "Feuille"
Range("D1").Value = "Plage du tableau"
Range("E1").Value = "Rafraîchi par"
Range("F1").Value = "Rafraîchi le"

'extraît l’information sur les Tableau croisés dynamiques
Do While CompteurFeuilles <= Worksheets.Count
 Sheets(CompteurFeuilles).Select
 For Each tcd In ActiveSheet.PivotTables
 objNewSheet.Cells(CompteurLignes, 1).Value = tcd.Name
 objNewSheet.Cells(CompteurLignes, 2).Value = tcd.SourceData
 objNewSheet.Cells(CompteurLignes, 3).Value = ActiveSheet.Name
 objNewSheet.Cells(CompteurLignes, 4).Value = tcd.TableRange1.Address
 objNewSheet.Cells(CompteurLignes, 5).Value = tcd.RefreshName
 objNewSheet.Cells(CompteurLignes, 6).Value = tcd.RefreshDate

 CompteurLignes = CompteurLignes + 1
 Next
 CompteurFeuilles = CompteurFeuilles + 1
Loop

objNewSheet.Activate

Columns("A:F").EntireColumn.AutoFit 'adapte la largeur des colonnes
Application.ScreenUpdating = True
End Sub

Bonjour Mimimathy,

Merci pour la réponse, j’ai testé sur mon poste professionnel (Office 365) cela fonctionne. Le problème semble venir 1°) d’option explicit pour le objNewSheet, 2°) du fait que mon classeur contient des feuilles cachées. Je marque ce sujet en résolu.
Bonne journée.