Pb avec Macro générant un TCD

  • Initiateur de la discussion Initiateur de la discussion Boune
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Boune

XLDnaute Nouveau
Bonjour à tous,

Je me décide à écrire sur le forum, car je n'ai pas trouvé de réponse à mon pb en parcourant de nb forums.

Je suis sur Excel 2003.
N'ayant que des notions de macros, j'utilise l'enregistreur de macro.

Mon but est suite à la mise à jour d'un listing, d'actualiser un tableau de données ( sur feuille Etat mens par four).

Lors de la macro, je supprime les données de la feuille.
Je sélectionne les données, Je crée mon TCD (que j'ai renomé TCD)sur la feuille d'ou je souhaite afficher les valeurs, puis je copie et collage spéciale valeurs.

Voici le code (en rouge ce qui m'est indiqué en erreur)

Sheets("Etat Mensuel Par Four").Select
Cells.Select
Selection.Delete Shift:=xlUp
Sheets("listing").Select
Selection.CurrentRegion.Select
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"listing!R1C1:R3025C8").CreatePivotTable TableDestination:= _
"'[Suvi Global Factures.xls]Etat Mensuel Par Four'!R2C1", TableName:="TCD", _
DefaultVersion:=xlPivotTableVersion10
ActiveSheet.PivotTables("TCD").AddFields RowFields:="Désignation", _
ColumnFields:="Mois
"
With ActiveSheet.PivotTables("TCD").PivotFields("Prix")
.Orientation = xlDataField
.Caption = "Somme de Prix"
.Function = xlSum
End With
End Sub

Par contre en ne choisissant pas de feuille particulière lors de la création du TCD (nouvelle feuille) la macro marche parfaitement, mais ce n'est pas la solution que je souhaite.
D'ailleurs je souhaite également comprendre pk cela ne fonctionne pas.

D'avance merci à vous

Boune
 
Re : Pb avec Macro générant un TCD

Bonsoir,

C'est le ActiveSheet de :
ActiveSheet.PivotTables("TCD").AddFields RowFields:="Désignation", _
ColumnFields:="Mois"

Qui pose probleme.

Voir le fichier joint
 

Pièces jointes

Dernière édition:
Re : Pb avec Macro générant un TCD

Bonjour Catrice

Super!
Merci beaucoup de ta réponse.
Ta macro marche, j'ai réussi à l'adapter à mon fichier c'est parfait.

J'ai remplacé la partie Activesheet par With sheet, et la selection de la fin de tableau.

Enfin juste une question, quand je fais un copier coller de tout ton code dans ma macro, celà ne passe pas.
Erreur d'exécution 5
argument ou appel de procédure incorrecte
Sais tu pourquoi? C'est pas important mais j'aimerais juste comprendre.

En tout cas encore merci

Bonne journée à toi

Boune
 
Re : Pb avec Macro générant un TCD

Alors,

J'ai fait un copier coller de ta macro (qui fonctionne parfaitement dans le fichier que tu m'as joint), qui comporte exactement les même noms que tous les éléments dans ma macro qui ne fonctionnait pas. Alors celà donne :

Sub Testcatrice()
Sheets("Etat Mensuel Par Four").Cells.Clear 'Efface les cellules

ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"listing!" & Sheets("listing").Range("A1").CurrentRegion.Address).CreatePivotTable TableDestination:= _
"'[Suivi Global Factures.xls]Etat Mensuel Par Four'!R2C2", TableName:="TCD"


With Sheets("Etat Mensuel Par Four").PivotTables("TCD")
.AddFields RowFields:="Désignation", ColumnFields:="Mois"
With .PivotFields("Prix")
.Orientation = xlDataField
.Caption = "Somme de Prix"
.Function = xlSum
End With
End With
End Sub

Cette manip me donne l'erreur que j'ai cité précedemment. En gras le bug.

Pour contourner le pb j'ai remplacé, dans la macro que j'ai créé, uniquement le code de l'activesheet avec la solution que tu m'as proposé, et là ça fonctionne parfaitement.

