VBA - Convertir plusieurs fichiers .txt en feuilles Excel

Bonjour,

Je débute sur VBA, j'essaye de développer un programme VBA (à l'aide d'une IA) qui convertit tout les fichiers .txt d'un dossier en nouvelle feuille Excel et ensuite effectuer des calculs dessus.

J'ai décider de procéder par étape et de d'abord essayer d'importer tout les fichiers .txt mais je rencontre un soucis : les retour à la ligne de mes fichiers .txt ne sont pas reconnus et que donc toutes les valeurs sont sur la même ligne et les dernières valeurs de ma ligne sont dans la même cellule que mes premières données de la ligne suivante. (comme sur la photo)

image

Voici le code :

Sub ImportTextFiles()
Dim myPath As String
Dim myFile As String
Dim myExtension As String
Dim FldrPicker As FileDialog
Dim textData As String
Dim textLine As Variant
Dim textArray() As String
Dim rowCounter As Long
Dim ws As Worksheet

' Demander à l'utilisateur de sélectionner un dossier
Set FldrPicker = Application.FileDialog(msoFileDialogFolderPicker)
With FldrPicker
.Title = "Sélectionnez le dossier contenant les fichiers texte"
.AllowMultiSelect = False
If .Show <> -1 Then Exit Sub ' Si l'utilisateur annule, sortir du programme
myPath = .SelectedItems(1) & "\"
End With

' Configurer les variables de feuille de calcul
rowCounter = 1

' Rechercher tous les fichiers texte dans le dossier sélectionné
myExtension = "*.txt"
myFile = Dir(myPath & myExtension)
Do While myFile <> ""
' Créer une nouvelle feuille Excel pour le fichier texte
Set ws = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
ws.Name = myFile

' Ouvrir le fichier texte et lire toutes les lignes
Open myPath & myFile For Input As #1
Do Until EOF(1)
Line Input #1, textLine
textData = textData & textLine & vbCrLf ' ajouter un saut de ligne
Loop
Close #1

' Ajouter les données du fichier texte à la nouvelle feuille Excel
textArray = Split(textData, vbTab) ' séparer le texte en tableau C'est ici que ca coince d'après moi
For i = 0 To UBound(textArray) ' parcourir le tableau
Dim splitLine() As String ' tableau pour stocker les données de chaque ligne
splitLine = Split(textArray(i), " ") ' séparer la ligne en fonction des 7 espaces
For j = 0 To UBound(splitLine) ' parcourir les données de chaque ligne
ws.Cells(i + 1, j + 1).Value = splitLine(j) ' ajouter chaque donnée dans une nouvelle cellule
Next j
Next i


' Réinitialiser les variables pour le prochain fichier
rowCounter = 1
textData = ""
myFile = Dir
Loop

' Afficher un message lorsque l'importation est terminée
MsgBox "L'importation des fichiers texte est terminée!"
End Sub

J'ai essayer de nombreuse méthode comme remplacer le 'vbTab' par 'vbCrLf' ou Chr (13) mais ca ne fonctionne pas..

Si ma demande n'est pas clair je peux apporter des précisions, désolé pour le code ainsi je ne voulais pas transmettre de .xlsm par mesure de sécurité mais je peux le transmettre au besoin. En PJ il y a les 2 fichiers .txt de test que j'utilise comme exemple dans mon programme.

Merci d'avance pour votre aide

39exemple1.zip (6.47 Ko)
13exemple2.zip (12.96 Ko)

Bonjour à tous !

Et....

Puisque vous semblez débutant dans la maîtrise de VBA, je vous engage à étudier la piste Power Query qui permet d'intégrer un fichier txt en quelques clics.

Par ailleurs, cet outil facilite la transformation et l'enrichissement des données. A consommer sans modération !

Bonjour,

Aprés le close #1 , rajoute ca :

textData = Replace(textData, (Chr(32) & Chr(32) & Chr(32) & Chr(32) & Chr(32) & Chr(32) & Chr(32) & Chr(32) & Chr(32) & Chr(32) & Chr(32)), Chr(32))

et remplace

textArray = Split(textData, vbtab) 
par
 textArray = Split(textData, Chr(32))

Cdlt

Merci pour vos retours,

J'ai essayé les corrections de Fg2b mais j'ai toujours le même soucis : les dernières valeurs des lignes sont dans la même cellule que ma date (première données des lignes suivante)

image

Je vais en parallèle me renseigner sur Power Query mais vu que ce projet et destiné a être partagé la solution que la macro soit intégré au classeur excel est très pratique

Merci !! Grace a un code VBA qui automatise des requêtes Power Query j'ai pu réussir :D Merci pour votre aide !

Bonjour à tous de nouveau !

Je vais en parallèle me renseigner sur Power Query mais vu que ce projet et destiné a être partagé la solution que la macro soit intégré au classeur excel est très pratique

Les requêtes Power Query sont intégrées dans le classeur/projet.....

Bonjour,

Une solution sans Power Query

74classeur2.xlsm (18.89 Ko)

Cdlt

Rechercher des sujets similaires à "vba convertir fichiers txt feuilles"