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)
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