Bonjour,
J'ai développé un code en VBA d'une certaine taille (environ 10000 lignes) qui utilise des données contenues dans des feuilles excel et des userforms.
Le programme tourne très bien mais remplit progressivement la mémoire virtuelle. J'ai déjà essayé différentes solutions (trouvées notamment sur ce forum) dont : déclarer toutes les variables ("option explicit" partout), utiliser "Application.ScreenUpdating = False" et "Application.Calculation = xlCalculationManual", et durant le calcul, les feuilles excel ne sont pas utilisées (toutes les données sont enregistrées dans des tableaux VBA). A la fin des calculs, les tableaux VBA les plus gros (environ 10000 valeurs de type double) sont vidés avec "Erase" et les classeurs excel qui sont modifiés sont enregistrés. Pour donner un ordre d'idée, si le calcul prend 20 minutes, la consommation de mémoire virtuelle augmente de 500 Mo.
Quant je suis l'évolution de la mémoire virtuelle, elle évolue de manière linéaire en fonction du temps de calcul, et ne se vide pas lorsque le calcul se termine, ni même, et c'est là le plus étonnant, lorsque tous les classeurs excel sont fermés. Il faut que je quitte excel pour que finalement la mémoire virtuelle soit libérée.
Mon but étant d'enchaîner les calculs les uns à la suite des autres de manière automatique, ce problème de non libération de la mémoire virtuelle me bloque.
J'aimerais donc savoir si quelqu'un a une idée de l'origine de ce problème, et surtout, d'une solution !
Merci d'avance pour vos idées !
Laurent
Partager