Hello,
on dirait que tu as une fuite de mémoire ...
Ma recommandation :
1- Utilise ta base de données comme telle, avec un objet DAO (en général le gain de performance est très important car Excel ne charge que les données et pas les formats ou formules). Accessoirement ça évite à Excel d'ouvrir le fichier.
2- Nettoie bien ton code des objets instanciés avec des
Set VariableObjet = Nothing
3- Teste ton code sur un extrait de ta base 200 enregistrements avant d'attaquer les 3000.
voici un exemple pour le point 1, sachant que tu peux créer un SQL plus complexe pour avancer tes calculs.
1 2 3 4 5 6 7 8 9 10 11 12
| dim db As Object
dim dbEng As Object
dim rs as Object
set db = CreateObject("DAO.DBEngine.36")
set dbEng = db.OpenDatabase("chemin complet du fichier DB", False, False, "Excel 8.0;HDR=NO;")
set rs = dbEng.OpenRecordset("SELECT * FROM [Feuil1$]")
ThisWorkbook.ActiveSheet.Range("A1").CopyFromRecordset
rs.close
Set rs = nothing
Set dbEng = nothing
Set db = nothing |
Partager