tableau croisé

  • Initiateur de la discussion didier
  • Date de début
D

didier

Guest
Bonjour,
Pourriez vous me dire s'il est possible de récupérer le resultat d'un tableau croisé dynamique dans un UserForm ?.

Merci
 

MichelXld

XLDnaute Barbatruc
bonjour Didier

peux tu préciser quelles informations tu souhaites extraire
ci dessous quelques exemples :


récupérer les éléments d'un champ

Dim Pvt As PivotItem
For Each Pvt In ActiveSheet.PivotTables(1).PivotFields('Client').PivotItems
Debug.Print Pvt.Caption
Next



récupérer Les données du rapport

Dim Cell As Range
For Each Cell In ActiveSheet.PivotTables(1).DataBodyRange
Debug.Print Cell
Next Cell



bon apres midi
MichelXld
 
D

didier

Guest
Merci pour ta réponse.
En fait, je ne souhaite pas imprimer le résultat.
Je gere des infos présente dans des feuilles excel par le biais de divers formulaires (saisie, modification, suppression d'infos ...).
l'utilisateur ne voit pas les feuilles excel .
J'ai trouvé comment en vba créer un Tableau Croisé dynamique pour faire un compte de certaines infos; mon problème est que le résultat apparait dans une feuille, alors que je souhaiterai qu'il apparaisse dans un formulaire (dans une box quelconque).
merci
 

Dan

XLDnaute Barbatruc
Bonjour,

Pour récupérer une valeur dans un TCD, itu peux mettre cette instruction dans une macro en VBA :

Code:
Msgbox Sheets('TCD').PivotTables(1).GetData(''nom des champs')

avec
- 'nom des champs' --> le nom du champ à récupérer.
exemple : 'Total Avril'
- sheets('TCD') : le nom de la feuille où est située le tableau croisé


Si pb n'hésite pas

;)
 

MichelXld

XLDnaute Barbatruc
rebonjour Didier , bonjour cher Dan

En fait, je ne souhaite pas imprimer le résultat.

Debug.Print permet juste de visualiser le résultat dans la fenetre d'execution de l'editeur de macros

tu peux réessayer avec des MsgBox :


récupérer les éléments d'un champ

Dim Pvt As PivotItem
For Each Pvt In ActiveSheet.PivotTables(1).PivotFields('Client').PivotItems
MsgBox Pvt.Caption
Next



récupérer Les données du rapport

Dim Cell As Range
For Each Cell In ActiveSheet.PivotTables(1).DataBodyRange
MsgBox Cell
Next Cell



bonne soirée
MichelXld
 
D

didier

Guest
merci pour vos réponse.
Est-il possible de récupérer le nom de toutes les cellules du tableau et le nombre d'occurrence
(ex: toto | 3
titi | 4 etc )
dans une listbox (par exemple) avec un commande comme addItem.
merci
 

MichelXld

XLDnaute Barbatruc
bonjour Didier , bonjour cher Dan

il existe plusieurs solutions , mais ce n'est pas évident de répondre sans voir ton classeur

voici un exemple en utilisant la méthode GetData , comme proposé par mon ami Dan
(le TCD est dans la Feuil4 )


Private Sub UserForm_Initialize()
Dim Cell As Range
Dim Pvt As PivotTable
Dim Pvf As PivotField

ListBox1.ColumnCount = 2
ListBox1.ColumnWidths = '70;40'

Set Pvt = Sheets('Feuil4').PivotTables(1)
Set Pvf = Pvt.PivotFields(1)

For Each Cell In Pvf.DataRange

ListBox1.AddItem Cell

ListBox1.List(ListBox1.ListCount - 1, 1) = _
Sheets('Feuil4').PivotTables(1).GetData(''' & Pvt.DataFields(1).Name & '' ' _
& Pvf.Name & ' ' & Cell)

Next Cell
End Sub




bonne journée
MichelXld

Message édité par: michelxld, à: 16/04/2006 09:03
 

Dan

XLDnaute Barbatruc
Bonjour Didier, Bonjour cher ami Michel,

De fait Didier, je rejoins Michel. Compte tenu de ce que tu demandes, je pense que ce serait intéressant de voir ton fichier (avec données non confidentielles) de manière à te fournir la solution la plus appropriée.

Je t'invite aussi à consulter ce lien dans lequel j'ai placé un fichier explicatif concernant le fonction LIREDONNEETABCROISEDYN (un nom à coucher dehors :) ) , qui te permet de récupérer des infos dans un TCD.
Là bien entendu, il ne s'agit que de formules; donc, pas de macros.
Par rapport à ta demande c'est un complément puisque j'ai bien compris que tu cherches à faire cela par macro mais on ne sait jamais que tu y trouverais un intérêt.

Le lien : Fonction LIREDONNEESTABCROISEDYN

A plus tard

;)

Message édité par: Dan, à: 16/04/2006 10:39
 

Statistiques des forums

Discussions
312 348
Messages
2 087 508
Membres
103 567
dernier inscrit
johnregular1