Utilitaire de récupération des paramètres d'un TCD par VBA

Herdet

Nous a quitté
Repose en paix
Bonjour,
Ci-joint un utilitaire pour récupérer pas mal de paramètres d'un TCD (Tableau Croisé Dynamique)

Voir la procédure Sub TCDparam(ByVal Fichier As String, ByVal TCDfeu As String, ByVal TCDnom As String)
Les paramètres sont récupérés à partir de la fonction Set aa = .DataBodyRange

Si vous avez d'autres besoins de paramètres, on doit pouvoir améliorer cet utilitaire.

Bonne utilisation.

Robert
 

Pièces jointes

  • RDE-parametres des TCD.xlsm
    565.2 KB · Affichages: 105
  • RDE-parametres des TCD.xlsm
    565.2 KB · Affichages: 122
  • RDE-parametres des TCD.xlsm
    565.2 KB · Affichages: 130

chris

XLDnaute Barbatruc
Re : Utilitaire de récupération des paramètres d'un TCD par VBA

Bonjour

Beau travail.
Cela me parait intéressant.
Pour compléter tu peux peut-être ajouter dans TCDparam quelques infos sur les champs de page.
 

Herdet

Nous a quitté
Repose en paix
Re : Utilitaire de récupération des paramètres d'un TCD par VBA

Bonjour

Beau travail.
Cela me parait intéressant.
Pour compléter tu peux peut-être ajouter dans TCDparam quelques infos sur les champs de page.
Bonjour,
Désolé de ne pas avoir répondu plus tôt.
chris
Bonne idée, je me replonge dans le code.
Le 1er champ de page est 2 lignes au dessus de la 1ère ligne de champs mais comme il peut y avoir plusieurs champs de page et plusieurs lignes de champs, il va falloir faire un peu de balayage de cellules ou de Find.
A tester et au passage, je vais ajouter les listes de champs de 4 zones du TCD et chercher s'il y a quelques infos supplémentaires extractibles.

A+
Robert
 

Pierrot93

XLDnaute Barbatruc
Re : Utilitaire de récupération des paramètres d'un TCD par VBA

Bonjour Robert, Chris:)

pour les champs de page, regarde peut être du coté de la propriété "PageRange" :

Code:
MsgBox ActiveSheet.PivotTables(1).PageRange.Address

bon après midi
@+
 

Herdet

Nous a quitté
Repose en paix
Re : Utilitaire de récupération des paramètres d'un TCD par VBA

Bonjour Robert, Chris:)
pour les champs de page, regarde peut être du coté de la propriété "PageRange" :
Code:
MsgBox ActiveSheet.PivotTables(1).PageRange.Address
bon après midi
@+
Bonjour,
Merci Pierrot93 pour l'info.
J'ajoute PageRange et PageRangeCells à ma liste d'exploration de ColumnFields DataFields HiddenFields PageFields RowFields VisibleFields .
Ca fait déjà pas mal de propriétés intéressantes à comprendre et à exploiter.

A +
Robert
 
Dernière édition:

Herdet

Nous a quitté
Repose en paix
Re : Utilitaire de récupération des paramètres d'un TCD par VBA - Version V2

Bonjour,
Suite à la remarque de chris sur le manque des champs de page, j'ai repris l'utilitaire.
Comme le code était inclus dans le fichier des données, c'était un peu limité et après réflexion j'ai préféré reprendre à zéro et muscler l'utilitaire qui est quasiment devenu une petite application.

L'application en version V2 jointe permet d'extraire les paramètres de n'importe quel fichier ouvert, avec ou sans TCD dont l'existance sera vérifiée.

Les fonctionnalités sont regroupées dans un Multipage de la boîte de dialogue.

Onglet PRESENTATION
Information sur les fonctionnalités

Onglet PARAMETRES
Ouverture d'un fichier, affichage des TCD, extraction des paramètres d'un TCD sélectionné
A noter : une fonction de lecture d'une Listbox sans cliquer dans un idem, simplement en la survolant (avec un MouseMove )

