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