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 : 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
Et dans le module qui initialise l'userform :
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
A noter que j'ai déjà essayé :
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
et
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Application.CutCopyMode = False

Bref... HELP

Merci d'avance,

Amicalement,
Ed'