Onglet EXPORT
Export des résultats du TCD sélectionné ou de tous les TCD dans des nouvelles feuilles d'un nouveau classeur, dans n'importe quel autre classeur ouvert y compris le classeur source.

J'ai déjà fais pas mal de tests y compris avec une base de 38 000 lignes x 42 colonnes, 8 TCD de 11 000 lignes dont l'exécution est assez rapide.
Je joins dans le ZIP l'exemple de base de 7800 lignes utilisé pour la version 1

Merci pour vos débogages, votre avis et les améliorations possibles pour une future version V3

Cordialement
Robert

PS pour chris : ton incitation à pousser le bouchon plus loin à été très motivante.
 

Pièces jointes

  • RDE-parametres des TCD_v02.zip
    608.9 KB · Affichages: 52
  • RDE-parametres des TCD_v02.zip
    608.9 KB · Affichages: 49
  • RDE-parametres des TCD_v02.zip
    608.9 KB · Affichages: 63
Dernière édition:

eriiic

XLDnaute Barbatruc
Re : Utilitaire de récupération des paramètres d'un TCD par VBA

Bonjour,

merci, ça a l'air interessant.
Mais ma curiosité a été frustrée dès le départ :
16-08-2014 23-22-12.jpg
Sur 2010, pas de ressources manquantes. Je ne vois pas en quoi le columnwidths = ... le dérange.

eric
 

Herdet

Nous a quitté
Repose en paix
Re : Utilitaire de récupération des paramètres d'un TCD par VBA

Bonjour,

merci, ça a l'air interessant.
Mais ma curiosité a été frustrée dès le départ :
Regarde la pièce jointe 314022
Sur 2010, pas de ressources manquantes. Je ne vois pas en quoi le columnwidths = ... le dérange.

eric
Bonsoir,
Milles excuses, voiçi la version corrigée.
Je pense que c'est à cause de la référence Common Controls 6 qui traînait.
Sinon pour les autres Références,normalement c'est celles de base.

Le débogueur VBA à parfois et même souvent un comportement étonnant sur les lignes de plantage.
Je reste à l'écoute...

A+
Robert
 

Pièces jointes

  • RDE-parametres des TCD_v02.zip
    608.9 KB · Affichages: 51
  • RDE-parametres des TCD_v02.zip
    608.9 KB · Affichages: 56
  • RDE-parametres des TCD_v02.zip
    608.9 KB · Affichages: 55
Dernière édition:

Xwprft

XLDnaute Junior
Re : Utilitaire de récupération des paramètres d'un TCD par VBA

Bonsoir Herdet, le forum,

Je peux ouvrir RDE-base de donnees
Mais pas RDE-paramètres de TCD
Quand je veux l'ouvrir directement dans le ZIP j'ai :


sinon si je le copie chez moi et que je l'ouvre j'ai : "Impossible d'ouvrir ... car son format ou son extension n'est pas valide ..."
pourtant c'est bien un xlsm.

A+
 

Pièces jointes

  • erreur TCD.PNG
    erreur TCD.PNG
    8.7 KB · Affichages: 59

chris

XLDnaute Barbatruc
Re : Utilitaire de récupération des paramètres d'un TCD par VBA

Bonjour

Xwprft : les TCD ont évolué entre 2007 et 2010 : peut être une incompatibilité sur un détail... Quoique c'est le programme et non le classeur de TCD qui te pose problème si j'ai bien compris...

Herdet : Quel boulot !
Je testerai demain : sur ton classeur cela marche mais au premier lancement sur un de mes classeurs avec plein de TCD, je plante sur les cas suivants : champ calculé et TCD multi source créé avec l'assistant pour synthétiser deux TCD.

Il faut que je prenne des cas standard puis ensuite on verra sur les cas tordus...
 
Dernière édition:

chris

