Manipuler des fichiers Texte en VBA

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

max.lander

XLDnaute Occasionnel
Bonjour à tous,

Je me retrouve face à une petite difficulté dans la lecture des fichiers .txt en VBA.
Je souhaite lire un fichier ligne à ligne tester la valeur des caractères 12 et 13 (pour chaque ligne) si égale à 64, je souhaite afficher la ligne complète + un commentaire sinon la valeur de ces deux caractères.
Mon petit programme fonctionne mais n'affiche jamais la ligne complète, il manque toujours les premiers caractères.

Ce problème est sûrement dû au décalage de la position courante induit par la lecture des caractères 12 et 13.

Avez-vous une idée pour réinitialiser cette valeur avant chaque lecture de ligne ?

Pour vous permettre d'y voir plus clair vous trouverez le programme en PJ et le code ci-dessous.

Merci à vous,

Mon code:
Code:
Sub LECT_TEST()

' Il est nécessaire d'activer la librairie Microsoft Scripting Runtime

Dim Valcpte As Integer
Dim oFSO As Scripting.FileSystemObject
Dim oFl As Scripting.File
Dim oTxt As Scripting.TextStream
'Instanciation du FSO
Set oFSO = New Scripting.FileSystemObject
Set oFl = oFSO.GetFile("C:\Documents and Settings\ZEGHMATI\Bureau\PNM DEV\PAIE 1.txt")
Set oTxt = oFl.OpenAsTextStream(ForReading)
With oTxt

   
     

       For i = 1 To 5 ' pour chaque ligne de 1 à 5
   lignecomplete = .ReadLine

'décalage de la postion courante
.Skip (11) 
      'stockage des caractère 12 et 13
     Valcpte = .Read(2)

   If Valcpte = 64 Then MsgBox (lignecomplete & "       COMMENTAIRE") Else MsgBox (Valcpte)
       

Next i
End With
End Sub
 

Pièces jointes

Dernière édition:
Re : Manipuler des fichiers Texte en VBA

Bonjour,

Puisque tu lis la ligne dans une variable (Lignecomplète) sers toi de celle-ci:

Code:
        For i = 1 To 5    ' pour chaque ligne de 1 à 5
            lignecomplete = .ReadLine
            If Mid(lignecomplete, 12, 2) = "64" Then
                MsgBox (lignecomplete & "       COMMENTAIRE")
            End If
        Next i

A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour