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 :
Et dans le module qui initialise l'userform :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Private Sub UserForm_Initialize() Sheets("BDD_Reporting_Temp").Cells.Copy Sheets("BDD_Reporting").Cells Sheets("Table").Rows.Delete End Sub
A noter que j'ai déjà essayé :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Sub GenerateTable() TS_Choice.Show Set TS_Choice = Nothing End Sub
et
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part Application.CutCopyMode = False
Bref... HELP![]()
Merci d'avance,
Amicalement,
Ed'
Partager