OVH Cloud OVH Cloud

accéder à un fichier txt read+write

4 réponses
Avatar
DAniel
Bonjour
Je n'arrive pas à lire un fichier texte existant, faire une boucle sur x
lignes puis modifier ligne
J'ai essayé plusieurs mode d'accès mais 1 blocage ou 1autre sans réel
progrès
QQ1 peut-il me laisser un exemple de code ?
Merci de votre aide
DAniel

4 réponses

Avatar
Gafish
Bonjour,

Regarde sur cette page qui concerne FileSystemObject :
http://www.self-access.com/access/scripting/index.php
C'est un tutorial assez complet, ca correspond à ce que tu souhaites faire.
il faut réferencer Scripting Runtime

Arnaud

"DAniel" a écrit dans le message de news:

Bonjour
Je n'arrive pas à lire un fichier texte existant, faire une boucle sur x
lignes puis modifier ligne
J'ai essayé plusieurs mode d'accès mais 1 blocage ou 1autre sans réel
progrès
QQ1 peut-il me laisser un exemple de code ?
Merci de votre aide
DAniel



Avatar
Eric
Bonjour Daniel,

Ton fichier étant un fichier à accès séquentiel, tu ne peux pas lire et
écrire. Tu dois lire le 1er fichier, écrire dans un 2eme les infos du
1er que tu veux conserver, puis écrire la ligne modifiée, enfin écrire
les autres lignes du 1er fichier. En fait ca revient à faire un ajout en
milieu de fichier mais avec suppression de la ligne à modifier.

Si tu n'avais voulu que faire des ajouts en milieu ou en fin de fichier
je t'aurais proposé la méthode Append mais là ce n'est pas le cas
puisqu'il faut supprimer une ligne.

Ainsi en supposant que tu veuilles conserver les 5 premières lignes du
fichier, modifier la 6eme puis recopier le reste, voila un bout de code
qui le fait :

Sub Daniel()
'Déclaration des variables
Dim numero As Integer, contenu As String
Dim varContenu, chemin As String
chemin = CurrentProject.Path
' on ouvre le fichier de départ en lecture
numero = FreeFile
Open chemin & "Daniel.txt" For Input As numero
' on récupère le contenu
contenu = Input(LOF(numero), vbNull)
Close numero ' bien veiler à fermer le fichier à chaque fois
' on splite le contenu avec des Retour-Chariot
' pour disposer du nombres de lignes
' je suppose que le séparateur des lignes est un RC
varContenu = Split(contenu, vbCrLf)
numero = FreeFile
' On ouvre un 2e fichier en écriture
Open chemin & "Daniel2.txt" For Output As numero
' on écrit les 5 1eres lignes
For i = 0 To 4
Print #numero, varContenu(i)
Next i
' on écrit la ligne contenant les nouvelles infos
Print #numero, ">>>> ici, la ligne modifiée <<<<<<<<<"
' on réécrit les lignes suivantes du 1er fichier
For i = 6 To UBound(varContenu)
Print #numero, varContenu(i)
Next i
Close #numero
' on supprime le fichier caduc
Kill CurrentProject.Path & "Daniel.txt"
' on renomme le nouveau fichier du nom de l'ancien
Name chemin & "Daniel2.txt" As chemin & "Daniel.txt"
End Sub

A+
Eric



Bonjour
Je n'arrive pas à lire un fichier texte existant, faire une boucle sur x
lignes puis modifier ligne
J'ai essayé plusieurs mode d'accès mais 1 blocage ou 1autre sans réel
progrès
QQ1 peut-il me laisser un exemple de code ?
Merci de votre aide
DAniel




Avatar
Eric
re,

je viens de voir, après avoir posté, la réponse de Gafish.
La solution que je te propose n'a besoin d'aucune référence. C'est du VB
accepté sans sourciller par VBA.

A toi de voir ce qui te parait le plus rapide en fonction de la taille
du fichier et de tes besoins.
A+
Eric


Bonjour
Je n'arrive pas à lire un fichier texte existant, faire une boucle sur x
lignes puis modifier ligne
J'ai essayé plusieurs mode d'accès mais 1 blocage ou 1autre sans réel
progrès
QQ1 peut-il me laisser un exemple de code ?
Merci de votre aide
DAniel




Avatar
DAniel
...de votre aide, j'ai le choix ;-)

DAniel

"Eric" a écrit dans le message de news:
%
re,

je viens de voir, après avoir posté, la réponse de Gafish.
La solution que je te propose n'a besoin d'aucune référence. C'est du VB
accepté sans sourciller par VBA.

A toi de voir ce qui te parait le plus rapide en fonction de la taille du
fichier et de tes besoins.
A+
Eric


Bonjour
Je n'arrive pas à lire un fichier texte existant, faire une boucle sur x
lignes puis modifier ligne
J'ai essayé plusieurs mode d'accès mais 1 blocage ou 1autre sans réel
progrès
QQ1 peut-il me laisser un exemple de code ?
Merci de votre aide
DAniel