Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Consolidation fichier txt.

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Soleil11

XLDnaute Occasionnel
Bonjour,

Cela fait plusieurs jour que j'embête tout le monde avec cette macro, voici ce que je voudrais modifier :

Cette macro marche très lorsqu'il s'agit consolider de fichier xls, mais lorsque j'essaie de consolider des fichier txt qui se trouve dans le même répertoire ci-dessous (voir macro) et qui sont pas delimité en "tab" mais en "|" cela ne fonctionne pas. Comment puis-je rendre les fichier txt "clean" afin de les importer tous dans ma feuille1 de mon fichier "Consolider fichiers.xls".

En annexe fichier txt exemple.


Sub Consolidation_old_V_4()
Dim Temp As String
Dim Ligne As Long, Ligne2 As Long
Temp = Dir("H:\David Jones\FS10n\4.7" & "\*.txt")
Application.DisplayAlerts = False
Do While Temp <> ""
If Temp <> "Consolider fichiers.xls" Then
Workbooks.Open "H:\David Jones\FS10n\4.7" & "\" & Temp
Ligne2 = Workbooks(Temp).Sheets(1).Range("A1").CurrentRegion.Rows.Count
Workbooks(Temp).Sheets(1).Range("A1").CurrentRegion.Copy
Workbooks("Consolider fichiers.xls").Sheets(1).Activate
Ligne = Sheets(1).Range("A65536").End(xlUp).Row
Range("B" & CStr(Ligne)).Select
ActiveSheet.Paste
Range("A" & CStr(Ligne), "A" & Ligne + Ligne2 - 1).Value = Temp
Workbooks(Temp).Close
End If
Temp = Dir
Loop
Range("A1").Select
Application.DisplayAlerts = True
End Sub

Merci d'avance.

Soleil11😕
 

Pièces jointes

Re : Consolidation fichier txt.

Re


Je veux dire que le dir ne renvoie par forcément le noms des fichiers dans le même ordre que le copy le fait.

D'où mes doutes

Ensuite comme je le disais

Dans Excel , chaque ligne qui commence par : 

indique le début d'un fichier txt
 
Re : Consolidation fichier txt.

Salut le forum

Une simple importation de fichier texte
Code:
Sub Read_Text_File()
Dim Tablo() As String
Dim TextLine As String
Dim Ligne As Integer
Dim I As Byte

Ligne = 1
Cells.Delete
'Lecture des données contenues dans un fichier texte
    Open "D:\Excel\ABH0000017364.TXT" For Input As #1
    Do While Not EOF(1) ' Loop until end of file.
        Line Input #1, TextLine
        If Left(TextLine, 1) = "|" Then
        Tablo = Split(TextLine, "|")
        For I = 1 To UBound(Tablo)
        Cells(Ligne, I) = Trim(Tablo(I))
        Next I
        Else
        Cells(Ligne, 1) = Trim(TextLine)
        End If
        Ligne = Ligne + 1
    Loop
    Close #1
End Sub
Mytå
 
Re : Consolidation fichier txt.


Bonjour,

J'ai testé votre macro et elle pourrait peut-être me servir, est-il possible d'enlever les traits horizontaux ----------- aussi ?

Mon idée serait la suivante et celle de votre confrère que je remercie par ailleur pour sa patience. En 1er ce serait de lancer en Dos le fichier.bat ci-dessous avec le résulat serait la compilaton de tous mes fichiers.txt et en 2ème faire tourner votre marcro ci-dessus, il faudrait juste rajoutés en colomne A un à côte de  qui délimite chaque fichier importé et ajouté le nom du fichiers.text importé auparavant avec le fichier bat ?

@dir /B *.txt >nomsfic.000
@ren *.000 001.txt
@copy /A *.txt XLScompil.xls
@start XLScompil.xls
@del 001.txt

Je ne sais pas si ce que je veux dire est compréhensible mais peut-être pas possible à réaliser.

Merci d'avance.

Soleil11🙁
 
Re : Consolidation fichier txt.


*****************

REBONJOUR le forum,

Je crois que les explication ci-dessous sont trop compliquées, ci-dessous d'autre explications.

Est-il est-il possible de modifier la macro ci-dessous en step 3, j'ai mis en annexe le premier fichier obtenu en "état actuel.xls" après avoir lancé la macro et le résultat que j'aimerais en obtenir en "résultat souhaité.xls" en fichier attaché.

En sachant que "" délimite les fichiers importé par le fichier bat lancer en step 1.

Ci-dessous le détail de ma compil.🙂

