Ma macro enregistrée pour faire un TCD ne marche pas, comment la faire marcher ?

  • Initiateur de la discussion Initiateur de la discussion dungan
  • 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 !

dungan

XLDnaute Nouveau
Tout est dans le titre 🙂

Je suis sous XP SP2 / Excel 2003
La situation :
Sur Feuil1 il y a les données sources sur 3 colonnes (date/Lang/TotalCount)
Je veux en faire un TCD qui me permette d'avoir un tableau à double entrée date / langue.

J'ai fait la manipulation à la main sous Excel en enregistrant la Macro, mais elle ne marche jamais (erreur 1004). J'ai beau refaire la manipulation, la macro enregistrée fait toujours un TCD uniquement avec TotalCount, sans même qu'apparaissent les autres champs dans la Liste de champs de TCD.

La macro enregistrée est la suivante :
Columns("A:C").Select
Range("C1").Activate
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"Feuil1!C1:C3").CreatePivotTable TableDestination:="", TableName:= _
"Tableau croisé dynamique7", DefaultVersion:=xlPivotTableVersion10
ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
ActiveSheet.Cells(3, 1).Select
ActiveSheet.PivotTables("Tableau croisé dynamique7").AddDataField ActiveSheet. _
PivotTables("Tableau croisé dynamique7").PivotFields("TotalCount"), _
"Nombre de TotalCount", xlCount
With ActiveSheet.PivotTables("Tableau croisé dynamique7").PivotFields("Lang")
.Orientation = xlRowField
.Position = 1
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique7").PivotFields("date")
.Orientation = xlColumnField
.Position = 1
End With
Range("A3").Select
ActiveSheet.PivotTables("Tableau croisé dynamique7").PivotFields( _
"Nombre de TotalCount").Function = xlSum
With ActiveSheet.PivotTables("Tableau croisé dynamique7").PivotFields("date")
.PivotItems("(vide)").Visible = False
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique7").PivotFields("Lang")
.PivotItems("(vide)").Visible = False
End With
End Sub

Je met en pièce jointe le fichier Excel qui me pose un problème, avec l'onglet "TCD fait par la macro" et l'onglet "TCD Visé" auquel je souhaite arriver.

Je galère depuis un certain temps sur le sujet sans rien vraiment trouver qui résout mon problème, je pense que j'ai loupé qqch, mais quoi ?
 

Pièces jointes

Dernière édition:
Re : Ma macro enregistrée pour faire un TCD ne marche pas, comment la faire marcher ?

Bonjour à tous,

Peux-tu essayer en remplaçant la partie en rouge par :

Code:
"Feuil1!A1:C5000"

A+

Edition : Bonjour Gael


Tout est dans le titre 🙂
Je suis sous XP SP2 / Excel 2003
La situation :
Sur Feuil1 il y a les données sources sur 3 colonnes (date/Lang/TotalCount)
Je veux en faire un TCD qui me permette d'avoir un tableau à double entrée date / langue.

J'ai fait la manipulation à la main sous Excel en enregistrant la Macro, mais elle ne marche jamais (erreur 1004). J'ai beau refaire la manipulation, la macro enregistrée fait toujours un TCD uniquement avec TotalCount, sans même qu'apparaissent les autres champs dans la Liste de champs de TCD.

La macro enregistrée est la suivante :
Columns("A:C").Select
Range("C1").Activate
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"Feuil1!C1:C3").CreatePivotTable TableDestination:="", TableName:= _
"Tableau croisé dynamique7", DefaultVersion:=xlPivotTableVersion10
ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
ActiveSheet.Cells(3, 1).Select
ActiveSheet.PivotTables("Tableau croisé dynamique7").AddDataField ActiveSheet. _
PivotTables("Tableau croisé dynamique7").PivotFields("TotalCount"), _
"Nombre de TotalCount", xlCount
With ActiveSheet.PivotTables("Tableau croisé dynamique7").PivotFields("Lang")
.Orientation = xlRowField
.Position = 1
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique7").PivotFields("date")
.Orientation = xlColumnField
.Position = 1
End With
Range("A3").Select
ActiveSheet.PivotTables("Tableau croisé dynamique7").PivotFields( _
"Nombre de TotalCount").Function = xlSum
With ActiveSheet.PivotTables("Tableau croisé dynamique7").PivotFields("date")
.PivotItems("(vide)").Visible = False
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique7").PivotFields("Lang")
.PivotItems("(vide)").Visible = False
End With
End Sub

Je met en pièce jointe le fichier Excel qui me pose un problème, avec l'onglet "TCD fait par la macro" et l'onglet "TCD Visé" auquel je souhaite arriver.

Je galère depuis un certain temps sur le sujet sans rien vraiment trouver qui résout mon problème, je pense que j'ai loupé qqch, mais quoi ?
 
Dernière édition:
Re : Ma macro enregistrée pour faire un TCD ne marche pas, comment la faire marcher ?

Bonjour Dungan, bonjour JCGL,

Comme JCGL, je te propose de remplacer "Feuil1!C1:C3" qui sélection 3 cellules et non 3 colonnes par:

Code:
"Feuil1!$A$1:$C$" & Range("C5000").End(xlUp).Row).CreatePivotTable

"Range("C5000").End(xlUp).Row" va donner le numéro de la dernière ligne utilisée. Ce qui fait que tu peux également supprimer la partie destinée à ne pas afficher les (Vide) puisqu'il n'y en aura plus:

A supprimer:
Code:
With ActiveSheet.PivotTables("Tableau croisé dynamique7").PivotFields("date")
.PivotItems("(vide)").Visible = False
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique7").PivotFields("Lang")
.PivotItems("(vide)").Visible = False
End With

@+

Gael
 
Re : Ma macro enregistrée pour faire un TCD ne marche pas, comment la faire marcher ?

Re,

Et même un peu plus simple:

Code:
    Range("C1").Select
    ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
        [COLOR=navy]ActiveCell.CurrentRegion[/COLOR]).CreatePivotTable TableDestination:="", TableName:= _

et tu peux supprimer aussi la première ligne "Columns("A:C").Select" qui ne sert à rien.

@+

Gael
 
Re : Ma macro enregistrée pour faire un TCD ne marche pas, comment la faire marcher ?

Vu le temps que j'ai passé là-dessus, je n'aurais qu'une réponse : merci, merci beaucoup.

C'est tellement idiot, désolé de ne pas avoir vu l'erreur.

Bref, merci encore, ça m'enlève une sacré épine du pied 🙂 🙂 🙂

Figure de style à part,
 
Re : Ma macro enregistrée pour faire un TCD ne marche pas, comment la faire marcher ?

Vu le temps que j'ai passé là-dessus, je n'aurais qu'une réponse : merci, merci beaucoup.

C'est tellement idiot, désolé de ne pas avoir vu l'erreur.

Bref, merci encore, ça m'enlève une sacré épine du pied 🙂 🙂 🙂
 
Dernière édition:
- 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

Retour