Ci dessous le code qui fonctionne (pour lequel j'ai même ajouté un 2ème TCD dans la macro):

Sheets("Etat Mensuel Par Four").Select
ActiveWindow.SmallScroll Down:=-15
Cells.Select
Selection.Delete Shift:=xlUp
Sheets("listing").Select
Range("A1").Select
Selection.CurrentRegion.Select
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"listing!" & Sheets("listing").Range("A1").CurrentRegion.Address).CreatePivotTable TableDestination:= _
"'[Suvi Global Factures.xls]Etat Mensuel Par Four'!R2C1", TableName:= _
"TCD", DefaultVersion:=xlPivotTableVersion10

With Sheets("Etat Mensuel Par Four").PivotTables("TCD")
.AddFields RowFields:="Désignation", ColumnFields:="Mois"
With .PivotFields("Prix")
.Orientation = xlDataField
.Caption = "Somme de Prix"
.Function = xlSum
End With
End With
Sheets("Etat Par compte").Select
ActiveWindow.SmallScroll Down:=-15
Cells.Select
Selection.Delete Shift:=xlUp
Sheets("listing").Select
Range("A1").Select
Selection.CurrentRegion.Select
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"listing!" & Sheets("listing").Range("A1").CurrentRegion.Address).CreatePivotTable TableDestination:= _
"'[Suvi Global Factures.xls]Etat Par compte'!R2C1", TableName:= _
"TCD2", DefaultVersion:=xlPivotTableVersion10

With Sheets("Etat Par compte").PivotTables("TCD2")
.AddFields RowFields:="Compte", ColumnFields:="Mois"
With .PivotFields("Prix")
.Orientation = xlDataField
.Caption = "Somme de Prix"
.Function = xlSum
End With
End With
Sheets("listing").Select
Range("A1").Select
End Sub


Donc mon problème est résolu, mais j'aimerais juste comprendre pourquoi le copier coller ne passe pas, tout simplement pour mieux apprendre.

Je te remercie encore une fois de ton aide.

Bonne apres midi

Boune
 
Re : Pb avec Macro générant un TCD

Re,

C'est un pb de nom de fichier 😉

Suvi Global Factures.xls au lieu de Suivi Global Factures.xls


Les Select ne servent à rien, ceci est à supprimer:

Sheets("Etat Mensuel Par Four").Select
ActiveWindow.SmallScroll Down:=-15
Cells.Select
Selection.Delete Shift:=xlUp
Sheets("listing").Select
Range("A1").Select
Selection.CurrentRegion.Select
 
Re : Pb avec Macro générant un TCD

Re,

Ce code fontionne chez moi (avec le bon nom de fichier 😉):

Sub Test3()
Sheets("Etat Mensuel Par Four").Cells.Clear 'Efface les cellules
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"listing!" & Sheets("listing").Range("A1").CurrentRegion.Address).CreatePivotTable TableDestination:= _
"'[Suivi Global Factures.xls]Etat Mensuel Par Four'!R2C1", TableName:="TCD"

With Sheets("Etat Mensuel Par Four").PivotTables("TCD")
.AddFields RowFields:="Désignation", ColumnFields:="Mois"
With .PivotFields("Prix")
.Orientation = xlDataField
.Caption = "Somme de Prix"
.Function = xlSum
End With
End With
'--------------
Sheets("Etat Par compte").Cells.Clear 'Efface les cellules
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"listing!" & Sheets("listing").Range("A1").CurrentRegion.Address).CreatePivotTable TableDestination:= _
"'[Suivi Global Factures.xls]Etat Par compte'!R2C1", TableName:="TCD2"
With Sheets("Etat Par compte").PivotTables("TCD2")
.AddFields RowFields:="Compte", ColumnFields:="Mois"
With .PivotFields("Prix")
.Orientation = xlDataField
.Caption = "Somme de Prix"
.Function = xlSum
End With
End With
End Sub

Voir fichier joint
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
16
Affichages
918
Réponses
0
Affichages
603
Retour