OVH Cloud OVH Cloud

"Décroiser" un TCD pour exporter vers ACCESS

1 réponse
Avatar
kolele
Je viens de m'initier à VBA sur Excel et je voudrais me faire la main sur une
idée de procédure : il s'agirait de convertir un tableau croisé dynamique en
tableau simple, pour récupérer les données sous ACCESS dans une table. Donc,
l'objectif c'est de transformer les intitulés de colonnes de mon tableau
croisé, en champs d'une nouvelle colonne.
Ex: tableau croisé avec les dépenses (le croisement) des établissements (en
ligne) et les années (en colonne). Moi je voudrais supprimer le croisement
pour obtenir une colonne avec le nom des établissements, une colonne avec
l'année, une colonne avec la dépense.
Quelle architecture pour la procédure, les grandes étapes ? Si quelqu'un
avait le code tout prêt, ce serait encore mieux !
C'est peut être ambitieux mon projet, mais on avance jamais autant que
lorsqu'on a un projet.
merci.

1 réponse

Avatar
Trirème
Bonjour kolele

Tu peux t'inspirer de ce code trouvé dans Excelabo (Étiquettes
persistantes) :
http://www.excelabo.net/xl/tcd.php#vieillesetiquettes

--- début de citation
Pour tenir compte des champs calculés ne pas oublier de rafraîchir le
TCD avant de savoir s'il
faut détruire.
'
'===================== Sub DeleteOldItemsWB()
'gets rid of unused items in PivotTable
' based on MSKB (202232)
Dim ws As Worksheet
Dim pt As PivotTable
Dim pf As PivotField
Dim pi As PivotItem
Dim i As Integer

On Error Resume Next
For Each ws In ActiveWorkbook.Worksheets
For Each pt In ws.PivotTables
pt.RefreshTable
For Each pf In pt.PivotFields
For Each pi In pf.PivotItems
If pi.RecordCount = 0 And _
Not pi.IsCalculated Then
pi.Delete
End If
Next
Next
Next
Next
End Sub

--- fin de citation

Il parcourt tous les TCD de toutes les feuilles, mais les boucles les
plus internes peuvent t'inspirer pour collecter chaque item de chaque
champ dans une liste. Liste que tu exploiteras par la suite.

Bonne continuation pour le projet.
Cordialement
Trirème

Je viens de m'initier à VBA sur Excel et je voudrais me faire la main sur une
idée de procédure : il s'agirait de convertir un tableau croisé dynamique en
tableau simple, pour récupérer les données sous ACCESS dans une table. Donc,
l'objectif c'est de transformer les intitulés de colonnes de mon tableau
croisé, en champs d'une nouvelle colonne.
Ex: tableau croisé avec les dépenses (le croisement) des établissements (en
ligne) et les années (en colonne). Moi je voudrais supprimer le croisement
pour obtenir une colonne avec le nom des établissements, une colonne avec
l'année, une colonne avec la dépense.
Quelle architecture pour la procédure, les grandes étapes ? Si quelqu'un
avait le code tout prêt, ce serait encore mieux !
C'est peut être ambitieux mon projet, mais on avance jamais autant que
lorsqu'on a un projet.
merci.