Bonjour,
J'ai une petite macro qui lie la propriété OnAction d'une forme. Elle tourne en boucle, et je me suis aperçu qu'Excel prenait de plus en plus de mémoire, sans la libérer.
Voici comment reproduire le bug.
Créer un classeur vierge. Créer quelques formes.
Créer un module vba avec ce code:
(Je sais que les réinitialisation après les boucles ne sont pas utiles, mais au cas où)
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
16
17
18
19 Option Explicit Public Sub testMem() Dim wsCurs As Worksheet Dim shCurs As Shape Dim strShapeOnAction As String While True For Each wsCurs In ThisWorkbook.Sheets For Each shCurs In wsCurs.Shapes strShapeOnAction = shCurs.OnAction Next shCurs strShapeOnAction = "" Set shCurs = Nothing Next wsCurs Set wsCurs = Nothing DoEvents Wend End Sub
Lancer le code et vérifier le processus Excel dans le gestionnaire de tache.
On voit très bien sa taille mémoire augmenter...
Cela ne se produit qu'à la lecture de OnAction.
Système d’exploitation Microsoft Windows*7 Entreprise (idem sur un XP SP3)
Version 6.1.7601 Service Pack 1 Build 7601
Microsoft Excel 2010 (14.0.6126.5003) SP1 MSO (14.0.6129.5000) (32bits)
Partager