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 plusieurs photos en une seule ✓ - Forum Graphisme
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.