OVH Cloud OVH Cloud

Lecture d'un fichier texte

14 réponses
Avatar
Alain Ménard
Bonjour,

j'utilise la méthode Scripting.FileSystemObject pour écrire ou lire dans un
fichier texte.

Les données de mon fichier texte se présentent de la manière suivante :

Açores
- Poste -

24/01/1996

12/02/1997

Comme vous le voyez, certaines informations peuvent ne pas exister donc la
ligne est vide.

Si j'écris pour la lecture :

!DateEmission = a.ReadLine

Je peux avoir une erreur si la ligne est vide

Donc j'écris :

If Len(a.ReadLine) > 0 Then !DateEmission = a.ReadLine

et là bizarrement ça plante si la donnée existe.

Une idée ?

Alain Ménard

4 réponses

1 2
Avatar
Zoury
Salut !

Pourrais tu me dire par quoi remplacer le fso pour écrire les lignes dans


le
txt ?



En mode texte :
'***
Dim hFile As Long

hFile = FreeFile
Open "c:test.txt" For Output As #hFile

Print #hFile, String$(35, "x")
Print #hFile, String$(35, "a")
Print #hFile, String$(35, "x")

Close #hFile
'***

En mode binaire :
'***
Dim hFile As Long

hFile = FreeFile
Open "c:test.txt" For Binary As #hFile

Put #hFile, , String$(35, "x") & vbNewLine
Put #hFile, , String$(35, "a") & vbNewLine
Put #hFile, , String$(35, "x") & vbNewLine

Close #hFile
'***

Avec CFile (binaire) :
'***
Dim file As CFile

Set file = New CFile
file.AppendLine (String$(35, "x"))
file.AppendLine (String$(35, "a"))
file.AppendLine (String$(35, "x"))

Call file.SaveFileAs("c:test.txt")
'***

Le mode binaire est plus rapide que le mode texte.

Voici les comparaisons de vitesse pour la lecture entière d'un fichier selon
différente méthode (à titre informatif) :
http://groups.google.com/groups?hl=fr&lr=&thLef4dadee0170dc&rnum=2


--
Cordialement
Yanick
MVP pour Visual Basic
Avatar
Zoury
isssh ..
file.AppendLine (String$(35, "x"))
file.AppendLine (String$(35, "a"))
file.AppendLine (String$(35, "x"))



devrait être :
'***
Call file.AppendLine(String$(35, "x"))
Call file.AppendLine(String$(35, "a"))
Call file.AppendLine(String$(35, "x"))
'***

--
Cordialement
Yanick
MVP pour Visual Basic
Avatar
Alain Ménard
Merci infiniment Zoury,

Et puisque le but est d'éviter fso, y a t'il un moyen de copier un fichier à
un autre emplacement avec cfile ou autre ?


--
Cordialement

Alain Ménard

"Zoury" <yanick_lefebvre at hotmail dot com> a écrit dans le message de
news:
isssh ..
> file.AppendLine (String$(35, "x"))
> file.AppendLine (String$(35, "a"))
> file.AppendLine (String$(35, "x"))

devrait être :
'***
Call file.AppendLine(String$(35, "x"))
Call file.AppendLine(String$(35, "a"))
Call file.AppendLine(String$(35, "x"))
'***

--
Cordialement
Yanick
MVP pour Visual Basic




Avatar
Zoury
Yep !
Emploi la méthode FileCopy() :
'***
Option Explicit

Private Sub Form_Load()
' créer une copie du fichier
Call FileCopy("c:test.txt", "c:temptest.txt")
' détruit l'original
Call Kill("c:test.txt")
End Sub
'***

--
Cordialement
Yanick
MVP pour Visual Basic
"Alain Ménard" a écrit dans le message de
news:42a57831$0$25218$
Merci infiniment Zoury,

Et puisque le but est d'éviter fso, y a t'il un moyen de copier un fichier


à
un autre emplacement avec cfile ou autre ?


--
Cordialement

Alain Ménard

"Zoury" <yanick_lefebvre at hotmail dot com> a écrit dans le message de
news:
> isssh ..
> > file.AppendLine (String$(35, "x"))
> > file.AppendLine (String$(35, "a"))
> > file.AppendLine (String$(35, "x"))
>
> devrait être :
> '***
> Call file.AppendLine(String$(35, "x"))
> Call file.AppendLine(String$(35, "a"))
> Call file.AppendLine(String$(35, "x"))
> '***
>
> --
> Cordialement
> Yanick
> MVP pour Visual Basic
>
>




1 2