1. j'ai lancer le dossier.bat

2. Résultat obtenu : fichier XLScompil.xls obtenu avec nom des fichiers. txt importé dans cellule A1 et A2 voir fichier "état actuel.xls" dans les fichiers attachés.

3. Je lance la macro suivante:

Sub Read_Text_File()
Dim Tablo() As String
Dim TextLine As String
Dim Ligne As Integer
Dim I As Byte

Ligne = 1
Cells.Delete
'Lecture des données contenues dans un fichier texte
Open "H:\David Jones\FS10n\4.7\XLScompil.TXT" For Input As #1
Do While Not EOF(1) ' Loop until end of file.
Line Input #1, TextLine
If Left(TextLine, 1) = "|" Then
Tablo = Split(TextLine, "|")
For I = 1 To UBound(Tablo)
Cells(Ligne, I) = Trim(Tablo(I))
Next I
Else
Cells(Ligne, 1) = Trim(TextLine)
End If
Ligne = Ligne + 1
Loop
Close #1
End Sub


Merci d'avance pour votre aide.

Soleil11🙂
 

Pièces jointes

Re : Consolidation fichier txt.

Bonsoir


Une autre approche ( à approfondir, car ceci n'est pas un code pas très beau )

avec Scripting.FileSystemObject

Code:
Sub test()
Dim FSO As Object
Dim fic, fStr, i As Long
Set FSO = CreateObject("Scripting.FileSystemObject")
Set fic = FSO.GetFile("c:\temp\ABH0000017364.TXT")
Set fStr = fic.OpenAsTextStream(1, 0)
i = 1
Application.ScreenUpdating = False
With fStr
    While Not .AtEndOfStream
    Cells(i, 1) = .Readline
    i = i + 1
Wend
End With
Range("A1:A" & [A65536].End(xlUp).Row).SpecialCells(xlCellTypeBlanks).Value = "----"
Range("A1").EntireRow.Insert
Range("A1") = "XXXXX"
Range("A1").AutoFilter Field:=1, Criteria1:="=*---*", Operator:=xlAnd
Range("A1").CurrentRegion.EntireRow.Delete
ActiveSheet.AutoFilterMode = False
   Range("A1").CurrentRegion.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
       TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
       Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
       :="|", FieldInfo:=Array(1, 1)
Application.ScreenUpdating = True
End Sub
 
Re : Consolidation fichier txt.


Bonjour,

Merci pour votre réponse, le code est presque parfait il enlève bien les traits horizontaux mais il manque le noms des fichiers.txt en colomne A exemple ci-dessous. Le résultat devrait correspondre au fichier "résultat souhaité.xls" que j'ai attaché plus haut. Par contre il faudrait utiliser comme fichier "test" de départ le fichier que je viens d'attacher "XLScompil.xls" et non le fichier "ABH0000017364.txt". En sachant que "" délimitent le nbre de fichiers importés.

ABH0000017364_1.TXT Nestle Waters NA-Inc
ABH0000017364_1.TXT 1010A 1001000
ABH0000017364_1.TXT 1010A 1002100
ABH0000017364_1.TXT 1010B 1002000
ABH0000017364_1.TXT 1010B 1002050
ABH0000017364_1.TXT 1010B 1002100
ABH0000017364_1.TXT 1010B 1002150
ABH0000017364_1.TXT 1010B 1003100
ABH0000017364_1.TXT 1010C 1003100
ABH0000017364_1.TXT 1010C 1003050
ABH0000017364_1.TXT 1010C 1003100
ABH0000017364_2.TXT Nestle Waters NA-Inc
ABH0000017364_2.TXT 1020E 1012260
ABH0000017364_2.TXT 1020E 1012350
ABH0000017364_2.TXT 1020F 1012150
ABH0000017364_2.TXT 1020F 1012350
ABH0000017364_2.TXT 1020G 1012200
ABH0000017364_2.TXT 1020G 1012350
ABH0000017364_2.TXT 1020H 1012350
ABH0000017364_2.TXT 1020H 1012450

J'espère que quelqu'un comprend ce que je veux faire autrement je vais essayé de me pencher sur un autre moyen de consolider mes données.

Merci d'avance.

Soleil11😀
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
924
Réponses
5
Affichages
915
Réponses
4
Affichages
756
  • Question Question
Microsoft 365 Code VBA
Réponses
10
Affichages
1 K
  • Question Question
Microsoft 365 Question code VBA
Réponses
2
Affichages
615
Réponses
15
Affichages
989
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…