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

Macros et VBA Excel Discussion :

Concaténation de fichiers .txt [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Octobre 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Octobre 2015
    Messages : 7
    Par défaut Concaténation de fichiers .txt
    Bonjour à tous,

    J'ai besoin de concaténer un certain nombres de fichiers .txt, possédant tous exactement la même structure, dans un nouveau fichier .txt. Tous les fichiers sont sauvegardés dans le même répertoire, et je voudrais que mon fichier final soit également dans ce même répertoire.

    J'ai par exemple :

    1 fichier .txt contenant "AAAAA"
    1 fichier .txt contenant "BBBBB"

    Mon objectif est d'obtenir, dans un nouveau fichier texte :
    AAAAA
    BBBBB

    Je souhaite aussi éventuellement compter le nombre de lignes contenues dans le nouveau fichier.

    Après quelques essais et recherches sur le net, j'ai bricolé le code suivant :

    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
    54
     
    Option Explicit
     
    Sub Compilation_Fichier_Texte()
     
    Dim k As Integer
    Dim Temp As String, T As String
    Dim Chemin As String, Fichier As String
    Dim X As Long, FichierCompilation As String
    Dim Lignes As Long
     
    'Endroit où sont regroupés les fichiers texte à compiler
    Chemin = "R:\Data\"
     
    'Le nom du fichier où doivent être compilés les fichiers
    FichierCompilation = "Compilation.txt"
     
    On Error Resume Next
    'Suppprime le fichier de compilation s'il existe
    Kill Chemin & FichierCompilation
     
    X = FreeFile
    T = ""
     
    Fichier = Dir(Chemin & "*.txt")
     
    Do While Fichier <> ""
     
        If Fichier <> FichierCompilation Then
     
            Open Fichier For Binary Access Read As #X
            Temp = String(LOF(X), Chr(0))
            Get #X, , Temp
            T = T & Temp
            k = k + 1
            Close #X
     
        End If
     
        Fichier = Dir()
     
    Loop
     
    Lignes = Len(T) - _
    Len(Application.WorksheetFunction.Substitute(T, Chr(10), ""))
    T = Left(T, Len(T) - 2)
     
    Open Chemin & FichierCompilation For Output As #X
    Print #X, T
    Close #X
     
    MsgBox k & " fichiers ont été concaténés dans " & FichierCompilation & """ pour un total de " & Lignes & " lignes."
     
    End Sub
    Le code s'exécute bien, et parcourt le bon nombre de fichiers, mais le fichier généré est...Vide ! Après plusieurs tentatives et modifications, le fichier final reste vierge.
    Je pense qu'il ne manque pas grand chose, est-ce-que quelqu'un aurait la bonté d'âme de m'apporter la petite correction qu'il manque :o) ?

    Je précise que j'ai un niveau moyen en vba, mais c'est la première fois que je m'en sers pour manipuler des fichiers texte... Je ne suis pas trop à l'aise avec les méthodes appropriées dans ce cas.

    Merci beaucoup d'avance pour votre aide.

  2. #2
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut
    Salut !

    Etrange, je viens de faire un test avec ta macro : la compilation des fichiers textes s'est faite correctement.
    par contre, la variable "Lignes" n'a par contre pas la bonne valeur chez moi, car elle me dit que j'ai qu'une ligne alors que j'en ai 2...
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  3. #3
    Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Octobre 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Octobre 2015
    Messages : 7
    Par défaut
    Hello,

    Merci beaucoup pour ta réponse. Le fait que cela fonctionne bien sur ton poste est assez étrange ! Pourrais-tu stp me dire sur quelle version tu es ?
    Sinon, le problème pourrait également venir de mes fichiers .txt, ils sont relativement volumineux : environ 20Mo en moyenne... Est-ce-que cela peut influencer la bonne lecture / écriture des fichiers txt ?

    Merci pour ton aide

  4. #4
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, je commencerai par supprimer le On Error Resume Next qui peut masquer certaines choses.

  5. #5
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut
    Ah oui, ça peut venir de là, car la variable T est une variable String, je sais pas si ce n'est pas limité en un certain nombre de caractères quand même.

    En te lisant, j'ai l'impression que tu as plus que 2 fichiers textes. As-tu essayer d'en compiler déjà 2 pour voir si ça fonctionne ?

    Et j'ai Excel 2010
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  6. #6
    Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Octobre 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Octobre 2015
    Messages : 7
    Par défaut
    Merci pour vos réponses !

    @kiki29 j'ai essayé également en supprimant le On Error Resume Next qui est parfois un peu traître, mais cela n'a rien changé. La macro plante uniquement s'il n'y a pas de fichier de compilation présent initialement, mais si c'est le cas j'obtiens le même résultat : un fichier vierge

    @illight : j'ai essayé de faire fonctionner le module dans un contexte simplifié : juste 2 fichiers texte cible, ne contenant chacun qu'une dizaine de caractères : même résultat...

    J'ai pensé à quelque chose : peut-être y a-t-il quelque chose de mal configuré / manquant dans les références de ma version ? J'ai jeté un œil à Outil\Références dans le menu de la page de l'éditeur, ça donne :Nom : RefVBA.JPG
Affichages : 1404
Taille : 48,8 Ko

    Si vous avez une autre piste, je suis preneur !

    Merci d'avance :o)

  7. #7
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Bonjour,


    attention DIR ne renvoi que le nom de fichier et pas son chemin ...

    ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fichier = Dir(Chemin & "IRIS*.log")
    du coup il faut remettre le chemin lorsque tu as besoin du nom complet ..:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Open Chemin & Fichier For Binary Access Read As #X

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 24/08/2013, 21h58
  2. Concaténer des fichiers txt avec script shell Unix
    Par tsivery dans le forum Shell et commandes POSIX
    Réponses: 1
    Dernier message: 12/01/2011, 14h39
  3. c# 3.0 -> Concaténation de fichier .TXT
    Par Seth_75 dans le forum C#
    Réponses: 9
    Dernier message: 17/10/2008, 15h51
  4. Réponses: 3
    Dernier message: 28/05/2008, 16h30
  5. Comment concaténer deux fichiers *.txt ?
    Par thomcat dans le forum Général VBA
    Réponses: 11
    Dernier message: 11/04/2008, 23h47

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