Automatiser un TCD par une macro

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Répondre
A
ALIGATOR
Membre habitué
Membre habitué
Messages : 63
Inscrit le : 12 juin 2016
Version d'Excel : 2010

Message par ALIGATOR » 18 octobre 2016, 14:21

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,
Avatar du membre
Dan
Modérateur
Modérateur
Messages : 6'379
Appréciations reçues : 112
Inscrit le : 27 avril 2007
Version d'Excel : Office 365, Mac 2011

Message par Dan » 19 octobre 2016, 13:10

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
@+ Dan ;)
A
ALIGATOR
Membre habitué
Membre habitué
Messages : 63
Inscrit le : 12 juin 2016
Version d'Excel : 2010

Message par ALIGATOR » 19 octobre 2016, 14:58

Bonjour Dan,

Génial! Ca marche très bien! Merci infiniment. :D
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
Avatar du membre
Dan
Modérateur
Modérateur
Messages : 6'379
Appréciations reçues : 112
Inscrit le : 27 avril 2007
Version d'Excel : Office 365, Mac 2011

Message par Dan » 20 octobre 2016, 08:17

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
@+ Dan ;)
A
ALIGATOR
Membre habitué
Membre habitué
Messages : 63
Inscrit le : 12 juin 2016
Version d'Excel : 2010

Message par ALIGATOR » 20 octobre 2016, 12:37

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


Merci beaucoup!
j
jmd
Fanatique d'Excel
Fanatique d'Excel
Messages : 10'599
Appréciations reçues : 250
Inscrit le : 8 décembre 2007
Version d'Excel : 365 + PowerBI

Message par jmd » 20 octobre 2016, 13:01

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
Apprenez les fonctions d'Excel.
Exemple "Mettre sous forme de tableau", TCD, "Récupérer des données".
Apprendre les fonctionnalités "récentes".
A
ALIGATOR
Membre habitué
Membre habitué
Messages : 63
Inscrit le : 12 juin 2016
Version d'Excel : 2010

Message par ALIGATOR » 20 octobre 2016, 14:12

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
Avatar du membre
Dan
Modérateur
Modérateur
Messages : 6'379
Appréciations reçues : 112
Inscrit le : 27 avril 2007
Version d'Excel : Office 365, Mac 2011

Message par Dan » 21 octobre 2016, 08:08

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
@+ Dan ;)
Répondre
  • Sujets similaires
    Réponses
    Vues
    Dernier message