XLDnaute Barbatruc
Re : Utilitaire de récupération des paramètres d'un TCD par VBA

Bonjour

Je n'ai pas regardé le code de façon détaillée mais j'ai un souci avec la constitution de T_ItemsGeneral :
  • l'élément 1 contient la liste de champs
  • le suivant des nombre
  • ensuite pour chaque champ les éléments classés
La source à 35 lignes dont titres et le code plante sur la valeur 35 de ii.

Idem sur un autre mais cela ne semble pas lié au nombre de lignes de la source.
Il y avait des regroupements : je les ai enlevé mais cela ne résout pas.

Je vais essayer de reconstruire un TCD à partir de la même source et voir...

Edit : même source : un TCD même d'un seul champ plante. Sorry
 
Dernière édition:

Herdet

Nous a quitté
Repose en paix
Re : Utilitaire de récupération des paramètres d'un TCD par VBA

Bonjour Xwprft, chris et eriiic (et le forum )

Ce problème concernant les .ColumnWidths est quand même assez étonnant car il n'y a pas de Références ou d'objets un peu "exotiques"et en principe, je n'utilise que les controles de base mis à part les Listview et Treeview de MSCOMCTL.OCX ou MSCOMCT2.OCX
Ce bug plutôt rare, est un peu embêtant car cela concerne les largeurs de colonnes des ListBox.

Pour tester, j'ai fais une version V02_01 ci-jointe en remplaçant les .ColumnWidths par les chemin complet par exemple MPAprinc.PagePARAM.P_LBX_paramCha.ColumnWidths = "130;80"
Dans l'attente de vos avis.

chris
"champ calculé et TCD multi source créé avec l'assistant pour synthétiser deux TCD"
Voila qui va être intéressant à tester.

Effectivement, ... une petite semaine de boulot (à cause de pas mal d'hésitations faute de cahier des charge)
Je me suis un peu inspiré de l'application que j'avais faite et diffusée pour les extraction de code VBA
Ci-joint fichier : RD_gestion editeur_VBA_V1-07-00.zip
https://www.excel-downloads.com/thr...diteur-vba-et-des-extractions-de-code.213444/

A+
Robert
 

Pièces jointes

  • RDE-parametres des TCD_v02_01.zip
    204.2 KB · Affichages: 75
  • RD_gestion editeur_VBA_V1-07-00.zip
    396.2 KB · Affichages: 71

Herdet

Nous a quitté
Repose en paix
Re : Utilitaire de récupération des paramètres d'un TCD par VBA

Bonjour

Je n'ai pas regardé le code de façon détaillée mais j'ai un souci avec la constitution de T_ItemsGeneral :
  • l'élément 1 contient la liste de champs
  • le suivant des nombre
  • ensuite pour chaque champ les éléments classés
La source à 35 lignes dont titres et le code plante sur la valeur 35 de ii.
Idem sur un autre mais cela ne semble pas lié au nombre de lignes de la source.
Il y avait des regroupements : je les ai enlevé mais cela ne résout pas.
Je vais essayer de reconstruire un TCD à partir de la même source et voir...
Edit : même source : un TCD même d'un seul champ plante. Sorry
Le tableau général T_ItemsGeneral comprend ItemsNliMax lignes (nb maxi d'items dans les champ) + 2 lignes (nom champ, nb d'tems) c'est à dire .PivotItems.Count maximum + 2

Je t'ai envoyé mon email par message privé, ce sera plus simple pour m'envoyer tes fichiers exemples.

Je sens que ça va être compliqué pour les champs calculés car il ne figurent pas dans les listes de Fields (page, lignes, colonnes, données, valeurs) et l'objet .CalculatedFields n'a pas de propriété .name ( en Excel 2010).
Si tu as une idée, je suis preneur.
A+
Robert
 

Discussions similaires

Statistiques des forums

Discussions
312 251
Messages
2 086 616
Membres
103 264
dernier inscrit
Theom76