Bonjour,
J'ai un petit problème de gestion de mémoire, mon VBA Excel pétant litéralement les plombs au niveau de sa consommation de mémoire.
Le fait est que, durant mon code VBA, je charge quelques 'gros' tableau (gros pour VBA, la dimension n'étant que de 2x~1500). J'ai beau essayer d'utiliser toujours le même nom de tableau d'une procédure à l'autre (à condition que cela soit le même tableau) j'ai l'impression qu'Excel ne fait que crée de nouvelle zones mémoire, sans libérer les anciennes. Mais prenons un exemple :
Voila ma fonction :
Dans Struc_Check, les tableau conservent le même nom de variable (New_Struc, Old_Struc et la dimension de Old_Struc est petit à petit ramené de 2x1500 à 2x0) et dans Liquid_Structure ils s'appelent Struc. En début de boucle for, Excel consomme ~65mo. A la fin de la première boucle : ~280mo (à la limite pourquoi pas, il a créé au moins 3 tableau de 2x1500). A la deuxième : ~495mo puis ~710 pour finir en toute fin de boucle à 1140mo.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 Public Function Liquid_Liq_Check(Nerr As Long) Dim Old_Struc(), New_Struc() As Variant WLog "STRUCTURE LIQUID", True For lc = 0 To UBound(LiqC) 'Dimension de LiqC : (4) variable public WLog " > " & LiqC(lc), False Old_Struc = Liquid_Structure(Sheets(ST)) 'Dimension de Old_Struc : (2,~1500) New_Struc = Liquid_Structure(Sheets(LiqC(lc) & "_L")) 'Dimension de New_Struc : (2,~1500) u = Struc_Check(New_Struc, Old_Struc) 'Fonction qui va comparer mes deux tableaux Next lc Liquid_Liq_Check = Nerr End Function
Le plus étrange est que, si je ferme mon fichier Excel (juste le fichier, pas la session Excel) je libère environ 40mo de mémoire uniquement...
Comment puis-je intégrer la gestion de mémoire à mes function?
Partager