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:
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: