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 Sub

Je 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

Aucun rapport

Rechercher des sujets similaires à "line input"