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 :

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
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.

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?