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):
En gros je construit une requete en texte en allant chercher des valeurs dans la feuille excel, puis j'execute la requete d'insertion.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
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
Partager