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 :

Consolidation et conversion en boucle fichier Txt dans Excel


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    assistant contrôle de gestion
    Inscrit en
    Octobre 2013
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : assistant contrôle de gestion
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 208
    Points : 68
    Points
    68
    Par défaut Consolidation et conversion en boucle fichier Txt dans Excel
    Bonjour à tous

    Je souhaites via un code VBA aller sélectionner des fichiers .txt et qu'ils soient convertis et consolidés dans un même onglets sachant que le séparateur des fichier .txt est ";"

    Je n'arrive pas à trouver comment intergrer ce code permettant de convertir mes fichiers Txt avec un separateur ";" au reste du code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     Workbooks.OpenText Filename:=Fichiers(i), Origin:=xlWindows, _
            StartRow:=1, DataType:=xlDelimited, Semicolon:=True
    Voici le reste du 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
    Sub Importer()
        Dim dlDest As Long, dlSource As Long, dlgR As Long, i As Long
        Dim Chemin As String
        Dim fichier As Variant, Fichiers As Variant
        Dim Wb As Workbook
     
        Application.ScreenUpdating = False
     
    'efface les données de l'onglet DATA de la colonne A a la colonne AF sauf la premiere ligne
    With ThisWorkbook.Sheets("Data")
        dlgR = .Range("A" & Rows.Count).End(xlUp).Row
        .Range("A2:AF" & dlgR).ClearContents
    End With
     
        'Ouvre exploreur et permet aux utilisateur de selectionner les fichiers Excel a consolider
        ChDir ThisWorkbook.Path
        Fichiers = Application.GetOpenFilename("Text Files (*.txt),*.txt", MultiSelect:=True)
        'Si aucun fichier n'est selectionné, on arrete le code
        If Not IsArray(Fichiers) Then Exit Sub
        'Pour chaque fichier selectionné
     
       For i = 1 To UBound(Fichiers)
     
            dlDest = ThisWorkbook.Sheets("Data").Cells(Rows.Count, "A").End(xlUp).Row + 1 '1ere ligne vide
            'On definit Wb qui ouvre le fichier selectionne
        '    Set Wb = Workbooks.Open(Fichiers(i))
     
            Set Wb = Workbooks.Open(Fichiers(i))
                      Workbooks.OpenText Filename:=Fichiers(i), Origin:=xlWindows, _
            StartRow:=1, DataType:=xlDelimited, Semicolon:=True
     
     
            ', Origin:=xlWindows, _
            'StartRow:=1, DataType:=xlDelimited, Semicolon:=True
            'Feuille à copier
           With Wb.ActiveSheet.Name
                'dernière ligne du fichier source
                dlSource = .Cells(.Rows.Count, "A").End(xlUp).Row
                'Copier vers la 1ere ligne non vide de la feuille Data du fichier de consolidation
                .Range("A2:AF" & dlSource).Copy ThisWorkbook.Sheets("Data").Range("A" & dlDest)
          End With
            'On ferme le fichier source ouvert
            Wb.Close False
        Next
     
        Application.ScreenUpdating = True
     
    End Sub
    J'ai utilisé ce code mais il y a peut être d'autres solutions, je débute dans le VBA.

    Merci d'avance pour votre aide.

  2. #2
    Membre émérite
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Points : 2 684
    Points
    2 684
    Par défaut
    Bonour.

    Fais un test avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Wb = Workbooks.Open(Filename:=Fichiers(i), local:=True)
    Cordialement

    Docmarti.

  3. #3
    Membre du Club
    Homme Profil pro
    assistant contrôle de gestion
    Inscrit en
    Octobre 2013
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : assistant contrôle de gestion
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 208
    Points : 68
    Points
    68
    Par défaut
    Ca à l'air de fonctionner mais j'ai une erreur 424 Objet requis sur la ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                dlSource = .Cells(.Rows.Count, 1).End(xlUp).Row

  4. #4
    Membre émérite
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Points : 2 684
    Points
    2 684
    Par défaut
    Ce n'est pas le nom de l'objet feuille qui t'interesse, mais l'objet feuille lui-meme.

    Remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With Wb.ActiveSheet.Name
    par
    Cordialement

    Docmarti.

  5. #5
    Membre du Club
    Homme Profil pro
    assistant contrôle de gestion
    Inscrit en
    Octobre 2013
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : assistant contrôle de gestion
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 208
    Points : 68
    Points
    68
    Par défaut
    Merci pour la précision.

    Voici le code modifié qui fonctionne cette fois.

    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
    Sub Importer()
        Dim dlDest As Long, dlSource As Long, dlgR As Long, i As Long
        Dim Chemin As String
        Dim Fichier As Variant, Fichiers As Variant
        Dim Wb As Workbook
     
        Application.ScreenUpdating = False
     
    'efface les données de l'onglet GLOBAL de la colonne A a la colonne AF sauf la premiere ligne
    With ThisWorkbook.Sheets("GLOBAL")
        dlgR = .Range("A" & Rows.Count).End(xlUp).Row
        .Range("A2:AF" & dlgR).ClearContents
    End With
     
        'Ouvre exploreur et permet aux utilisateur de selectionner les fichiers Excel a consolider
        ChDir ThisWorkbook.Path
        Fichiers = Application.GetOpenFilename("Text Files (*.txt),*.txt", MultiSelect:=True)
     
        'Si aucun fichier n'est selectionné, on arrete le code
        If Not IsArray(Fichiers) Then Exit Sub
     
        'Pour chaque fichier selectionné
        For i = 1 To UBound(Fichiers)
     
        dlDest = ThisWorkbook.Sheets("GLOBAL").Cells(Rows.Count, "A").End(xlUp).Row + 1 '1ere ligne vide
     
        'On definit Wb qui ouvre le fichier selectionne
         Set Wb = Workbooks.Open(Filename:=Fichiers(i), local:=True)
     
            'Feuille à copier
           With Wb.ActiveSheet
                'dernière ligne du fichier source
                dlSource = .Cells(.Rows.Count, 1).End(xlUp).Row - 6
                'Copier vers la 1ere ligne non vide de la feuille GLOBAL du fichier de consolidation
                .Range("A3:AF" & dlSource).Copy ThisWorkbook.Sheets("GLOBAL").Range("A" & dlDest)
          End With
            'On ferme le fichier source ouvert
            Wb.Close False
        Next
     
        Application.ScreenUpdating = True
     
    End Sub

  6. #6
    Membre du Club
    Homme Profil pro
    assistant contrôle de gestion
    Inscrit en
    Octobre 2013
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : assistant contrôle de gestion
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 208
    Points : 68
    Points
    68
    Par défaut
    Si je veux qu'il explore tous les fichiers txt du dossier, je dois juste remplacer:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        'Ouvre exploreur et permet aux utilisateurs de sélectionner les fichiers Excel à consolider
        ChDir ThisWorkbook.Path
        Fichiers = Application.GetOpenFilename("Text Files (*.txt),*.txt", MultiSelect:=True)
    par: ??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
         'Répertoire contenant les fichiers
        Chemin = ThisWorkbook.Path
        Fichiers = Dir(Chemin & "\*.txt")

  7. #7
    Membre émérite
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Points : 2 684
    Points
    2 684
    Par défaut
    Regarde "Comment boucler sur les fichiers d'un répertoire ?" dans cette page de la FAQ
    Cordialement

    Docmarti.

  8. #8
    Expert éminent sénior
    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
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, à adapter à ton contexte
    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
    Option Explicit
     
    Sub FusionTXTs()
    Dim FSO As Object
    Dim SourceFolder As Object, OutputFile As Object
    Dim File As Object, TextFile As Object, sFusionTXTs As String
    Dim sText As String, sNomFichier As String, sDossierTxt As String
    Const ForReading = 1
     
        sDossierTxt = "....."
        sFusionTXTs = "....."
        sNomFichier = "....."
     
        Set FSO = CreateObject("Scripting.FileSystemObject")
        Set SourceFolder = FSO.GetFolder(sDossierTxt)
        Set OutputFile = FSO.CreateTextFile(sNomFichier)
     
        For Each File In SourceFolder.Files
            Set TextFile = FSO.OpenTextFile(File, ForReading)
            sText = TextFile.ReadAll
            TextFile.Close
            OutputFile.WriteLine sText
        Next File
        OutputFile.Close
     
        Set OutputFile = Nothing
        Set SourceFolder = Nothing
        Set FSO = Nothing
    End Sub

  9. #9
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  10. #10

Discussions similaires

  1. [XL-2010] Consolidation et conversion en boucle fichier Txt dans Excel
    Par phoenix974 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/10/2017, 02h20
  2. Ouverture fichier txt dans excel date 10/01/2007 au lieu de 01/10/2007
    Par megapacman dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 18/10/2007, 14h14
  3. importer un fichier txt dans excel
    Par rm34000 dans le forum Excel
    Réponses: 2
    Dernier message: 03/09/2007, 09h12
  4. Réponses: 2
    Dernier message: 26/01/2007, 14h58
  5. [VBA-Excel] Ouvrir un lot de fichier txt dans Excel
    Par Trollakuir dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 30/06/2006, 10h02

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