Votre question

[VBA] Récupérer nom des tableau croisé dynamique

Tags :
  • string
  • Programmation
Dernière réponse : dans Programmation
10 Décembre 2010 16:18:50

Bonjour ,

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 :
  1. Sub tcd()
  2. Dim NomTCD As String
  3. Dim tcd As PivotTable
  4. Dim Pvt As PivotTable
  5. Dim Cible As String, NomFeuille As String
  6. Dim source As String
  7. Dim nombre As Integer, nombre1 As Integer
  8. Dim nom As String, nominv As String, nom1 As String, nominv1 As String
  9.  
  10. 'Définit le premier TCD de la feuille active
  11. Set Pvt = ActiveSheet.PivotTables(1)
  12. MsgBox Pvt
  13. 'Extrait le nom de la feuille
  14. NomFeuille = Left(Pvt.SourceData, InStr(1, Pvt.SourceData, "!") - 1)
  15.  
  16. 'Pour gérer la version française d'Excel et remplacer le format xlL1C1 en xlR1C1.
  17. Cible = Mid(Pvt.SourceData, Len(NomFeuille) + 2)
  18. source = NomFeuille & "!" & Replace(Application.ConvertFormula( _
  19. Formula:=Cible, fromReferenceStyle:=xlR1C1, toReferenceStyle:=xlA1, toAbsolute:=xlAbsolute), "[" & ThisWorkbook.Name & "]", "")
  20.  
  21. 'compte les caracteres jusqu'au "."
  22. nombre = InStr(source, ".xls")
  23.  
  24. 'lit les caractere jusqu'au nombre trouver juste au dessus
  25. nom = Left(source, nombre)
  26.  
  27. 'inverse les caracteres
  28. nominv = StrReverse(source)
  29.  
  30. 'compte jusqu'au "!"
  31. nombre1 = InStr(nominv, "!")
  32.  
  33. nominv1 = Left(nominv, nombre1)
  34.  
  35. 'réinverse les cactere
  36. nom1 = StrReverse(nominv1)
  37. 'garde le nom du tableau sélectionner auparavant pour changer son lien en-dessous
  38. NomTCD = Pvt.Name
  39.  
  40. ActiveSheet.PivotTables(NomTCD).ChangePivotCache _
  41. ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=nom & "xlsm" & nom1, Version:=xlPivotTableVersion12)
  42. ActiveWindow.SmallScroll Down:=-21
  43.  
  44.  
  45.  
  46. 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.

Merci d'avance.

Autres pages sur : vba recuperer nom tableau croise dynamique

13 Décembre 2010 08:59:15

Aucune idée?
m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS