Bonjour,
il y a déjà d'autres discussions mais pas exactement la même chose...
En lancant VBA et en lui faisant faire environ 400 boucles avec un dim u() as string puis dans le code un u() = Split(chaine_data,...), un Workbooks.Add pour ouvrir puis fermer le classeur excel aprés calculs effectués...
et bien aprés 280 boucles le message mémoire pleine s'affiche...
Si découpage en 2 parties de 200 boucles je n'ai aucun problème...
il me semble que je n'ai pas bien vidé la mémoire après chaque boucle, alors que chaque boucle est quasi indépendante l’une de l’autre, seule chaine_data et 2-3 autres paramètres du type Boolean, Date, Integer doivent être conservés
Pour u() qui est indépendant pour chaque nouvelle boucle, par exemple j'ai essayé, Redim u(0) ( pas réussi u()= Unload, Set u()= Nothing) cela a permis semble t’il de gagner 80 boucles...u() est il bien vide dans la mémoire ?
Il y a aussi pour chaque boucle ouverture puis fermeture d’un classeur excel indépendant pour chaque boucle de la manière suivante :
Mais chaque nouveau classeur à l’ouverture s’appelle classeur(n+1) et non toujours classeur1...donc ici cela doit surement manger de la mémoire, comment vider ce classeur de la mémoire ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Workbooks.Add ActiveWorkbook.SaveAs Filename:=flna, FileFormat:=xlExcel8, CreateBackup:=False 'sauvegarde sous le nom avec la bonne extension et le bon FileFormat ici sans macro Workbooks(2).Save 'sauvegarde le fichier avant de le fermer Workbooks(2).Close 'ferme le fichier
Je vais essayer avec un set W = Workbooks.Add et regarder ce qui mange de la mémoire...
puis set W = nothing...
Partager