Mon TCD perd du poids!

L

Lyan

Guest
Bonjour à tous,

J'ai un fichier Excel contenant un TCD : ça c'est l'existant.
Jusqu'à présent ce TCD a toujours été mis à jour manuellement.(les données sources se trouvent dans un autre fichier Excel).
Aussi, j'ai écrit une macro VBA qui fait ces mises à jour automatiquement
Tout ça fonctionne bien, mais lorsque dans ma macro, en fin de traitement, j'enregistre mon fichier Excel contenant le TCD, il perd énormément de poids.
Je ne comprends pas pourquoi (mes options d'enregistrement ne doivent pas être bonnes).
Et ceci n'est pas sans conséquence, puisque ma macro ne fonctionne plus si je prends en entrée le nouveau fichier généré précédemment.
(Excel plante en "opération non conforme, ce programme va être arrêté").

Y-a-t-il quelqu'un qui sait?
 
L

Lyan

Guest
Un précision complémentaire :

Mon fichier initial contenant le TCD fait 187Ko, après MAJ du TCD par macro et enregistrement (SaveAs sous un nouveau nom), il fait 77Ko.
Qu'est-ce que j'ai bien pu perdre?

Quand je les compare, ils ont la même tête, sauf que le nouveau est mis bien sûr comme il se doit.

Est-ce que l'original ne contiendrait pas quelquepart les données source?
Si c'est le cas, comment faire pour enregistrer avec les données source dans ma macro?

j'en profite pour dire que j'ai regardé un peu tout ce qui se dit sur ce forum, et c'est super intéressant, vraiment le meilleur et le plus convivial que j'ai vu jusqu'à présent! y a plein de bonnes idées, c'est génial!

merci ceux qui l'ont conçu mais aussi à tous ceux qui le font vivre!
 
D

Dan

Guest
Bonjour,

Curieux ta demande, en général c'est l'inverse qui tracasse...

Bon, une question, ton TCD enregistré sous le nouveau nom est toujours liés au fichier d'origine ou non ?

Pour le vérifier, modifie le fichier source puis va dans le fichier contenant le TCD sauvegardé et par clique droite dans le TCD choisis "Actualiser les données". Ensuite enregistre ton fichier et vérifie s'en le poids ; il y a des chances qu'il aura augmenté de volume.

Ce qu'il se peut, c'est le TCD conserve certaines opérations en arrière plan. Un peu come Word le fait avec un fichier Temp. Le fait d'enregistrer sous un nouveau nom lui fait perdre naturellement du poids.

@+ Dan
 
L

Lyan

Guest
Bonjour Dan,

Merci de te pencher sur mon pb.
En fait, lorsque je vais sur le TCD sauvegardé après traitement par la macro, je ne peux même plus faire "actualiser les données" manuellement, car ça fait planter Excel en "Ce pg a effectué une opération non conforme..." et Excel se ferme.

Et c'est bien là mon pb.

Ca veut dire qu'après sauvegarde, mon fichier ou mon TCD a un truc de travers. (C'est pour ça que je demandais comment sauvegarder le fichier au plus près de ce qu'il était avant MAJ puisque sur le fichier initial je n'ai pas de pb).

Je peux par contre, passer par l'assistant (en 4 étapes), et là je vois que mon fichier source est bien renseigné dans "plage" de l'étape 2.

Je ne sais plus par quel bout prendre ce pb.
 
L

Lyan

Guest
voici le code ma sauvegarde :

'Enregistrement du TCD
ActiveWorkbook.SaveAs FileName:= _
"O:\AGRRMEC_RP_MAINTENANCE\RPB - Referentiel Personnes BDDF\RPB 10 - Portefeuilles\RPB 10 01 - PTF Arretes\RPB 10 01 01 - Reporting\TCD reporting interne réclamations.xls", FileFormat:=xlNormal _
, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
CreateBackup:=False

J'utilise ce mode de sauvegarde dans beaucoup d'autres macros qui sauvegardent des fichiers et je n'ai pas ce pb de perte de poids de fichier, mais ces fichiers ne contiennent pas de TCD...

merci d'avance
 
L

Lyan

