Bonsoir à tous,
Tout d'abord je vous souhaite une excellente nouvelle année 2018
Malheureusement elle commence par un souci de macro
J'ai développé une macro, il y a 2 ans, qui a toujours tourné à la perfection sur différentes version d'Excel.
Or depuis que ma boîte a migré sous office365, ma macro devient capricieuse.
Le souci est qu’elle bouffe de la mémoire de façon croissante avec Excel 2016, alors qu’elle utilise une quantité de mémoire constante sur les versions antérieures d’Excel.
Résultat : au bout d’un certain temps, la macro s’arrête toute seule, sans explications.
Le principe général de cette macro est de :
- ouvrir x fois un fichier xls/slxs
- d'en extraire des données différentes lors de chaque ouverture.
- d'enregistrer le fichier sous un nom différent à chaque fois.
J'ai ciblé le souci : il semblerait que ce soit la boucle d'ouverture/fermeture du fichier.
Je pense donc qu'il s'agit d'un problème de mauvaise gestion de la mémoire dans ma macro (mais qui bizarrement pose problème maintenant avec excel 2016.)
J’ai simplifié à l’extrême la macro (avec une boucle qui ouvre/ferme 200 fois le fichier) et le problème d’utilisation croissante de la mémoire est bien là.
Voici le code simplifié à l'extrême :
Sub UDTQ_Tronçonner()
Dim Wb As Workbook
Dim i As Integer
For i = 1 To 200
Workbooks.Open Filename:="D:\Classeur1.xlsx"
Set Wb = ActiveWorkbook
Wb.Close False
Set Wb = Nothing
Next i
End Sub
Ci-joint la macro, directement dans un fichier xlam
Le fichier Classeur1.xlsx quant à lui, vous pouvez le créer vous-même, il peut être vide
Quelqu'un aurait-il une idée de ce qui cloche ?
ps : je précise que je suis un autodidacte non confirmé en vba, donc par pitié soyez indulgents avec moi
Merci d'avance