Line Input
Bonjour à toutes et à tous,
Je rencontre un problème pour lire automatiquement des résultats écrits dans des fichiers textes.
J'ai de très nombreux fichiers textes que j'ouvre les uns après les autres. Les données sont séparées par des tabulations, et les lignes finissent toutes par \r\n.
Mon problème est le suivant :
Je ne récupère à chaque fois que la première ligne de chaque fichier. Il semblerait que la boucle "Do Until EOF(myFile) ne fonctionne pas correctement, et je n'arrive pas à trouver pourquoi. C'est comme si "Line Input" ne passait pas automatqiuement à la ligne suivante à chaque fois
Le code est le suivant :
Sub telechargement()
'On crée un nouvel onglet pour chaque fichier résultat.
'On récupère les résultats et on trace les graphiques
Dim fileName As Variant
Dim i As Integer
Dim ligne, colonne As Integer
Dim strfile As String
Dim directory As String
Dim myFile As Integer
Dim nb_part As Integer
Dim arrstring() As String
Dim lecture As Integer
Dim getlenth As Integer
directory = "D:\Calculs_Yaodong\I-PR-PSO\Analyse de sensibilité\meta opti\Résultats\"
strfile = Dir(directory & "resultat_sensitivity_V_*")
Do While strfile <> ""
feuille = Left(strfile, Len(strfile) - 4)
Sheets.Add
ActiveSheet.Name = feuille
fileName = directory & strfile
myFile = FreeFile()
Open fileName For Input As myFile
ligne = 1
colonne = 1
lecture = 0
Do Until EOF(myFile)
Line Input #myFile, text_line
arrstring = Split(text_line, vbTab)
getlength = UBound(arrstring) - LBound(arrstring) + 1
While (lecture <= getlength - 1)
Cells(ligne, colonne) = arrstring(lecture)
colonne = colonne + 1
lecture = lecture + 1
Wend
colonne = 1
ligne = ligne + 1
Loop
Close #myFile
strfile = Dir
Loop
End SubJe vous mets un exemple de ces fichiers texte en PJ.
Merci beaucoup pour votre aide et à bientôt
Nono
Bonjour,
il n'y a pas que la première ligne qui est "récupérée"; la première ligne est l'ensemble du fichier !
L'explication est accessible dans l'aide Excel :
L'instruction Line Input # lit un à un les caractères d'un fichier jusqu'au premier retour chariot (Chr(13)) ou retour chariot – saut de ligne (Chr(13) + Chr(10)) rencontré
Il n'y aurait donc qu'un seul retour chariot en fin de fichier.
Il me semble que avec Word on peut forcer le retour chariot pour chaque ligne.
A+
Bonsoir,
Merci bcp pour votre réponse.
En fait, j'avais tout simplement oublié de réinitialiser la valeur de la variable "lecture" à chaque passage dans la boucle --'
La. Honte.
Bonne soirée et à bientôt !
NoNo