Créer TCD - Erreur d’exécution en automatique mais pas en Pas à Pas [VBA]

Bonjour,

J'ai un soucis depuis quelque temps maintenant, et j'ai eu beau chercher sur le net y compris sur ce forum, je n'ai pas trouvé de problème équivoque.

J'utilise pour de la planification de prod de longues macros qui impliquent de regénérer un TCD à chaque fois. Or, dans ces macros, lorsque l'exécution arrive à la ligne de création de mon TCD , j'ai une erreur d'exécution 5.

Voici mon code :

'Puis on génère le TCD (enregistré)

Sheets.Add

ActiveSheet.Name = "TCD"

'Création du TCD

ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _

"Feuil1!R1C1:R1048576C22").CreatePivotTable _

TableDestination:="TCD!R3C1", TableName:="MonTableau"

Ce que je ne comprends pas, c'est que si je débugg en Pas à Pas, je n'ai pas d'erreur d'exécution. C'est le seul cas où ça m'arrive, du coup difficile à débugger quand en mode débug ça ne bug pas.

Je ne peux pas joindre de fichier car il est bien trop lourd, et en plus les macros impliquent des extractions SAP qui ne fonctionneront évidemment pas.

Au niveau du contexte, le TCD est créé dans un fichier que je viens de créer, et dans lequel j'ai copié une extract. L'extract est copiée dans "Feuil1" et je crée juste avant une feuille dans ce même nouveau classeur que j'appelle TCD.

Merci d'avance pour votre aide.

Bonjour,

L'explication qui me vient, c'est qu'en exécution automatique, l'opération de création de feuille n'est pas complètement terminée alors que la création du TCD démarre. Ce qui n'est pas évidemment le cas en mode pas à pas.

Essayer pour voir d'ajouter l'instruction "Doevents" après la création de la feuille

Sheets.Add
ActiveSheet.Name = "TCD"
Doevents

Bonjour,

ajoute peut-être une tempo application.wait le temps qu'excel compile les infos de la source dans sa mémoire

Salut,

Merci de vos réponses rapides. Je n'y avais pas pensé mais ça semble évident maintenant que vous le dites.

Je teste ça dans la journée (notamment Doevents que je ne connaissais pas) et je vous fais un retour + résolu dès que je confirme que c'est bon.

Bonjour

Quitte à coder ne pas faire un TCD sur des colonnes entières (22 millions de cellules) puisqu'on sait en VBA trouver la taille de la plage et de plus pourquoi compliquer avec Feuil1!R1C1:R1048576C22 au lieu de Feuil1!C1:C22...

... et en passant les données en tableau, c'est encore plus simple !

Salut,

Quitte à coder ne pas faire un TCD sur des colonnes entières (22 millions de cellules) puisqu'on sait en VBA trouver la taille de la plage et de plus pourquoi compliquer avec Feuil1!R1C1:R1048576C22 au lieu de Feuil1!C1:C22...

J'ai simplement enregistré cette partie du code, d'où le format R1C1 et le code sur toute les lignes.

... et en passant les données en tableau, c'est encore plus simple !

Yes, c'est juste que comme je crée chaque fois les données de base dans un novueau fichier, et que je ne les réutilise jamais, je ne voyais pas trop l'utilité de le créer en tableau.

J'ai testé pour mon problème initial Doevents et Sleep sans succès, il me reste wait à tester pour demain.

Bonjour à tous,

Pour information, c'est :

ActiveWorkbook.PivotCaches.Create

J'avais trouvé ça en cherchant à droite à gauche sur Internet, mais je n'ai pas vu de différence entre les deux. Qu'est-ce que ça change exactement ?

Re,

C'est à mon avis une méthode qui date de Excel 2003.

Ne plus utiliser avec nos versions.

Cdlt.

Rechercher des sujets similaires à "creer tcd erreur execution automatique pas vba"