VBA - Excel - Créer tableau croisé dynamique

Résolu/Fermé
Phoenellion Messages postés 116 Date d'inscription dimanche 14 septembre 2008 Statut Membre Dernière intervention 30 août 2012 - Modifié par Phoenellion le 25/01/2012 à 05:56
 deepsoul94 - 23 avril 2012 à 16:25
Bonjour,

c'est encore le débutant !!

j'ai besoin de créer un TCD par macro, et comme je ne connais pas le code correspondant, j'ai fait simple : j'ai enregistré la création du tableau avec l'enregistreur de macro, et là, ô surprise ?!

si j'exécute la macro enregistrée sans même la modifier, je me prends un message d'erreur :

voici le code enregistré :
Range("A1").Select  
Range(Selection, Selection.End(xlToRight)).Select  
Range(Selection, Selection.End(xlDown)).Select  
Sheets.Add  
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _  
    "DC_DetFact!R1C1:R309008C3", Version:=xlPivotTableVersion14). _  
    CreatePivotTable TableDestination:="Feuil11!R3C1", TableName:= _  
    "Tableau croisé dynamique4", DefaultVersion:=xlPivotTableVersion14  
Sheets("Feuil11").Select  
Cells(3, 1).Select  
With ActiveSheet.PivotTables("Tableau croisé dynamique4").PivotFields("NART")  
    .Orientation = xlRowField  
    .Position = 1  
End With  
ActiveSheet.PivotTables("Tableau croisé dynamique4").AddDataField ActiveSheet. _  
    PivotTables("Tableau croisé dynamique4").PivotFields("QTE"), "Somme de QTE", _  
    xlSum  
End Sub

et le message d'erreur que ça me renvoi :
"Erreur '5' -> Argument ou appel de procédure incorrect"
en gras la zone repérée par le débogueur. avec la flèche sur la dernière ligne du paragraphe

Une idée ?
Merci !

1 réponse

pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
Modifié par pilas31 le 27/01/2012 à 01:10
Bonsoir,

C'est trés curieux car sur mon Excel ce n'est pas du tout la syntaxe, la methode de création est Add et xlPivotTableVersion14 donne une erreur.

La syntaxe qui fonctionne est la suivante :

ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"DC_DetFact!R1C1:R309008C3").CreatePivotTable TableDestination:="Feuil11!R3C1", TableName:= _
"Tableau croisé dynamique4", DefaultVersion:=xlPivotTableVersion10

A+

Cordialement,
0
Phoenellion Messages postés 116 Date d'inscription dimanche 14 septembre 2008 Statut Membre Dernière intervention 30 août 2012 32
27 janv. 2012 à 03:39
Bonjour Pilas,

merci beaucoup, en effet, avec Version 10 au lieu de 14 ça fonctionne parfaitement.
J'ignore d'où vient cette différence, si ce n'est que j'utilise excel 2010.

Problème, résolu, merci encore !
@+
Phoe
0
Le fait que cela ne marche pas quand tu lance la macro qu'Excel vient de créer en utilisant le macro recorder vient du fait que dans la macro Excel crée une nouvelle feuille et ensuite envoie le tableau croisé dans cette feuille (renseigné dans TableDestination) que Excel définie par son nom, (Ex Sheets(23).
Or si tu relances la macro qui vient d'être créé, Excel recré une nouvelle feuille (qui sera par défaut si on continue mon exemple Sheets(24) mais ne modifie pas le code et TableDestination restera Sheets(23).

Il faut donc de changer le code manuellement pour espérer que cela marche

C'est en tout cas comme cela que j'ai résolu mon problème de mon coté.

Cordialement
0