![]() |
|
Forum
|
|
|
#2 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: février 2005
Messages: 3 691
|
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').P ivotItems 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 |
|
|
|
|
|
#3 (permalink) |
|
Guest
Messages: n/a
|
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 |
|
|
|
#4 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: février 2005
Localisation: Liège
Version Excel : Excel 2004 (MAC)
Messages: 3 535
|
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')
- '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 ![]() |
|
|
|
|
|
#5 (permalink) | |
|
XLDnaute Barbatruc
Date d'inscription: février 2005
Messages: 3 691
|
rebonjour Didier , bonjour cher Dan
Citation:
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').P ivotItems 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 |
|
|
|
|
|
|
#7 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: février 2005
Messages: 3 691
|
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 |
|
|
|
|
|
#8 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: février 2005
Localisation: Liège
Version Excel : Excel 2004 (MAC)
Messages: 3 535
|
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 |
|
|
|
![]() |
| Liens sociaux |
| Outils de la discussion | |
|
|