[VBA] Augmentation de la taille du fichier à chaque .copy
Bonjour à tous,
Mon problème est simple et très très ennuyeux.
Je travail sur une macro de repporting automatisé, qui se charge de générer tableau/pwp/graph/etc..
Le soucis c'est que je suis amené à copier des sheets, ici l'utilisation de la sheet_temp est pour éviter de travailler sur une sheet potentiellement modifié sur l'utilisateur. Mon process est donc le suivant :
BDD Original (fichier externe)
-> importation dans BDD_Temp (fichier local)
-> Pushing de BDD_Temp dans BDD (fichier local)
-> retraitement sur BDD
-> si BDD <> BDD_Temp -> BDD_Temp remplace BDD (d'où le copy)
Or chaque fois que j'effectue la copie de BDD_Temp vers BDD mon fichier augmente de taille, peut importe ce qui a pu se passer avant.
Admettons que je ne lance que la macro qui copy BDD_Temp dans BDD, alors mon fichier augmente d'environs 80ko.
Ce n'est rien vous me direz ? Eh bien... si... par ce que 80*beaucoup d'execution ça fait des fichiers totalement instable...
Quand je met en commentaire la ligne de copie, le fichier n'augmente plus de taille (mais ne réduit pas pour autant).
C'est très très embêtant, d'autant que l'ensemble du système fonctionne il est juste rendu instable par cette croissance continue du poids du fichier...
J'ai l'impression que certaines variables/données ne sont pas purgé à la fin de chaque copy/execution de macro...
Je n'ai pas de variable globale.
Après plusieurs heures d'arrachage de cheveux et de recherche sur notre moteur de recherche favori, je ne trouve aucune solution...
Mon code est pourtant simple (j'ai retiré tous ce qui n'était pas pertinent, à noter que le problème persiste même sans ce code non pertinent) :
Le code se trouve dans un UserForm dans la fonction "initialize" donc :
Code:
1 2 3 4
| Private Sub UserForm_Initialize()
Sheets("BDD_Reporting_Temp").Cells.Copy Sheets("BDD_Reporting").Cells
Sheets("Table").Rows.Delete
End Sub |
Et dans le module qui initialise l'userform :
Code:
1 2 3 4
| Sub GenerateTable()
TS_Choice.Show
Set TS_Choice = Nothing
End Sub |
A noter que j'ai déjà essayé :
Code:
1 2 3 4 5 6 7 8
| Sub ClearClipboard()
Dim oDataObject As DataObject
Set oDataObject = New DataObject
oDataObject.SetText ""
oDataObject.PutInClipboard
Set oDataObject = Nothing
End Sub |
et
Code:
Application.CutCopyMode = False
Bref... HELP :)
Merci d'avance,
Amicalement,
Ed'