XL 2013 Signaler toutes les connexions slicercaches/TCD possibles d'un classeur d'un coup avec VBA.

Tabanet1

XLDnaute Nouveau
Bonjour à tous, j'essaie sans succès de parcourir tous les segments (slicercache) (+ chronologie dans un second temps), d'un fichier Excel à l'aide de VBA et de chacun leur affecter tous les TCD de ce même fichier. J'essaie tout simplement de faire ça car j'ai une 50ène de TCD et une petite 100ène de segments (oui le fichier est costaud :cool:), ce qui ne me semble pas envisageable à faire manuellement. De plus, si le fichier venait à être modifié, la méthode manuelle me semble tout simplement pas appropriée.

J'ai essayé d'enregistrer une macro pour voir les actions que fais excel lorsque je le fais manuellement en cochant les TCD à partir d'un segment (lorsque je signal les connexions). Mais le bout de code généré par Excel ne me satisfait pas car très bourrin (assigne un à un les TCD à un unique segment) bien entendu j'aimerai créer un bouble pour parcourir tout le fichier, cette méthode étant bien plus souple pour des évolution ultérieures de mon fichier.

Ainsi, sauf erreur de ma part, la difficulté réside dans :
  1. Réussir à identifier puis parcourir tous les slicercaches du fichier (dans un seul onglet, ouf...). Puis dérouler une boucle
  2. Affecter aux segments tous les TCD du fichier (et la il y en a un peu partout).
Je n'ai pas trouvé sur ce forum ni dans des forums anglais des bouts de code pour arriver à mes fins (des automatisations sur des slicerCaches ce n'est pas si aisé à trouver... Je verrai bien quelque chose du style mais niveau syntaxe et parcours des objets je pense que je me plante :

Dim NomTCD as string
Dim NameSlicer as string

' For all slicerCaches in activeWorkbook (ca pas ultra fan mais permet de détecter tout les slicer)
'------------------------------------------


For nbSlicer = 1 to (trouver moyen de les compter)

NameSlicer = (trouver moyen de recupérer le name du slicer pour l'itération de nbSlicer)

For nbTCD = 1 to (trouver moyen de les compter)

NameTCD = (trouver moyen de recupérer le name du TCD pour l'itération de nbTCD )

ActiveSheet.Shapes.Range(Array('Trouver moyen de récupérer le nom du TCD que control le Segement sélectionné' )).Select
ActiveWorkbook.SlicerCaches(NameSlicer ).PivotTables.AddPivotTable (ActiveSheet.PivotTables(NameTCD ))

Next nbTCD

Next nbSlicer


Merci d'avance pour votre aide, j'espère que ce petit défi de codage saura attirer votre curiosité comme il en est pour la mienne ! ;)

PS : je ne peux pas vous fournir l'excel mais en revanche si besoin je peux créer une version allégée (juste quelques segments qui controlent quelques TCD, mais c'est tout de même assez trivial à faire et je pense que la personne en mesure de m'aider sur ce sujet est capable de créer un TCD en 20 secondes).
 

Discussions similaires