IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

[VBA] Création d'un format d'import de fichier texte


Sujet :

Access

  1. #1
    Membre habitué
    Inscrit en
    Août 2004
    Messages
    159
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Août 2004
    Messages : 159
    Points : 131
    Points
    131
    Par défaut [VBA] Création d'un format d'import de fichier texte
    Bonjour,

    J'ai créé une appli dans laquelle je charge des données à partir de fichiers texte. Ces fichiers contiennent tous un en-tête qui explique le format des données par contre le nom et le contenu des fichiers changent constamment.
    J'ai donc pu créé un module d'import qui analyse le format des données puis les charge ligne à ligne.
    Cela marche très bien mais c'est parfois très long surtout sur de gros fichier (parfois 50 Mo) .

    Je me suis aperçu que c'est beaucoup plus rapide quand je fais l'import du fichier texte (épuré des lignes de formatage) à l'aide de la commande DoCmd.TransferText.

    J'aimerais donc remplacer mon module par un autre qui créerai un format d'import puis l'utiliserai dans un docmd.transfertext.

    Est-ce que quelqu'un sait si c'est réalisable à l'aide de code VBA ?

  2. #2
    Membre éclairé Avatar de stéphane_ais2
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 792
    Points : 891
    Points
    891
    Par défaut
    Bonjour,

    Je pense que Oui sans l'avoir jamais réalisé...
    via DAO notamment...en lisant dans un fichier désigné les lignes et en plaçant le résultat dans une variable...

    ...

    SE

    Modif : dans ce cas plus besoin d'utiliser la méthode TransferText de l'objet DoCmd...

  3. #3
    Membre habitué
    Inscrit en
    Août 2004
    Messages
    159
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Août 2004
    Messages : 159
    Points : 131
    Points
    131
    Par défaut
    J'ai pas dû être clair, j'ai déjà fait l'importation ligne à ligne mais je veux utiliser la méthode transferText pour une question de rapidité d'exécution.

    Je pense aussi que si c'est faisable, il faut passer par DAO, mais je ne trouve pas quel objet utiliser s'il existe.

    Merci quand même.

  4. #4
    Membre éclairé Avatar de stéphane_ais2
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 792
    Points : 891
    Points
    891
    Par défaut
    Comme je l'ai dit, je n'ai pas essayé...
    Via DAO, regarde peut-être du côté de l'instruction Line Input et utilise la méthode AddNew avec le jeu d'enregistrement déclaré...et une petite boucle pour le faire le tour des infos...

    SE

  5. #5
    Membre habitué
    Inscrit en
    Août 2004
    Messages
    159
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Août 2004
    Messages : 159
    Points : 131
    Points
    131
    Par défaut
    Je crois qu'on ne se comprend pas,
    Déjà, je ne vois pas le lien entre DAO et Line input. Line input sert juste à charger les données d'une ligne du fichier dans une variable. C'est ce que j'utilise dans mon module actuel mais cela m'est complètement inutile pour mon nouveau module (excepté pour le chargement des données de définition du format).

    Ensuite, j'ai beau chercher dans le modèle DAO, je ne vois pas d'objet qui pourrais servir à déclarer un modèle d'import.

    Est-ce que quelqu'un sait comment ces modèles sont gérés dans access ?

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    tu procédes ainsi
    par type de fichier
    1 avec un éditeur genre wordpad j'ouvre mon fichier et je vire le descriptif
    2 je procéde à un import manu avec l'assistant et je cale mes paramètres
    3 j'enregistre mon fichier de specification typenn
    4 par programme j'ouvre mon fcher texte et je lis l'en tête
    5 en fonction de l'en tête je mémorise lr typenn à utiliser
    6 je recopie mon fichier texte (sans l'entête) dans un fichier textebis
    7 je lance mon docmd avec textebis et typenn je peux aussi attacher ma table

    améliorations très souhaitables obtenir un fichier texte sans en tête portant dans son nom le typenn à utliser

    il n'est pas certain que pour 50 Mo tout cela soit payant
    mais tu nous diras

    il y a une autre voie peut être plus payante
    déclarer le fichier texte comme une table attachée ayant une seule colonne de texte et à partir de celle-ci prévoir une requête ajout qui
    en extraie les données

  7. #7
    Membre habitué
    Inscrit en
    Août 2004
    Messages
    159
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Août 2004
    Messages : 159
    Points : 131
    Points
    131
    Par défaut
    Merci Random,

    Ta première solution est malheureusement inapplicable pour moi.
    En effet, l'outil que j'ai développé nous permet de charger dans access, pour analyse, les requêtes effectuées sur notre base de prod avec l'outil préhistorique qui est à notre disposition. Du coup je sors entre 10 et 20 fichiers par jour en one shot. Si je dois définir le format à chaque fois, autant continuer avec mon module actuel.
    Ta solution n'est en fait utile pour moi que pour les fichiers d'exploit' que j'extrait de manière régulière. (c'est d'ailleurs ce que je fait pour les plus gros)

    Par contre ta deuxième solution me botte assez, c'est tout con mais fallait y penser.
    Ceci-dit cela me promet quelques heures d'amusement car il va falloir que je génère une nouvelle requête SQL à chaque import en fonction de la forme de mes données. Je sens que j'vais m'éclater
    Merci pour la piste.

Discussions similaires

  1. [AC-2007] Création format d'import de fichier
    Par ALEXM dans le forum Access
    Réponses: 2
    Dernier message: 23/08/2012, 14h27
  2. Problème de format d'import de fichier texte
    Par jsteffe dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 13/11/2007, 12h40
  3. VBA importer un fichier texte
    Par grogui dans le forum VBA Access
    Réponses: 7
    Dernier message: 04/06/2007, 21h52
  4. Réponses: 2
    Dernier message: 04/06/2007, 15h39
  5. Réponses: 3
    Dernier message: 01/08/2006, 15h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo