Manipuler des fichiers Texte en VBA

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

  • Lect.xlsm
    18.9 KB · Affichages: 35
  • test.txt
    2.3 KB · Affichages: 42
  • test.txt
    2.3 KB · Affichages: 146
  • test.txt
    2.3 KB · Affichages: 45
Dernière édition:
G

Guest

Guest
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+
 

Discussions similaires

Réponses
19
Affichages
2 K

Statistiques des forums

Discussions
312 429
Messages
2 088 351
Membres
103 824
dernier inscrit
frederic.marien@proximus.