XL 2016 VBA - TCD - Questions diverses

Dudu2

XLDnaute Barbatruc
Bonjour le Forum,

Je m'adresse aux spécialistes des TCD et de leur manipulation en VBA.
Je suis très peu versé dans ce domaine et pour un utilisateur intensif de TCDs je dois réaliser certaines tâches en VBA.

La première est de reconstituer un TCD en VBA en partant d'un modèle de TCD existant (et évidemment d'une source de même modèle).
Je suppose qu'il y a plusieurs étapes: les champs, les filtres, les tris, les groupes...

Merci pour toute indication de méthode, code etc...
Désolé pour cette question très ouverte. Peut-être n'est-elle pas judicieuse dans le cadre du forum.
 
Dernière édition:

Dudu2

XLDnaute Barbatruc
Si tu copies le TDC sur une autre feuille, tu n'a qu'à lui donner le bon range pour que ça fonctionne !
Oui, ça je sais bien, mais le TCD copié / exporté dans un classeur destiné à servir de modèle ultérieurement, je ne peux pas lui laisser le SourceData du TCD originel qui va disparaitre et qui de toutes façons me ferait un lien externe.

Il faut que je lui assigne des données spécifiques (d'ailleurs j'ai prévu un simple échantillon du SourceData originel comme simple base de référence). Et c'est là que je dois trouver le SourceData originel pour le recopier dans le classeur modèle et le ré-assigner au TCD copié / exporté.
 
Dernière édition:

Dudu2

XLDnaute Barbatruc
Bon, j'ai fini par décoder ce SourceData dans tous les cas pour en faire un Range en identifiant:
- Le classeur
- La feuille
- Le Range
ce quelque soit le référencement:
VB:
Function SourceDataToRange(TCD As PivotTable) As Range
    SourceData = TCD.SourceData
    '_____________
    'Range désigné
    '"L5C3:L8C5"
    '"Feuil1!L5C3:L8C5"
    '"[Classeur1]Feuil1!L5C3:L8C5"
    '___________________________
    'Nom du Gestionnaire de noms
    '"Mazone"
    '"Tableau1"
    '"Classeur1!Tableau1"
J'ai fait du code mais je vois pas d'autre solution !

Edit: si quelqu'un est intéressé, je peux passer le code du bidule, testé pour tous les cas listés.
 
Dernière édition:

dysorthographie

XLDnaute Accro
tu peux donner n'importe quel datasource dans la mesure ou il respect le forma du TDC!
dsource = "'" & PathFichier & "]" & Onglet & "'!" & Range("G1:K7").Address(ReferenceStyle:=xlR1C1)
VB:
Sub a()
With Workbooks.ADD
        .Sheets(1).Name = "TDC"
        TdcExistant(ThisWorkbook.Sheets("Tdc"), "TDC").TableRange2.Copy .Sheets("TDC").Range("A1")
        .Sheets("TDC").PivotTables(.Sheets("TDC").PivotTables.Count).Name = "TDC"
        ThisWorkbook.Sheets("Data").UsedRange.Copy .Sheets("Feuil3").Range("A1")
       .Sheets("TDC").PivotTables("TDC").PivotCache.SourceData = "Feuil3!" & Range("G1:K7").Address(ReferenceStyle:=xlR1C1)
End With
End Sub

Public Function TdcExistant(Sh As Worksheet, Tdc As String) As PivotTable
For Each td In Sh.PivotTables
   If UCase(td.Name) = UCase(Tdc) Then
         Set TdcExistant = td
         Exit For
   End If
Next
End Function
 

Dudu2

XLDnaute Barbatruc
tu peux donner n'importe quel datasource dans la mesure ou il respect le forma du TDC!
dsource = "'" & PathFichier & "]" & Onglet & "'!" & Range("G1:K7").Address(ReferenceStyle:=xlR1C1)
Oui, merci pour la formulation.
Ça j'ai à le faire lorsque j'assigne la source copiée / échantillonnée en Export dans le classeur TCD modèle. Et de manière symétrique sur la vraie source en Import à partir du TCD modèle.

Le code que j'ai du faire c'est pour faire l'inverse, c'est à dire transformer la SourceData originelle en format TCD à l'export en Range copiable. Rien de savant.

Et pourquoi ne pas appeler ça un "tableau croisé dynamique" comme le fait Microsoft ?
Moi j'appelle ça un TCD mais si ça s'appelle aussi un TDC qui n'est pas un fourchage de doigts, why not ? Le nom original c'est Pivot Table, donc PT en short. Si j'ose dire.
 
Dernière édition:

TooFatBoy

XLDnaute Barbatruc
Moi j'appelle ça un TCD mais si ça s'appelle aussi un TDC qui n'est pas un fourchage de doigts, why not ?
Moi je dis ça par rapport à ce qui est écrit dans les menus de ma version d'Excel (et un peu par rapport à ce que je vois partout sur le Net).
Mais c'est vrai que chacun peut lui donner le nom qu'il veut (même si c'est quand même légèrement moins pratique pour se comprendre si chacun invente son propre nom 😁).


Le nom original c'est Pivot Table, donc PT en short. Si j'ose dire.
Fantastique aussi celle-là. Je mets un 10/10 ! 🤣🤣🤣👍
 

dysorthographie

XLDnaute Accro
Et pourquoi ne pas appeler ça un "tableau croisé dynamique" comme le fait Microsoft ? 🤔
Bonjour,
tableau croisé dynamique1,tableau croisé dynamique2,tableau croisé dynamique1214????


parce qu'on ne sais pas comment Microsoft va l'appeler, alors que si on lui donne un nom, et peut importe lequel, on sais le quel cherche par la suite!
 
Dernière édition:

Dudu2

XLDnaute Barbatruc
Ok les TCDistes, merci pour les tuyaux, le principe énoncé en Post #20 fonctionne comme une horloge.
Exporter des TCDs, pour appliquer / importer facilement leurs structures à des nouvelles sources de données récurrentes et (+/-) identiques en un claquement de doigt, c'est une affaire qui roule
1666534232293.gif
.
Que de temps gagné !
 

Dudu2

XLDnaute Barbatruc
Bonjour @Staple1600,
J'ai fait ça dans le cadre d'un développement applicatif avec intégration dans un Formulaire de liste des Modèles TCD, d'un système de stockage. Top gros à sortir en exemple.
J'avais laissé un bout de code ne Post #20 retiré pour cause que la discussion avait dévié du principe qu'il mettait en œuvre. Je dois l'avoir quelque part, je le remettrai.
 

Discussions similaires

Statistiques des forums

Discussions
315 093
Messages
2 116 125
Membres
112 666
dernier inscrit
Coco0505