VBA - ACCESS Fichier texte de plus de 20 000 lignes - VB/VBA/VBS - Programmation
Marsh Posté le 02-03-2006 à 17:42:56
J'ai eu le même soucis, et je l'ai résolu avec la fonction d'importation des données externes. Malheureusement, je n'ai plus le code VBA, car c'était dans mon emploi précédent. Cette fonction correspond à l'option "Données externe/importer" du menu "Fichier". J'avais enregistré une macro (code VBA) en faisant marcher cette fonction à la main. Une possibilité qui m'avait été utile était d'avoir un "modèle" d'importation. Ce modèle est caché derrière le bouton "Avancé" dans la boite de dialogue de l'importation, puis derrière le bouton "spécifications d'importation/exportation".
C'est un peu galère pour mettre au point cette importation, mais le résultat en vaut la peine. C'est sans comparaison avec le temps que mettre les requêtes d'insertion.
Marsh Posté le 02-03-2006 à 18:06:06
Salut,
Tu pourrais peut-être essayer un copier / coller par ajout et voir ce que cela donne.
Je le fais souvent pour des volumes de 7 à 8000 lignes en quelques secondes.
A+
Horatio
Marsh Posté le 03-03-2006 à 10:09:56
Quelle technique utilises-tu pour ton traitement ? Requêtes, requêtes créées à la volée, code VBA pur, option d'interface ?
L'insertion dans une table qui comporte des index est coûteuse en temps.
Il m'est arrivé de supprimer les index puis de les recréer après le traitement. Je ne sais pas si c'est encore utile avec les dernières versions d'Access.
Autre piste, procéder à l'insertion dans une table temporaire sans index, puis lancer une requête Access d'ajout d'enregistrements dans la table définitive; il est posssible qu'Access optimise mieux avec ses requêtes que quand on code en dur le traitement
Marsh Posté le 03-03-2006 à 16:04:24
Merci beaucoup pour votre aide
Marsh Posté le 02-03-2006 à 15:40:56
Bonjour à tous
Mon problème est que je transfère un fichier de plus de 20 000 lignes. Bien plusieurs en faits.
Un de 20 000 lignes, l'autre de 100 000, l'autre de 30 000.
Le problèmes c'est que le temps de transfert est excessivement long et j'aimerais savoir s'il y a des trucs pour pouvoir transférer plus rapidement.
Une ligne s'insère en peu de temps, mais puisqu'il y en a 20 000 cela peut prendre jusqu'a 7min d'exécution. OUFF!!!
J'insère dans plusieurs tables aussi, la est le problème. J'ai fait mon modèle de base de donnée de manière logique et alors une fois que ces données seront insérées, il sera facile de récupéré mes données. Mais de les insérer est beaucoup trop long...
Je ne sais pas si il y a quelqu'un qui a déjà tombé face à face avec un problème semblable mais j'aimerais entendre vos suggestions.
Maryse
Message édité par kissmytoe le 02-03-2006 à 15:55:58
---------------
Yes! A girl in computer science!