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

VBA Access Discussion :

Export de plusieurs tables dans un seul fichier Texte [AC-2007]


Sujet :

VBA Access

  1. #1
    Membre du Club
    Inscrit en
    Mai 2007
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 71
    Points : 47
    Points
    47
    Par défaut Export de plusieurs tables dans un seul fichier Texte
    Bonjour,

    j'ai un besoin urgent d'exporter plusieurs tables dans un même fichier texte.
    Avec docmd.transfertext le fichier généré s'écrase obligatoirement si j'utilise le même nom de fichier. Comment faire ?

  2. #2
    Membre confirmé
    Inscrit en
    Février 2011
    Messages
    465
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 465
    Points : 549
    Points
    549
    Par défaut
    Une solution serait de mettres toutes ces tables dans une seule table cumulative puis d'exporter cette table cumulative.

  3. #3
    Membre du Club
    Inscrit en
    Mai 2007
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 71
    Points : 47
    Points
    47
    Par défaut
    J'ai envisagé cette solution mais le problème est que je n'ai pas le nombre identique de champ dans les différentes tables.

    Ou alors s'il y a une autre solution je suis preneur.

    Le résultat que je dois obtenir ressemble à cela :

    DATE
    DEPOT
    FLAG
    CODE ARTICLE QTE PU

    CODE ARTICLE QTE PU provient de l'export d'une table avec séparateur tabulation
    DATE est fixe
    DEPOT aussi
    FLAG aussi

  4. #4
    Membre confirmé
    Inscrit en
    Février 2011
    Messages
    465
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 465
    Points : 549
    Points
    549
    Par défaut
    Connais-tu les instructions Write ou Print ? Cela permet de composer un fichier texte ligne par ligne.
    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
    Function Test()
    Dim iFileNbr As Integer
    Dim strMonTexte As String
     
    'Freefile sert à utiliser le premier numero de fichier disponible
    iFileNbr = FreeFile
    Open "C:\Temp\test.txt" For Output As #iFileNbr
     
    'Ouvrir une boucle Do...Loop pour parcourir toutes les tables
    'Ouvrir une 2ième boucle pour parcourir tous les champs....
    strMonTexte = strMonTexte  & ";" & Table![Champ]
     
    'Unlike the Print # statement, the Write # statement inserts commas between items and quotation marks around strings as they are written to the file
    'Write #iFileNbr, strMonTexte 
    Print #iFileNbr, strMonTexte 
    'Fermer Boucle
    'Fermer boucle
    Close #iFileNbr
    End Function
    C'est aussi une solution possible mais c'est assez fastidieux.

    J'ai aussi regardé OutputTo mais j'obtiens le même résultat que toi.

  5. #5
    Membre du Club
    Inscrit en
    Mai 2007
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 71
    Points : 47
    Points
    47
    Par défaut
    Merci, je vais lire mais dans mon cas j'utilise un fichier texte et pas excel.

    J'ai réussi à écrire le début grace à ce code :

    Private Sub Commande4_Click()

    Dim a As String
    b = Me.choix_depot.Column(0)


    fname = "C:\" & b & ".txt"
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set tf = fs.CreateTextFile(fname)
    Enr1 = "#FLG 001"
    Enr2 = "#VER 6"
    Enr3 = "1"
    Enr4 = "#INV"
    Enr5 = b
    Enr6 = "300913"
    tf.WriteLine (Enr1)
    tf.WriteLine (Enr2)
    tf.WriteLine (Enr3)
    tf.WriteLine (Enr4)
    tf.WriteLine (Enr5)
    tf.WriteLine (Enr6)

    tf.Close

    End Sub

    Mais du coup je ne sais pas comment écrire à la suite ma table avec séparateur tabulation sans passer par DoCmd.TransferText.

  6. #6
    Membre confirmé
    Inscrit en
    Février 2011
    Messages
    465
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 465
    Points : 549
    Points
    549
    Par défaut
    En y repensant, je me dis que mettre toutes les données dans une table cumulative avant de l'exporter est sans doute plus simple. Il n'est pas indispensable que les tables de depart aient toutes le même nombre de champs.

    Je suppose que tu connais le format de tes tables et qui celui-ci est fixe.

    Etape 1.
    Creer manuellement une table cumulative contenant tous tes champs : Depot, QTY, Date et Flag

    Etape 2
    Creer une query qui met les données de Table1 dans la Table cumulative
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO Tbl_Cumul ( Depot, QTY )
    SELECT Table1.Depot, Table1.qty
    FROM Table1;
    Comme il y moins de champs dans Table1 que dans la table cumulative, cette query n'utilise pas tous les champs de la table cumulative.

    Etape 3
    Créer une query qui met les données de la Table2 dans la table cumulative
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO Tbl_Cumul ( Depot, QTY, [date], Flag )
    SELECT Table2.Depot, Table2.QTY, Table2.date, Table2.Flag
    FROM Table2;
    Etape 4
    exporter la table cumulative comme tu le fais avec ton docmd.transfertext

  7. #7
    Membre du Club
    Inscrit en
    Mai 2007
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 71
    Points : 47
    Points
    47
    Par défaut
    Je vais essayer mais le problème est qu'après les premières s'il y a des tabulations, j'ai peur que ce fichier que je dois importer dans un logiciel ne fonctionne pas.

  8. #8
    Membre du Club
    Inscrit en
    Mai 2007
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 71
    Points : 47
    Points
    47
    Par défaut
    J'ai résolu mon problème grace à un copier coller par vba.

  9. #9
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Exportez simplement une requête UNION de toutes ces tables en ne sélectionnant que les champs désirés.

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

Discussions similaires

  1. Groupement de plusieurs tables dans une seule
    Par kemiolek dans le forum VBA Access
    Réponses: 2
    Dernier message: 06/06/2008, 17h27
  2. Réponses: 12
    Dernier message: 03/06/2008, 17h54
  3. exporter plusieurs feuilles dans un même fichier texte
    Par rom05 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 22/04/2008, 09h21
  4. Réponses: 2
    Dernier message: 22/09/2007, 15h37
  5. plusieurs tables dans une seule table
    Par scully2501 dans le forum Access
    Réponses: 1
    Dernier message: 10/10/2005, 09h19

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