VBA : enregistrer macro pour TCD

Résolu/Fermé
beenie - 15 mai 2012 à 14:57
 beenie - 16 mai 2012 à 10:33
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 et je n'arrive pas à résoudre ce problème.

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

Merci

1 réponse

Le Pingou Messages postés 12218 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 2 décembre 2024 1 452
15 mai 2012 à 23:09
Bonjour,
Essayer avec cette procédure modifiée au niveau du nom de la feuille ajoutée (shtdc) :
Sub Macro2()
'
Range("A1:G218").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
2
Merci beaucoup, ça marche parfaitement. Quel soulagement!!!!
Encore merci
0