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 :

automatisation importation fichierS txt


Sujet :

Access

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 41
    Points : 26
    Points
    26
    Par défaut automatisation importation fichierS txt
    j'ai des fichiers C:\aa\in\info1.txt, info2.txt , infoZY.txt etc... qui
    contiennent des données (3 champs) séparées par des "tabulation" ; les enregistrements étant délimités par des signes "fin de paragraphe"
    Je souhaite importer ces fichiers txt dans la table1 de ma db sous 3 champs
    texte.
    Je parviens à le faire individuellement via l'assistant d'importation et via
    une macro mais n'y aurait-il pas moyen d'importer tous les fichiers txt
    automatiquement via une commande VBA et une boucle pour importer
    C:\aa\in\info*.txt ?
    Qui pourrait m'écrire le code ?
    Merci d'avance.

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 163
    Points : 166
    Points
    166
    Par défaut
    Bonjour et bienvenu sur le forum,

    Tous les participants du forum sont bénévoles, et chacun bosse parallèlement à sa participation aux discussions.

    Chacun est prêt à apporter aide et assistance, mais il est peu probable que quelqu'un va "t'écrire" le code dont tu as besoin.

    Peut-être en formulant la question autrement...

    Bon courage !

    JMarc

  3. #3
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 184
    Points : 1 363
    Points
    1 363
    Par défaut
    Ce que je fais :
    J'utilise un fichier Schema.ini pour définir la structure des fichiers.
    Je scanne mon répertoire et pour tous les fichiers dont le nom a la bonne structure :
    je le copie en changeant le nom (ex FILE01.TXT => FILE.TXT)
    je lie le fichier
    je traite les données
    je zippe le fichier FILE01.TXT et j'archive dans un répertoire.

  4. #4
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 128
    Points : 12 185
    Points
    12 185
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par jeanchcom
    ....Chacun est prêt à apporter aide et assistance, mais il est peu probable que quelqu'un va "t'écrire" le code dont tu as besoin.
    ....
    +1

    C'est certainement pour cela que tu n'as pas eu de réponse.

    Argy

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 163
    Points : 166
    Points
    166
    Par défaut
    Citation Envoyé par argyronet
    +1

    C'est certainement pour cela que tu n'as pas eu de réponse.

    Argy
    Oui, sûrement, mais j'ai eu un peu pitié... et j'ai préféré le dire plutôt que de rester sur ce silence... mais du coup le silence est ailleurs... jeanluc065 ??? Il y a quelqu'un ???

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 41
    Points : 26
    Points
    26
    Par défaut dure dure
    oui, c'est certainement pour cela que je n'ai pas eu de réponse mais ......j'ai peut-être un début de solution

    une boucle avec un movefile vers un répertoire tampon, directement renommer le fichier déplacé en "info.txt", runmacro 'transférer texte" , kill le fichier ou move file de"info.txt" vers un répertoires archives éventuellement .

    il n'y a qu'un truc sur lequel je vais devoir plancher "renommer" le fichier.

    merci pour la pitié dont vous avez fait preuve à mon égard.
    jl

  7. #7
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 184
    Points : 1 363
    Points
    1 363
    Par défaut
    Renommer directement, tu peux pas.
    Il faut le copier : filecopy.

  8. #8
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 128
    Points : 12 185
    Points
    12 185
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    Tu es sur un forum et personne n'est à ta disposition.
    Ceux qui te répondent, prennent sur leur temps perso.
    Sur ce forum, il y a des tutoriels, des cours, des codes sources à foison.
    Donc, prend la peine de chercher et si tu ne trouves pas, revient vers nous avec un bonjour, ça fait toujours plaisir.

    La question que tu poses se résoud très rapidement, la réponse a déjà été évoquée mainte fois donc

    Indice : "FSO"

    Argy

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 41
    Points : 26
    Points
    26
    Par défaut
    Bonjour à toutes et tous,

    Je reconnais mon erreur de ne pas avoir commencé par le bonjour et je m'en excuse.
    Par contre, je vous garantis qu'avant de poster ma question, j'avais lu les conseils et que j'avais effectué des recherches.
    Merci pour votre bonne attention.

  10. #10
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 128
    Points : 12 185
    Points
    12 185
    Billets dans le blog
    5
    Par défaut
    Re,

    Pour ton cas, le FSO possède plusieurs méthodes et propriétés.
    Les intéressantes pour toi seraient d'exploiter celles-ci.
    Bon, je me fends d'un exemple que tu n'auras plus qu'à adapter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    Private Sub ImportMyFile()
    Const MY_FOLDER As String = "C:\AA\IN\"
    Const MY_FILES_START_WITH As String = "info"
    Const MY_TABLE As String = "Ton nom de table"
    Const MY_DB As String = "C:\Ton chemin de BDD\Ton nom de BDD.mdb"
    Dim oFSO As Scripting.FileSystemObject
    Dim oFld As Scripting.Folder
    Dim oFile As Scripting.File
    Dim strStartWith As String
        
        Set oFSO = New FileSystemObject
        Set oFld = oFSO.GetFolder(MY_FOLDER)
        For Each oFile In oFld.Files
            'Looking for "info"
            strStartWith = Mid(oFile.Name, InStrRev(oFile.Name, "\") + 1, 4)
            If strStartWith = MY_FILES_START_WITH Then
              Call ImportThisFileToDB(oFile.Name, MY_TABLE, MY_DB)
            End If
        Next
        Set oFld = Nothing
        Set oFile = Nothing
        Set oFSO = Nothing
    End Sub
    
    Private Sub ImportThisFileToDB(ByVal FileToImport As String, _
    ByVal TableName As String, Optional ByVal DBName As String)
      'Routine d'importation avec TransfertText()
    End Sub
    Argy

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 41
    Points : 26
    Points
    26
    Par défaut
    Bonjour,

    Je viens de prendre connaissance de la solution proposée et je vous en remercie. Je vais m'epresser de la mettre en application.
    Bonne journée et encore merci
    JL

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 41
    Points : 26
    Points
    26
    Par défaut défaut d'importation
    Bonjour,

    J'ai essayé d'appliquer le code fourni par Argyronet et je vous en remercie mais hélas, l'importation ne se réalise pas alors qu'aucun message d'erreur n'apparaît.
    J'en déduis que la séquence se déroule normalement mais.. ?
    J'ai placé mon exemple dans un fichier zip au cas où quelqu'un aurait la gentillesse de bien vouloir m'aider.
    Merci d'avance.
    jl
    Fichiers attachés Fichiers attachés

  13. #13
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 128
    Points : 12 185
    Points
    12 185
    Billets dans le blog
    5
    Par défaut
    Re,

    C'est normal que ça ne marche pas...
    Il n'y a pas de lien entre ta macro et le code...
    Ca sert à rien de faire une routine qui boucle sur un dossier donné si c'est pour lancer une macro dont les spécificités d'importation et notamment le répertoire et le fichier sont écrit en dur !!!

    De toute façon, banni les macros, c'est beaucoup mieux.

    1/ tu dois enregistrer un script d'importation (Avancé)
    2/ tu dois modifier ton code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    Option Compare Database
    
    Private Const MY_TABLE As String = "info1"
    
    Private Function ImportMyFile(ByRef NBRows As Long) As Boolean
    Const MY_FOLDER As String = "C:\aa\"
    Const MY_FILES_START_WITH As String = "info"
    Const MY_DB As String = "C:\aa\id_import.mdb"
    Dim oFSO As Scripting.FileSystemObject
    Dim oFld As Scripting.Folder
    Dim oFile As Scripting.File
    Dim strStartWith As String
    
        On Error GoTo ErrorHandler
        
        Set oFSO = New FileSystemObject
        Set oFld = oFSO.GetFolder(MY_FOLDER)
        For Each oFile In oFld.Files
            'Looking for "info"
            strStartWith = Mid(oFile.Name, InStrRev(oFile.Name, "\") + 1, 4)
            If strStartWith = MY_FILES_START_WITH Then
              Call ImportThisFileToDB(MY_FOLDER & oFile.Name, MY_TABLE, MY_DB)
              NBRows = NBRows + 1
            End If
        Next
        Set oFld = Nothing
        Set oFile = Nothing
        Set oFSO = Nothing
        
        ImportMyFile = True
        Exit Function
        
    ErrorHandler:
        ImportMyFile = False
        Exit Function
    End Function
    
    Private Sub ImportThisFileToDB(ByVal FileToImport As String, _
    ByVal TableName As String, ByVal DBName As String)
      DoCmd.TransferText acImportDelim, "ScriptImportInfo1", TableName, _
    FileToImport, False
    End Sub
    
    Private Sub cmdImport_Click()
    Dim lngNBRecords As Long
    If ImportMyFile(lngNBRecords) Then
      MsgBox "Importation terminé !" & vbCrLf & vbCrLf & _
      Str(lngNBRecords) & " fichier(s) traité(s) avec succès", 48
      DoCmd.OpenTable MY_TABLE, acViewNormal, acReadOnly
    Else
      MsgBox "Importation échouée !", 48
    End If
    End Sub
    Argy

    P.S. Ta base en pièce jointe...
    Avant de la télécharger, essaye par toi-même:
    1. en créant un script d'importation depuis l'assistant
    2. en remplaçant ton label par un bouton
    3. envirant tes macros
    4. en adaptant le code tel que ci-dessus

    Tu seras plus à même de faire des choses plus sympathiques...
    Fichiers attachés Fichiers attachés
    • Type de fichier : zip aa.zip (13,5 Ko, 78 affichages)

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 41
    Points : 26
    Points
    26
    Par défaut un grand merci
    Bonjour,

    C'est avec une très grande satisfaction que j'ai lu le dernier message d'Argyronet accompagné de la solution terminée.
    Les macros servaient uniquement à un test d'importation et à la création du script ; c'est pour cette raison qu'il n'y avait pas d'appel.
    La macro bip-message me servait de balise pour suivre le déroulement.

    Mais je n'aurais jamais été capable de modifier le code tel qu'il se présente en version définitive.
    Je suis très satisfait de l'aide précieuse apportée et je vous en remercie.
    JL

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

Discussions similaires

  1. [SQLServer]Script import fichier .txt
    Par Jenbi dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 25/08/2006, 16h49
  2. Importation fichier TXT / bouton d'automatisation
    Par Webnico dans le forum Access
    Réponses: 3
    Dernier message: 02/08/2006, 09h38
  3. import fichier TXT via ACCESS
    Par lepierre dans le forum Access
    Réponses: 4
    Dernier message: 03/12/2005, 06h52
  4. import fichier txt
    Par nogood1 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 05/10/2005, 11h33
  5. Pb import fichier txt avec lignes de longueurs diverses
    Par zebulon90 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 09/12/2004, 08h32

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