Fusionner plusieurs fichiers txt en un seul onglet xsl.
van_van
Messages postés
63
Statut
Membre
-
pijaku Messages postés 13513 Statut Modérateur -
pijaku Messages postés 13513 Statut Modérateur -
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
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
A voir également:
- Fusionner txt
- Comment fusionner des pdf sans logiciel - Guide
- Fusionner mp3 - Télécharger - Audio & Musique
- Fusionner deux cellules excel - Guide
- Fusionner deux tableaux excel - Guide
- Fusionner calendrier outlook et gmail - Guide
5 réponses
Voilà.
A copier dans un module :
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
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.
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.
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
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
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
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.
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.
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 :
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
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.
--
Dans 5 minutes.
--
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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...
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...
Si c'est résolu, on peut passer à ton autre souci.