D
DCHICHE
Guest
Bonjour,
J'ai besoin de récupérer des calculs issus d'un TCD (par exemple les 20 premiers clients qui réalisent 80% du CA).
Je me débrouille bien dans excel mais dès qu'il s'agit de faire un tour dans le VBA, cela se complique. Après quelques heures de recherche, j'ai compris les éléments suivants:
En VBA, pour définir une variable correspondant à un objet TCD, on utilise PivotTable comme ceci:
'Set tableau = Worksheets('Essai').Range('A1').PivotTable'
Pour obtenir la liste des champs de données, on utilise Datafields
'i = 0
For Each champ In tableau.DataFields
Worksheets('Essai').Cells(10 + i, 1).Value = champ.Name
i = i + 1
Next champ'
Pour obtenir la liste des items du 1er champ de donnée on utilise PivotItems
'For Each champ In tableau.DataFields(1).PivotItems
Worksheets('Essai').Cells(10 + i, 1).Value = champ.Name
i = i + 1
Next champ'
Pour obtenir la liste des champs de ligne, on utilise RowFields
'i = 0
For Each champ In tableau.RowFields
Worksheets('Essai').Cells(10 + i, 2).Value = champ.Name
i = i + 1
Next champ'
Pour obtenir la liste des items du 1er champ de ligne, on utilise Pivotitems
'For Each champ In tableau.RowFields(1).PivotItems
Worksheets('Essai').Cells(10 + i, 2).Value = champ.Name
i = i + 1
Next champ'
Pour obtenir la liste des champs de colonne, on utilise ColumnFields
'i = 0
For Each champ In tableau.ColumnFields
Worksheets('Essai').Cells(10 + i, 3).Value = champ.Name
i = i + 1
Next champ'
Pour obtenir la liste des items du 1er champ de colonne, on utilise Pivotitems
For Each champ In tableau.ColumnFields(1).PivotItems
Worksheets('Essai').Cells(10 + i, 3).Value = champ.Name
i = i + 1
Next champ
Mais comment faire pour obtenir les données elles-mêmes correspondant à ces ligne ou ces colonnes sous forme de vecteur? Ce doit être évident pour un programmeur. En ce qui me concerne, j'y vais à taton. Je suis complètement novice en programmation. Je pense qu'un habitué du VBA doit pouvoir me répondre facilement.
Merci d'avance.
Pour bien comprendre ma question, je joins le fichier exemple avec la macro que j'ai faite. [file name=Etude TCD_20050331151743.zip size=11941]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Etude TCD_20050331151743.zip[/file]
J'ai besoin de récupérer des calculs issus d'un TCD (par exemple les 20 premiers clients qui réalisent 80% du CA).
Je me débrouille bien dans excel mais dès qu'il s'agit de faire un tour dans le VBA, cela se complique. Après quelques heures de recherche, j'ai compris les éléments suivants:
En VBA, pour définir une variable correspondant à un objet TCD, on utilise PivotTable comme ceci:
'Set tableau = Worksheets('Essai').Range('A1').PivotTable'
Pour obtenir la liste des champs de données, on utilise Datafields
'i = 0
For Each champ In tableau.DataFields
Worksheets('Essai').Cells(10 + i, 1).Value = champ.Name
i = i + 1
Next champ'
Pour obtenir la liste des items du 1er champ de donnée on utilise PivotItems
'For Each champ In tableau.DataFields(1).PivotItems
Worksheets('Essai').Cells(10 + i, 1).Value = champ.Name
i = i + 1
Next champ'
Pour obtenir la liste des champs de ligne, on utilise RowFields
'i = 0
For Each champ In tableau.RowFields
Worksheets('Essai').Cells(10 + i, 2).Value = champ.Name
i = i + 1
Next champ'
Pour obtenir la liste des items du 1er champ de ligne, on utilise Pivotitems
'For Each champ In tableau.RowFields(1).PivotItems
Worksheets('Essai').Cells(10 + i, 2).Value = champ.Name
i = i + 1
Next champ'
Pour obtenir la liste des champs de colonne, on utilise ColumnFields
'i = 0
For Each champ In tableau.ColumnFields
Worksheets('Essai').Cells(10 + i, 3).Value = champ.Name
i = i + 1
Next champ'
Pour obtenir la liste des items du 1er champ de colonne, on utilise Pivotitems
For Each champ In tableau.ColumnFields(1).PivotItems
Worksheets('Essai').Cells(10 + i, 3).Value = champ.Name
i = i + 1
Next champ
Mais comment faire pour obtenir les données elles-mêmes correspondant à ces ligne ou ces colonnes sous forme de vecteur? Ce doit être évident pour un programmeur. En ce qui me concerne, j'y vais à taton. Je suis complètement novice en programmation. Je pense qu'un habitué du VBA doit pouvoir me répondre facilement.
Merci d'avance.
Pour bien comprendre ma question, je joins le fichier exemple avec la macro que j'ai faite. [file name=Etude TCD_20050331151743.zip size=11941]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Etude TCD_20050331151743.zip[/file]