Enregistrer macro TCD

Bonjour,

Etant novice sur VBA, je rencontre un petit un problème que je n'arrive pas à résoudre lorsque j'essaie d'enregistrer une macro pour générer un TCD. Voici le code :

Sub Macro2()

'

' Macro2 Macro

'

'

Range("A1:G218").Select

Sheets.Add

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

"Frais!R1C1:R218C7", Version:=xlPivotTableVersion12).CreatePivotTable _

TableDestination:="Feuil1!R3C1", TableName:="Tableau croisé dynamique1", _

DefaultVersion:=xlPivotTableVersion12

Sheets("Feuil1").Select

Cells(3, 1).Select

With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Mois")

.Orientation = xlRowField

.Position = 1

End With

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

"Catégorie")

.Orientation = xlRowField

.Position = 2

End With

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

PivotTables("Tableau croisé dynamique1").PivotFields("Montant TTC"), _

"Somme de Montant TTC", xlSum

End Sub

Une "erreur d'exécution '1004' Erreur définie par l'application ou l'objet" se produit sur le texte en gras et je n'arrive pas à résoudre ce problème.

Je vous saurais gré de bien vouloir m'aider.

Merci

Bonsoir,

Probablement que cela est du à cette instruction --> TableDestination:="Feuil1!R3C1"

Il faut que ta feuille n'existe pas dans ton fichier

Essaie comme ceci :

Sheets.Add
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"Frais!R1C1:R218C7").CreatePivotTable _
TableDestination=Activesheet.range("A1"), TableName:="Tableau croisé dynamique1"

Sinon mets ton fichier en ligne, ce sera plus facile de te donner le bon code.

Amicalement

J'ai réussi à résoudre mon problème, grâce à une aide précieuse. Voici le code pour ceux que ça intéresse :

Sub TCD()

'

' TCD Macro

'

Range("A1:G500").Select

Sheets.Add

shtdc = ActiveSheet.Name

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

"Frais!R1C1:R218C7", Version:=xlPivotTableVersion12).CreatePivotTable _

TableDestination:=shtdc & "!R3C1", TableName:="Tableau croisé dynamique1", _

DefaultVersion:=xlPivotTableVersion12

Sheets(shtdc).Select

Cells(3, 1).Select

With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Mois")

.Orientation = xlRowField

.Position = 1

End With

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

"Catégorie")

.Orientation = xlRowField

.Position = 2

End With

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

PivotTables("Tableau croisé dynamique1").PivotFields("Montant TTC"), _

"Somme de Montant TTC", xlSum

End Sub

Merci quand même de ton aide Dan, ça fait plaisir!

beenie-woman a écrit :

J'ai réussi à résoudre mon problème, grâce à une aide précieuse. Voici le code pour ceux que ça intéresse :

Sub TCD()

'

' TCD Macro

'

Range("A1:G500").Select

Sheets.Add

shtdc = ActiveSheet.Name

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

"Frais!R1C1:R218C7", Version:=xlPivotTableVersion12).CreatePivotTable _

TableDestination:=shtdc & "!R3C1", TableName:="Tableau croisé dynamique1", _

DefaultVersion:=xlPivotTableVersion12

Sheets(shtdc).Select

Cells(3, 1).Select

With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Mois")

.Orientation = xlRowField

.Position = 1

End With

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

"Catégorie")

.Orientation = xlRowField

.Position = 2

End With

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

PivotTables("Tableau croisé dynamique1").PivotFields("Montant TTC"), _

"Somme de Montant TTC", xlSum

End Sub

Merci quand même de ton aide Dan, ça fait plaisir!

Bonjour,

J'ai essayé de reproduire la procédure ci-dessus car moi aussi j'ai un souci avec le feuille de destination, mais ça ne marche pas.

Voci le code:

Sheets.Add
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        "Batch Start!R1C1:R1328C32", Version:=xlPivotTableVersion14). _
        CreatePivotTable TableDestination:=shtdc & "!R3C1", TableName:= _
        "Tableau croisé dynamique1", DefaultVersion:=xlPivotTableVersion14
    Sheets(shtdc).Select

le message d'erreur est le suivant: erreur d'execution 5

Je vous saurais gré de bien vouloir m'aider.

Cordialement,

Max

Bonsoir

Je n'y connais rien en TCD

Mais dans les noms de feuilles comportant au moins une espace il faut encadrer le nom par des ' (apostrophes)

Sheets.Add
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        "'Batch Start'!R1C1:R1328C32", Version:=xlPivotTableVersion14). _
        CreatePivotTable TableDestination:=shtdc & "!R3C1", TableName:= _
        "Tableau croisé dynamique1", DefaultVersion:=xlPivotTableVersion14
    Sheets(shtdc).Select

A vérifier

Si pas ça joins une copie de ton fichier

Banzai64 a écrit :

Bonsoir

Je n'y connais rien en TCD

Mais dans les noms de feuilles comportant au moins une espace il faut encadrer le nom par des ' (apostrophes)

Sheets.Add
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        "'Batch Start'!R1C1:R1328C32", Version:=xlPivotTableVersion14). _
        CreatePivotTable TableDestination:=shtdc & "!R3C1", TableName:= _
        "Tableau croisé dynamique1", DefaultVersion:=xlPivotTableVersion14
    Sheets(shtdc).Select

A vérifier

Si pas ça joins une copie de ton fichier

Merci Banzai de te pencher sur mon problème. Malheureusement ça ne vient pas de ça. La macro marche à condition qu'on créé une feuille nommée shtdc avant le lancement de cette dernière. Moi j'aimerai que la Macro rajoute et renomme automatiquement cette feuille. Je mets le fichier en PJ.

EN vous remerciant.

Max

Rechercher des sujets similaires à "enregistrer macro tcd"