Guest
J'apporte des infos supplémentaires car je continue de chercher et j'ai trouvé la raison de la différence de poids : c'est à la maj du TCD si on code SaveDate := False (ce qui était mon cas) ou = True
Donc cela fait varier le poids mais ça ne résoud pas mon pb (j'ai essayé les 2).

Par contre, je te donne d'autres précisions car je me demande si ce pas de là que vient le pb :

Je mets à jour ce TCD une fois par semaine, après que l'on ait effectué les arrêtés hebdomadaires. Et mon fichier source de données qui alimente le TCD change à chaque fois puisque son nom est suivi du N° de semaine.

Pour simplifier :

Fin de semaine 01 : Arrete0501 est le fichier source de TCD
Fin de semaine 02 : Arrete0502 est le fichier source de TCD
etc...

Arrete0502 est identique à Arrete0501 avec des lignes en plus.

Donc par macro, j'indique à chaque fois le bon nom de fichier source (le fichier de la semaine) : c'est peut-etre ça qui est mal codé (pourtant ça marche la première fois, mais pas la deuxième).

Voici comment j'ai la MAJ du TCD :

ActiveSheet.PivotTableWizard SourceType:=xlDatabase, SourceData:= _
"'[RPB-0060 Liste des reclamations S" & ANAR & Sem & ".xls]liste PFAI'!R1C1:R" & N & "C19", _
TableDestination:="R1C1", TableName:="Tableau croisé dynamique2", SaveData _
:=True

où ANAR est calculé et = année Arreté = 05
et Sem = Semaine Arreté = 01
N = Nb de ligne du tableau Arreté0501.

Je me demande si je n'ai pas intérêt à recopier en début de macro le fichier Arrete dont le nom change sous un nom invariable et travailler toujours les TCDs à partir du même nom de fichier.


Si je résouds mon pb, je l'indiquerai afin que tu ne cherches pas pour rien.

Mais ça me semble bizarre de ne pas pouvoir renseigner dynamiquement le nom du fichier source (à partir du moment où il est toujours identique au précédent avec évidemment quelques lignes en plus).
 
D

Dan

Guest
Re lyan,

Là j'ai pas bien compris... Lorsque tu sauves chaque semaine, tu le fais à partir du TCD de la semaine précédente ou à partir du même nom de fichier ?

ce que je pensais, c'est que tu avais un fichier source (Base de données) et un fichier unique contenant le TCD (résultats sur TCD), et que les sauvegardes étaient faites à partir du même TCD. Donc, que tu sauvegardais, le TCD tel quel dans un autre fichier que j'appellerais "Archives" par exemple.
Ton TCD original étant figé et fonctionnant toujours avec le même fichier Source.

d'autre part, la MAJ dont tu parles est la première instruction de l'assistant pour constituer le TCD il me semble. L'instruction Sourcedata "RPB-0060 Liste des reclamations S" & ANAR & Sem & ".xls]liste PFAI'!R1C1:R" & N & "C19" étant la source de données.

Pourrais-tu donner plus de détails ?

Dan
 
L

Lyan

Guest
Pour Dan,
Un petit mot juste pour que tu ne perdes pas ton temps, car j'ai résolu tous mes pbs, bien que je n'ai pas tout compris.

Mon pb venait de l'activation du TCD, le curseur n'était pas positionné dessus :

voici l'ordre que j'avais lorsque ça ne marchait pas (à tous les coups) :

ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotSelect _
"Total", xlDataOnly
ActiveSheet.PivotTableWizard SourceType:=xlDatabase, SourceData:= _
"'[RPB-0060 Liste des reclamations S" & ANAR & Sem & ".xls]liste PFAI'!R1C1:R" & N & "C19", _
TableDestination:="R1C1", TableName:="Tableau croisé dynamique2", SaveData _
:=True

et voici ce que j'ai ajouté avant cet ordre :

Range("B10").Select

pour être sûre d'être positionné sur le tableau.


Ca marche très bien, mais je n'ai pas compris pourquoi j'ai été obligée d'ajouter ça. En fait, j'ai essayé ça pour me rapprocher ce que je fais manuellement, et ça marche à tous les coups.
Beaucoup de choses restent nébuleuses pour moi, mais j'essaie de m'améliorer.

En tout cas merci de ton aide.
 

Discussions similaires

Statistiques des forums

Discussions
312 503
Messages
2 089 056
Membres
104 013
dernier inscrit
VELONDAHY Mickaël