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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    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
    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 Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    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)

  3. #3
    Membre confirmé
    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
    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 Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    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

  5. #5
    Membre confirmé
    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
    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 confirmé
    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
    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

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