Erreur dans code VBA qui a été créé avec le "Macro recorder"

bouclesdor

XLDnaute Occasionnel
Bonjour à vous les pros d'excel et de VBA,

J'aimerais créer un tableau dynamique croisé (pivottable) avec un code VBA donc comme je suis débutante en VBA, j'ai voulu enregistrer le code avec l'enregistreur de macro. Je pensais que ça serait super simple d'intégrer ce code à un bouton pour qu'ensuite le tableau dynamique soit généré automatiquement.

Cependant, lorsque j'essaie de faire rouler la macro après l'avoir enregistré, j'ai un message d'erreur "Run-time error 5: invalid procedure call or argument". Ce qui ce met en jaune et ce bout de code:
ActiveWorkbook.Worksheets("Type vente").PivotTables("TestPivot").PivotCache. _
CreatePivotTable TableDestination:= _
"'[STEPH chart Analyse des ventes.xlsm]type vente chart'!R1C1", TableName:= _
"PivotTable1", DefaultVersion:=xlPivotTableVersion12
Pourquoi??

En résumé, j'ai déjà un tableau dynamique croisé (TDC) dans mon onglet " type vente" et mon TDC se nomme: "TestPivot" je veux donc prendre se TDC et en créer un autre dans un autre onglet nommé: "type vente chart" et ce à partir du TDC existant dans mon premier onglet "type vente".

Est-ce que quelqu'un peu me donner un indice pourquoi j'ai cet erreur car comme mon code a été créé avec le macro recorder je pensais qu'il n'y aurait pas d'erreur dans le code...

Merci à l'avance de votre aide...

Bouclesdor

Voici mon code complet si ça peu vous aider...

Sub steph111()
Range("A1").Select
ActiveWorkbook.Worksheets("Type vente").PivotTables("TestPivot").PivotCache. _
CreatePivotTable TableDestination:= _
"'[STEPH chart Analyse des ventes.xlsm]type vente chart'!R1C1", TableName:= _
"PivotTable1", DefaultVersion:=xlPivotTableVersion12
With ActiveSheet.PivotTables("PivotTable2").PivotFields("Année")
.Orientation = xlColumnField
.Position = 1
End With
With ActiveSheet.PivotTables("PivotTable2").PivotFields("Type de vente")
.Orientation = xlRowField
.Position = 1
End With
With ActiveSheet.PivotTables("PivotTable2").PivotFields("Regroupement")
.Orientation = xlPageField
.Position = 1
End With
ActiveSheet.PivotTables("PivotTable2").AddDataField ActiveSheet.PivotTables( _
"PivotTable2").PivotFields("Prix (CDN)"), "Count of Prix (CDN)", xlCount
With ActiveSheet.PivotTables("PivotTable2").PivotFields("Count of Prix (CDN)")
.Caption = "Sum of Prix (CDN)"
.Function = xlSum
.Calculation = xlPercentOfRow
.NumberFormat = "0.00%"
End With
With ActiveSheet.PivotTables("PivotTable2").PivotFields("Année")
.Orientation = xlRowField
.Position = 2
End With
With ActiveSheet.PivotTables("PivotTable2").PivotFields("Type de vente")
.Orientation = xlColumnField
.Position = 1

End With

End Sub
 

camarchepas

XLDnaute Barbatruc
Re : Erreur dans code VBA qui a été créé avec le "Macro recorder"

Bonjour ,

Avec un petit fichier contenant un jeu de données test , le code vba à débugger , se serait plus facile de te répondre juste.

Vu le nombre de réponse , de pouvoir simplement te répondre

cordialement
 

bouclesdor

XLDnaute Occasionnel
Re : Erreur dans code VBA qui a été créé avec le "Macro recorder"

Merci camarchepa!

Le problème est que mon fichier contient des informations confidentiels donc je ne peux le joindre sur le forum...

