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

Autres outils décisionnels Discussion :

Import ACCESS de fichiers TXT à structure variable


Sujet :

Autres outils décisionnels

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 12
    Points : 8
    Points
    8
    Par défaut Import ACCESS de fichiers TXT à structure variable
    Bonjour,

    Il m'est nécessaire pour pouvoir lire et exploiter facilement des données de les importer depuis un fichier au format "txt" vers ACCESS (Excel le cas échéant).
    Je maîtrise un minimum les fonction d'import d'Access qui fonctionnent très bien quand toutes les lignes de données possèdent une structure unique ( même séquence, même nombre de variable, même longueur de champ).
    Maintenant, je dois importer l'ensemble des données d'un fichier "txt" dont la structure ( séquence, nombre de champ et longueur de champ ) est variable. Cette variation s'effectue entre chaque ligne du fichier txt ( = 1 enregistrement) en fonction de la présence ou de l'absence d'une expression ou d'un code dans chaque ligne. Pour information, le fichier est une ligne continue de caractères alphanumériques sans séparateur.

    Je cherche donc un moyen d'importer ces données dans ACCESS. J'envisage deux possibilités

    - une table unique est définie avec une liste de champs fixes et leurs spécifications. Les champs ne sont approvisionnés, ligne à ligne, qu'en présence de l'une ou l'autre des valeurs de références dans chaque ligne du fichier source ( format .txt).

    - la ligne à telle valeur, donc telle structure elle va dans telle table,
    autrement dans telle autre.

    J'espère que mes explications sont claires. Trouver et surtout comprendre la solution n° 1 serait l'idéal pour moi.

    D'avance merci pour l'aide que vous pourrez m'apporter. Mon objectif est de progresser dans la maîtrise du VBA.

  2. #2
    Membre expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 788
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 788
    Points : 3 054
    Points
    3 054
    Par défaut
    Je pense avoir compris le layout de ton fichier toutefois il aurait été plus simple de poster un exemple de quelques lignes du fichier.

    Ma première question : as-tu la possibilité d'influencer la création du fichier ? Est-il envisageable de demander à ton "fournisseur" de créer un fichier par type de record ==> autant de fichier que tu as de types d'enregistrement. Si c'est possible, n'hésite pas à faire la demande; Ainsi, tout sera plus clair et tu pourras importer les fichiers un par un; dans une table dédicacée et avec un type d'importation dépendant de ton fichier.

    Si pas, dans ta situation actuelle, ce sera beaucoup de bricolage. Si je comprends ce que tu écris, tu as un record qui indique le type d'enregistrement qui va suivre et donc, tu dois d'abord lire la ligne 98 (p.e.) avant de savoir que va contenir la ligne 99. Sorry mais je ne vois pas d'autre moyen que de lire le fichier ligne par ligne et d'avoir des instructions SQL du type INSERT INTO en fonction du type de record précédemment lu.

    C'est vraiment beaucoup de bricolage et impactera fortement les performances de ton importation ===> à éviter comme la peste.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Bonjour,

    Merci pour ta réponse. En fait je n'ai malheureusement pas la possibilité d'obtenir que les lignes dont les structures sont différentes soient classées dans des fichiers à part.( ce qui serait conforme aux pratiques habituelles)
    Pour clarifier mes propos, j'ai un fichier txt et chaque ligne comporte 1 code. Si ce code est présent alors la ligne doit être importer dans une structure de type 1, si c'est un autre code ce sera une structure de type 2. Ainsi de suite pour chaque ligne importer
    Dans mon exemple, deux valeurs différentes permettent de définir le type de de structure.
    Voici un exemple : ( pas de "" dans le fichier source).

    "ass179100134508923Ray Monde NANTES "
    "benJames Bond Fils "


    La première ligne, je dois déduire de la présence de la valeur "ass" que le fichier contient 6 champs ( qualité,n°Sécu, clef,Prénom, Nom,Ville).Dans la première ligne je dois déduire de la valeur "ben" que mon importation se fera sur 4 champs (qualité,prénom,nom,filiation)


    Voilà, j'espère que mon explication sera claire.
    Merci encore pour ton aide.

  4. #4
    Membre expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 788
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 788
    Points : 3 054
    Points
    3 054
    Par défaut
    Aïlle. Good luck.

    Il te faut donc lire ton fichier; ligne par ligne et faire un Left(xxx, 3) pour déterminer comment interpréter le record.

    Si tu as besoin d'aide sur la lecture de fichier texte, Google me retourne ce lien comme premier pour ma recherche. http://www.cathyastuce.com/vba/codefichierseq.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        Dim F As Integer
               Dim strLigne As String
     
               F = FreeFile '1er       numéro libre
               Open strChemFich For Input As #F 'ouvert       en lecture
               While Not EOF(F)
                    Line Input #F,       strLigne 'lit la ligne entière et l'attribue à       la variable strLigne
     
                     If Left(strLigne, 3) = "ass" then 
                    ' Traite ici les records ASS
              End if
               Wend
               Close #F

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 12
    Points : 8
    Points
    8
    Par défaut Solution trouvé
    Merci,

    Finalement j'ai planché dessus une partie de la nuit et j'ai réglé mon problème en passant par la stratégie vba suivante dans xls :

    - import dans une colonne unique de toutes les lignes du fichier txt. source
    - rechercher ligne à ligne et distinguer 5 blocs de conditionnalité.
    - 5 blocs car j'ai 5 valeurs possibles dans chaque ligne de flux testée.
    - à chaque condition correspond un tableau "array(xx,xx)..." donc une
    structure de champs ( donc une répartition du flux sur x colonnes)
    - la structure qui s'applique alors à chaque ligne est celle de la condition vérifiée.

    J'ai plus qu'a bosser sur une interface pour adapter le code automatiquement en fonction de la typologie des flux(nombre, identité, structure des champs...). C'est pas fini.

    Merci pour votre aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. import d'un fichier .Txt dans Access (2000 ou 2003)
    Par marieo dans le forum VBA Access
    Réponses: 1
    Dernier message: 16/07/2009, 13h31
  2. Réponses: 4
    Dernier message: 30/11/2006, 16h22
  3. importation d'un fichier txt dans une table
    Par pierre.egaud dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 06/09/2006, 16h26
  4. import d'un fichier .txt
    Par mat75019 dans le forum Access
    Réponses: 24
    Dernier message: 26/04/2006, 16h31
  5. Table d'une Bde Access vers fichier .txt
    Par cefabien dans le forum Access
    Réponses: 2
    Dernier message: 08/12/2005, 11h31

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