Automatiser un TCD par une macro

Bonjour,

Une petite question pour automatiser un tdc par une macro. Ca bug :

Sub tcd()

'

' tcd Macro

'

'

Cells.Select

Sheets.Add

ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _

"POINT adm!R1C1:R1048576C22", Version:=xlPivotTableVersion14). _

CreatePivotTable TableDestination:="Feuil2!R3C1", TableName:= _

"Tableau croisé dynamique2", DefaultVersion:=xlPivotTableVersion14

Sheets("Feuil2").Select

Cells(3, 1).Select

With ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields( _

"ASSISTANTE")

.Orientation = xlRowField

.Position = 1

End With

With ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields("DC")

.Orientation = xlRowField

.Position = 2

End With

ActiveSheet.PivotTables("Tableau croisé dynamique2").AddDataField ActiveSheet. _

PivotTables("Tableau croisé dynamique2").PivotFields("ID_COMMANDE"), _

"Nombre de ID_COMMANDE", xlCount

With ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields( _

"STATUT_ESPACE")

.Orientation = xlColumnField

.Position = 1

End With

End Sub

Merci pour votre aide.

Cordialement,

Bonjour

C'est toujours d'avoir le fichier pour agir sur les TCD. Sinon code à essayer

Sub tcd()

Dim PlageTCD As Range

Worksheets.Add
With ThisWorkbook
    Set PlageTCD = Sheets("POINT adm").UsedRange
    .PivotCaches.Create(SourceType:=xlDatabase, SourceData:=PlageTCD).CreatePivotTable TableDestination:=ActiveSheet.Range("A3"), TableName:="Tableau croisé dynamique2"

    With .ActiveSheet.PivotTables("Tableau croisé dynamique2")
            .PivotFields("ASSISTANTE").Orientation = xlRowField
            .PivotFields("DC").Orientation = xlRowField
            .AddDataField ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields("ID_COMMANDE"), "Nombre de ID_COMMANDE", xlCount
            .PivotFields("STATUT_ESPACE").Orientation = xlColumnField
    End With
End With
End Sub

Si ok, lors de votre réponse, merci de cloturer le fil en cliquant sur la case à cocher verte à coté du bouton EDITER

Cordialement

Bonjour Dan,

Génial! Ca marche très bien! Merci infiniment.

J'aimerai connaitre l'astuce à faire pour d'autres TDC différents.. car je ne maîtrise pas du tout le langage VBA

En attendant ...

Merci encore!

Bien cordialement

Bonjour

J'aimerai connaitre l'astuce à faire pour d'autres TDC différents..

Il faudrait savoir si on part de la même base de données ou pas et quel est les champs à utiliser

Un fichier exemple serait mieux sinon

Sinon ce que je fais souvent, c'est créer le TCD manuellement afin que la présentation soit réalisée une fois pour toute et via un code VBA j'actualise automatiquement en fonction de l'ajout de nouvelles données dans la base de données. Cela a l'avantage qu'une fois le ou les TCD créés il est possible de les changer ou d'en créer de nouveaux sans à devoir refaire un code spécifique.

A vous relire

Cordialement

Woww! merciiiii faudrait que j'essaye parce que j'ai plusieurs bases de données et plusieurs types de TCD

Merci beaucoup!

bonjour à vous

pour ma part, je mets la zone de données sous "forme de tableau"

avantage : cette source est automatiquement étendue lors de la création de données

ensuite les TCD sont mis à jour par "actualiser"

(qu'on peut enregistrer en macro je pense. Mais est-ce vraiment utile ? )

avantage : pas de VBA. Donc pas de soucis si on change certains paramètres dans le fichier.

bonne journée

Bonjour,

Oui en effet, actualiser le TCD est pratique, mais comme le fichier devait être utilisé par plusieurs personnes qui n'ont pas forcément le temps je voulais enregistrer les TCD en selectionnant toute la feuille, en y ajoutant d'autres macros pour supprimer des lignes sous conditions et rattachament de données avec la RECHRCHEV car la base de donnée change d'une minute à l'autre... mais ça ne marchaIs pas pour une macro..

Merci beaucoup en tout cas.. je vais essayer avec le code pour les prochains TCD...

Bonne journée

Cordialement

Re

Oui en effet, actualiser le TCD est pratique, mais comme le fichier devait être utilisé par plusieurs personnes qui n'ont pas forcément le temps je voulais enregistrer les TCD en selectionnant toute la feuille,

Une fois la base de données faite, on définit la plage pour le TCD et la réactualisation peut se faire sur l'activation d'une feuille où se trouve le TCD. Pour ce qui concerne la plage de données, elle peut, en cas d'ajout de données, être prise en compte par formule ou par code.

mais ça ne marchaIs pas pour une macro..

Faudrait voir le fichier pour comprendre et proposer peut être une meilleure solution

Cordialement

Rechercher des sujets similaires à "automatiser tcd macro"