Performance lors de la lecture d'un fichier excel
Bonjour à tous.
Je souhaite récupérer certaines données d'un fichier excel et les placer dans une table. Ce traitement est déclenché par un bouton dans un formulaire.
Le fichier excel est très volumineux (60,000 lignes).
Je procède de la manière suivante (j'ai simplifié car il y a 24 champs):
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open(Me.Txt_Path.Value)
Set xlSheet = xlBook.sheets("onglet1")
While xlSheet.Cells(i, 2).Value <> "" And i < 65535
rqst = "insert into ma_table (champs1, ... ,Champ24)" & _
"values (" & _
"" & une_fonction(xlSheet.Cells(i, 1).Value, un parametre) & _
"" & xlSheet.Cells(i, 1).Value & ")"
docmd.runsql(rqst)
Wend |
En gros je construit une requete en texte en allant chercher des valeurs dans la feuille excel, puis j'execute la requete d'insertion.
Ca marche, mais les performances sont dramatiques (j'ai arreté les frais au bout d'une demi-heure alors que j'en étais environ à la moitié!)
Aurriez vous des idées pour améliorer la performance?
J'avais eu le meme probleme dans le sens inverse (copie de valeurs d'access vers une feuille excel). Je l'avais résolu avec un CopyFromRecordSet, mais malhereusement, il n'existe pas de "copytorecordset" !
Merci à vous