Par contre, si vous me dite que le code débug dans un autre fichier test j'imagine donc que le code VBA est bon mais qu'il y a quelque chose dans mon fichier qui fait que ça bug...

Merci de votre aide je vais continuer à chercher...

bouclesdor
 

vgendron

XLDnaute Barbatruc
Re : Erreur dans code VBA qui a été créé avec le "Macro recorder"

Bonjour Bouclesdor, Camarchepas.

Euh non. Bouclesdor.. il ne t'a pas dit que ca marchait dans un fichier test
il te demande juste de poster un fichier exemple (sans données confidentielles justement mais juste des données "bidons") avec le test à debugger (le test qu'il faut corriger)
 

bouclesdor

XLDnaute Occasionnel
Re : Erreur dans code VBA qui a été créé avec le "Macro recorder"

Merci camarchepas et Vgendron pour vos réponses... Suite à votre demande j'ai fait un fichier test afin de vous aider à mieux comprendre mon problème.

Donc ouvrir le fichier, vous devriez tomber sur le feuille Accueil et appuyez sur le bouton "type vente". Un tableau dynamique croisé sera automatiquement créé. Ensuite il y aura un gros bouton "pour créer le graphique" c'est là que j'ai enregistré mon code avec l'enregistreur automatique de macro et j'ai un message d'erreur "invalid procedure call or argument" et c'est le code suivant qui est en jaune:
ActiveWorkbook.Worksheets("Type vente").PivotTables("TestPivot").PivotCache. _
CreatePivotTable TableDestination:= _
"'[15 sept - STEPH chart Analyse des ventes.xlsm]Type vente'!R35C1", TableName _
:="PivotTable8", DefaultVersion:=xlPivotTableVersion12

Pourquoi?!

Merci à l'avance de votre aide si précieuse! :)
 

bouclesdor

XLDnaute Occasionnel
Re : Erreur dans code VBA qui a été créé avec le "Macro recorder"

Prise 2...

Je crois que cette fois est la bonne... :)

Merci à l'avance de votre aide et bonne journée,

Bouclesdor
 

Pièces jointes

  • 16 sept - STEPH chart Analyse des ventes.xlsm
    145.5 KB · Affichages: 45

bouclesdor

XLDnaute Occasionnel
Re : Erreur dans code VBA qui a été créé avec le "Macro recorder"

Comme il n'y a pas de réponse, je me demandais si tout était correct avec ma pièce jointe car j'ai dû faire plusieurs tentatives pour ajouter mon fichier mais là ça semble avoir fonctionné (du moins de ce que je vois de mon côté...) mais peut-être que je n'ai pas de réponse car personne ne sait trop pourquoi j'ai le bug...

Ce n'est pas grave, je vais continuer à chercher!

Merci quand même!

Bouclesdor
 

bouclesdor

XLDnaute Occasionnel
Re : Erreur dans code VBA qui a été créé avec le "Macro recorder"

Bon je tourne en rond avec mon fichier je n'ai rien trouvé d'utile pour le moment alors je prends une chance de faire un p'tit "up" à ma question au cas où quelqu'un pourrait m'aider...

Merci à l'avance...

Bouclesdor
 

job75

XLDnaute Barbatruc
Re : Erreur dans code VBA qui a été créé avec le "Macro recorder"

Bonjour bouclesdor, salut camarchepas, vgendron,

Dans la macro STEPHEnregistreurMacro (Module13) remplacer la 1ère ligne par :

Code:
Sheets("Type vente").PivotTables("TestPivot").PivotCache. _
    CreatePivotTable TableDestination:= _
    Sheets("Type vente").Range("A35"), TableName:="PivotTable8"
Ensuite à vous de voir, on se retrouve avec 2 graphiques...

A+
 

Discussions similaires

Réponses
1
Affichages
1 K
Compte Supprimé 979
C

Statistiques des forums

Discussions
311 724
Messages
2 081 936
Membres
101 844
dernier inscrit
pktla