Fusionner plusieurs fichiers txt en un seul onglet xsl.

Fermé
van_van Messages postés 60 Date d'inscription mercredi 6 avril 2016 Statut Membre Dernière intervention 9 janvier 2017 - Modifié par BmV le 7/04/2016 à 09:29
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 7 avril 2016 à 15:05
Bonjour,

Je poste, car je suis complétement décourager, j'ai essaye de mille manières, de l’enregistrement de macro, au code vba internet mais rien à faire!

J'essaye désespérément de fusionner plusieurs fichiers txt qui se trouve dans un répertoire, en un seul onglet sur un classeur excel.

Le but étant de faire des statistiques par la suite.

Merci d'avance

5 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
7 avril 2016 à 11:48
Voilà.
A copier dans un module :
Option Explicit

    Sub Copier_Plusieurs_Fichiers_Txt()
    Dim NomFich, Wbk As Workbook, i As Integer, mavar As Variant, DL_Sh1 As Long, DL As Long
    
        Application.ScreenUpdating = False
        
        Set Wbk = ThisWorkbook
        NomFich = Application.GetOpenFilename(FileFilter:="Fichier texte(*.txt),*.txt", Title:="Sélectionner les fichiers", ButtonText:=mavar, MultiSelect:=True)
        
        If IsArray(NomFich) Then
            For i = LBound(NomFich, 1) To UBound(NomFich, 1)
                If NomFich(i) <> "Faux" Then
                    'ouverture fichiers txt
                    Workbooks.OpenText Filename:=NomFich(i), Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, Semicolon:=True, DecimalSeparator:="."
                    DoEvents
                    
                    'traitement
                    With Wbk
                        Sheets(1).Copy After:=.Sheets(.Sheets.Count)
                        DoEvents
                        If WorksheetFunction.CountA(.Sheets(1).Columns(1)) = 0 Then
                            DL_Sh1 = 1
                        Else
                            DL_Sh1 = .Sheets(1).Columns(1).Find("*", , , , , xlPrevious).Row
                        End If
                        DL = .Sheets(.Sheets.Count).Columns(1).Find("*", , , , , xlPrevious).Row
                        .Sheets(.Sheets.Count).Range("A1:Z" & DL).Copy .Sheets(1).Range("A" & DL_Sh1)
                        Application.DisplayAlerts = False
                        .Sheets(.Sheets.Count).Delete
                        Application.DisplayAlerts = True
                    End With
                    
                    'fermeture fichiers txt
                    NomFich(i) = Split(NomFich(i), "\")(UBound(Split(NomFich(i), "\")))
                    With Workbooks(NomFich(i))
                        .Close False
                    End With
                    DoEvents
                End If
            'suivant
            Next i
        Else
            MsgBox "Aucun fichier sélectionné."
        End If
        'FIN
        Sheets(1).Select
    End Sub

1
van_van Messages postés 60 Date d'inscription mercredi 6 avril 2016 Statut Membre Dernière intervention 9 janvier 2017
7 avril 2016 à 11:57
C'est canon ! Merci beaucoup
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744 > van_van Messages postés 60 Date d'inscription mercredi 6 avril 2016 Statut Membre Dernière intervention 9 janvier 2017
7 avril 2016 à 12:01
De rien.
Si c'est résolu, on peut passer à ton autre souci.
0
van_van Messages postés 60 Date d'inscription mercredi 6 avril 2016 Statut Membre Dernière intervention 9 janvier 2017
7 avril 2016 à 12:04
le GROS du GROS est d'actualiser ca tous les moi avec des fichiers differents et la je pense que ce n'est psa l'affaire de vba mais de buisness object ou de access
0
van_van Messages postés 60 Date d'inscription mercredi 6 avril 2016 Statut Membre Dernière intervention 9 janvier 2017
7 avril 2016 à 12:04
mois
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744 > van_van Messages postés 60 Date d'inscription mercredi 6 avril 2016 Statut Membre Dernière intervention 9 janvier 2017
7 avril 2016 à 12:05
Oui, ou alors le souci du service informatique de ta boîte.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
7 avril 2016 à 08:02
Bonjour,

1- comment sont construits les fichiers txt? Plusieurs colonnes? Structurés? etc... Décris les au mieux.

2- Montre nous le bout de code que tu as tenté qui ne fonctionne pas.

0
van_van Messages postés 60 Date d'inscription mercredi 6 avril 2016 Statut Membre Dernière intervention 9 janvier 2017
7 avril 2016 à 09:01
Merci de répondre.

Les fichiers txt sont destructurés a la base sont des fichiers pdf mais qu'un entreprise envois également en txt, mais c'est pas beau a voir. Malheuresement c'est des données confidentielles je ne peux pas faire voir.

Désolé c'est pas chez moi la suis à l'entreprise je vais essayé avec BO
0
ryko1820 Messages postés 1645 Date d'inscription dimanche 28 avril 2013 Statut Membre Dernière intervention 15 août 2021 276 > van_van Messages postés 60 Date d'inscription mercredi 6 avril 2016 Statut Membre Dernière intervention 9 janvier 2017
7 avril 2016 à 09:16
Hello,

peut être qu'il serait préférable dans ce cas de demander à l'entreprise qui fournit les données si elle n'a pas un format plus adapté aux traitements ?
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
7 avril 2016 à 09:28
Bonjour,

Essayez cette procédure sur 1 fichier txt et dites moi le résultat :
1- ouvrir un nouveau classeur Excel
2- Alt+F11
3- Insertion/Module
4- copier/coller ce code dans un module
Sub Copier_1_Fichier_Txt()
Dim NomFich, Wbk As Workbook
    Set Wbk = ThisWorkbook
    NomFich = Application.GetOpenFilename _
    (FileFilter:="Fichier texte(*.txt),*.txt", Title:="Sélectionner le fichier")
     If NomFich = False Then
        MsgBox "Aucun fichier sélectionné."
        Exit Sub
    End If
    Workbooks.OpenText Filename:=NomFich, Origin:=xlWindows, _
        StartRow:=1, DataType:=xlDelimited, Semicolon:=True, DecimalSeparator:="."
    DoEvents
    With Wbk
        Sheets(1).Copy After:=.Sheets(.Sheets.Count)
        DoEvents
    End With
    NomFich = Split(NomFich, "\")(UBound(Split(NomFich, "\")))
    With Workbooks(NomFich)
        .Close False
    End With
    DoEvents
End Sub

5- fermer la fenêtre VBA
6- Taper Alt + F8
7- Choisir : Copier_1_Fichier_Txt
8- Cliquer sur Exécuter
9- sélectionner 1 fichier txt
10- revenir me dire ce qu'il en est.
0
van_van Messages postés 60 Date d'inscription mercredi 6 avril 2016 Statut Membre Dernière intervention 9 janvier 2017
7 avril 2016 à 10:05
Je fais ca tout de suite merci d'avance
0
van_van Messages postés 60 Date d'inscription mercredi 6 avril 2016 Statut Membre Dernière intervention 9 janvier 2017
7 avril 2016 à 10:10
La macro permet d'importer plusieur fichiers txt sur plusieurs onglets differens de excel, cependant ce que j'arrive pas c'est les mettre tous dans un dans un seul onglet
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744 > van_van Messages postés 60 Date d'inscription mercredi 6 avril 2016 Statut Membre Dernière intervention 9 janvier 2017
7 avril 2016 à 10:14
Là n'est pas (encore) la question.

Comment se déroule l'import?
Le résultat, dans la feuille, est-il exploitable?
Toutes les données "arrivent" bien dans la feuille Excel?
0
van_van Messages postés 60 Date d'inscription mercredi 6 avril 2016 Statut Membre Dernière intervention 9 janvier 2017
7 avril 2016 à 10:24
Oui ils arrivent bien, pardon mais c'est pas encore tres déstructurés
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744 > van_van Messages postés 60 Date d'inscription mercredi 6 avril 2016 Statut Membre Dernière intervention 9 janvier 2017
7 avril 2016 à 10:41
mais c'est pas encore tres déstructurés
Faut m'expliquer clairement ce qu'il convient de faire pour les "structurer"...

Sinon, en attendant, essaye ceci avec 3-4 fichiers txt :
Sub Copier_Plusieurs_Fichiers_Txt()
Dim NomFich, Wbk As Workbook, i As Integer, mavar As Variant, DL_Sh1 As Long, DL As Long

    Set Wbk = ThisWorkbook
    NomFich = Application.GetOpenFilename(FileFilter:="Fichier texte(*.txt),*.txt", Title:="Sélectionner les fichiers", ButtonText:=mavar, MultiSelect:=True)
    If IsArray(NomFich) Then
        For i = LBound(NomFich, 1) To UBound(NomFich, 1)
            If NomFich(i) <> "Faux" Then
            Workbooks.OpenText Filename:=NomFich(i), Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, Semicolon:=True, DecimalSeparator:="."
            DoEvents
            With Wbk
                Sheets(1).Copy After:=.Sheets(.Sheets.Count)
                DoEvents
                If WorksheetFunction.CountA(.Sheets(1).Columns(1)) = 0 Then
                    DL_Sh1 = 1
                Else
                    DL_Sh1 = .Sheets(1).Columns(1).Find("*", , , , , xlPrevious).Row
                End If
                DL = .Sheets(.Sheets.Count).Columns(1).Find("*", , , , , xlPrevious).Row
                .Sheets(.Sheets.Count).Range("A1:Z" & DL).Copy .Sheets(1).Range("A" & DL_Sh1)
                Application.DisplayAlerts = False
                .Sheets(.Sheets.Count).Delete
                Application.DisplayAlerts = True
            End With
            NomFich(i) = Split(NomFich(i), "\")(UBound(Split(NomFich(i), "\")))
            With Workbooks(NomFich(i))
                .Close False
            End With
            DoEvents
            End If
        Next i
    Else
        MsgBox "Aucun fichier sélectionné."
    End If
End Sub
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
7 avril 2016 à 11:35
Je te prépare une nouvelle mouture avec deux trois améliorations, dont la sélection de la feuil1 en fin de macro...
Dans 5 minutes.

--
0
van_van Messages postés 60 Date d'inscription mercredi 6 avril 2016 Statut Membre Dernière intervention 9 janvier 2017
7 avril 2016 à 11:43
d'accord merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
7 avril 2016 à 14:27
Tout d'abord, voici un nouveau fichier qui te permet de ne pas recopier systématiquement les entêtes :
https://www.cjoint.com/c/FDhmBtJpNwE

Ensuite, que souhaites tu faire?
Ne garder que les lignes dont la colonne H se termine par 333?
Autre chose?
N'hésite pas...
0
van_van Messages postés 60 Date d'inscription mercredi 6 avril 2016 Statut Membre Dernière intervention 9 janvier 2017
7 avril 2016 à 14:28
non je veux tout garder pour l'instant
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744 > van_van Messages postés 60 Date d'inscription mercredi 6 avril 2016 Statut Membre Dernière intervention 9 janvier 2017
7 avril 2016 à 14:37
Ben explique moi alors ton histoire de requête, de chaussures rouges etc...
0
van_van Messages postés 60 Date d'inscription mercredi 6 avril 2016 Statut Membre Dernière intervention 9 janvier 2017
7 avril 2016 à 14:40
enfaite la l'objectif et de rendre la base tres propre via macro
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744 > van_van Messages postés 60 Date d'inscription mercredi 6 avril 2016 Statut Membre Dernière intervention 9 janvier 2017
7 avril 2016 à 14:41
C'est ce que fait mon dernier fichier non?
0
van_van Messages postés 60 Date d'inscription mercredi 6 avril 2016 Statut Membre Dernière intervention 9 janvier 2017
7 avril 2016 à 15:04
ecoute j'attend mon superieur il arrive dans une semaine, pour voir un truc et je te recontacte d'accord ?
0