Problème de lecture ligne par ligne d'un fichier .txt

Bonjour,

Je souhaite lire ligne par ligne un fichier texte MonFichierLog.txt (qui contient des logs d'événements d'un système) : voici le bout de code que j'utilise pour faire ça.

IndexFichier = FreeFile()
Open MyFile For Input As #IndexFichier 
Do Until EOF(IndexFichier)
               Line Input #IndexFichier, ContenuLigne

        Loop
        Close #IndexFichier

Close #IndexFichier

Mon problème est le suivant: le code ne lit que la première ligne puis sort de la boucle.

Voici ce que j'ai essayé et ce que j'observe :

  • je crée un autre fichier FichierDeTest.txt dans lequel je copie/colle le contenu exact de mon fichier d'origine MonFichierLog.txt --> Là ca marche: le code lit bien ligne par ligne jusqu'à la fin du fichier
  • Je renomme MonFichierLog.txt en Blabla.txt : meme problème, le code ne lis que la preière ligne et sort de la boucle
  • J'essaye avec un autre fichier MonFichierLog2.txt : meme problème, le code ne lis que la preière ligne et sort de la boucle

Autre donnée: J'ai recu ces fichiers Logs zippés et je les ai dézippé avec 7zip.

Avez vous une idée?

Merci pour votre aide.

Bonjour,

il faudrait voir un de tes fichier txt pour répondre exactement.

Là on peut juste supposer qu'il n'a pas CR ou CRLF pour chaque ligne.

C'est peut-être un fichier à accès aléatoire (champs de longueur fixe).

(zip n'a rien à voir)

eric

Bonjour Eric,

Merci pour ce retour.

La fonction EOF vient chercher l'absence de CR ou CRLF pour déterminer qu'on est à la fin du fichier c'est bien ça?

Alors pourquoi avec copier/coller du meme contenu dans un autre fichier ca marche? Le copier/coller introduit des CRLF?

Voyez-vous une solution de contournement à envisager ici pour pouvoir parcourir le fichier ligne par ligne?

Bien cordialement,

J'ai cassé ma boule de cristal, désolé

il faudrait voir un de tes fichier txt pour répondre exactement.

EOF c'est le code End Of File, fin du fichier et n'a rien à voir avec les lignes

J'ai trouvé: les fichier log que j'ai sont au format UNIX.

Pour être traité correctement avec VBA, il faut le convertir au format DOS.

Pour cela, j'ai trouvé un bout de code sur un autre forum, (à adapter au besoin)

Private Sub Command1_Click() 
Dim hFich As Integer 
Dim strTemp As String 
Dim lLongFich As Long 

hFich = FreeFile 
Open "Fichier.Txt" For Binary As #hFich 
lLongFich = LOF(hFich) 
strTemp = String(lLongFich, Chr(0)) 
Get #hFich, 1, strTemp 
strTemp = Replace(strTemp, vbLf, vbCr) 
Put #hFich, 1, strTemp 
Close #hFich 

End Sub 

(effectivement une histoire de Cr / CrLf)

Maintenant, la lecture ligne par ligne se fait bien jusqu'à la fin du fichier.

Merci.

Rechercher des sujets similaires à "probleme lecture ligne fichier txt"