Macro Tableau Croisé Dynamique

P

philippe

Guest
Ma question concerne une macro enregistrée par Excel lui-même avec le menu "Nouvelle macro" . Je crée un TCD avec l'assistant d'Excel en étant enregistré par la macro. J'arrte l'enregiistrement de la macro.
Je lui demande ensuite d'exécuter cette macro et j'ai systématiquement un message d'erreur exécution 1004 et le message La méthode Addfields de la classe PivotTable a échoué.
Je vous joins le code en question.
Merci déjà a Myta et à Dan qui m'ont répondu lors de mon précédent envoi sans le code.
J'ai vérifié que le nom des champs du code est bien celui de l'entête des colonnes d'Excel.
Je précise que j'ai essayer en ne mettant que les colonnes, lignes et données, (sans le champ de page dans l'assistant), le résultat est le même
Merci par avance à tous ceux qui pourraient m'aider
Sub TCD()
'
Cells.Select
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"Ventes2004!C1:C12").CreatePivotTable TableDestination:="", TableName:= _
"Tableau croisé dynamique2"
ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
ActiveSheet.Cells(3, 1).Select
ActiveSheet.PivotTables("Tableau croisé dynamique2").SmallGrid = False
ActiveSheet.PivotTables("Tableau croisé dynamique2").AddFields RowFields:= _
"Vendeur", ColumnFields:="Type", PageFields:="Jour"
With ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields("Nombre")
.Orientation = xlDataField
.Caption = "Somme Nombre"
.Function = xlSum
End With
Application.CommandBars("PivotTable").Visible = False
End Sub
 
C

chris

Guest
Bonjour
Sans éplucher le code : peut-être parce le nom du tableau croisé
Tableau croisé dynamique2
existe déjà.
Lorsque tu as le message cliques sur déboguer afin de savoir quelle la ligne qui plante.
Chris
 
P

philippe

Guest
Le débogage indique l'erreur du programme sur la ligne

ActiveSheet.PivotTables("Tableau croisé dynamique2").AddFields RowFields:= "Vendeur", ColumnFields:="Type", PageFields:="Jour"

j'ai essayé de renommer le nom de ("Tableau croisé dynamique2") en ("Tableau croisé dynamique10"). Cela plante aussi
 
D

Dan

Guest
Bonjour Philippe,

Juste une question, est-ce que la feuille de destination du TCD ne contient pas de données ?

Si oui, tu n'arriveras pas à finir ta macro.

Place ces instructions dans ta macro qui vont effacer toutes les données de la feuille de destination du TCD.

Cells.Select
Selection.Clear

@+

Dan
 
M

Myta

Guest
Salut Philippe, Chris et Dan

N'ayant pas la disposition de ta feuilles Ventes2004 essayons de voir...

Ta plage Ventes2004!C1:C12 contient ton tableau complet ?????

Ta plage doit contenir une etiquette Vendeur, Type, Jour et Nombre
avec les donnees en dessous le probleme vient alors de ta plage.

Ta plage devrait avoir au moins 4 colonnes et x lignes

Style Ventes2004!A1:Dx au moins

A suivre

Mytå
 
P

philippe

Guest
Merci et bravo
Le problème venait de la déclaration de la SourceData
En effet, quand je fais le tableau croisé par l'assistant, je sélectionne toute la feuille en cliquant sur la case en haut à gauche. Toutes les cases sont alors sélectionner et le TCD est créé.
Mais la macro a enregistré "Nom de la feuille!C1:C2" Mystère
Maintenant je remplace cette partie du code par A1:dernière cellule et ça marche!!!
Merci encore à Myta et Dan
Ce forum est vraiment très sympa et efficace surtout!
 
D

Dan

Guest
Re,

A la place de l'instruction "cells.select", tu peux placer ceci :

Range("A1").Select
Selection.CurrentRegion.Select

Ces instructions feront en sorte de ne sélectionner que les cellules contenant des données et non toute ta feuille.
Seule remarque, ne laisse pas d'espace vide entre tes données, sinon ta macro ne reprendra pas toute tes données pour le TCD.

@+

Dan
 

Discussions similaires

Réponses
1
Affichages
548

Statistiques des forums

Discussions
312 755
Messages
2 091 707
Membres
105 053
dernier inscrit
HAMOUD