[déplacé VB6 -> VBS] Ecrire dans une certaine ligne d'un fichier .txt et relire

Signaler
Messages postés
7
Date d'inscription
dimanche 22 novembre 2009
Statut
Membre
Dernière intervention
28 décembre 2009
-
Messages postés
7
Date d'inscription
dimanche 22 novembre 2009
Statut
Membre
Dernière intervention
28 décembre 2009
-
Salut,
J'ai besoin d'écrire un nombre à la ligne N° x dans un fichier .txt, puis
relire ce nombre (à la ligne N°x)

Qui peut me faire un petit exemple ?
J'ai essayé avec ReadLine, et WriteLine mais il me donne que la 1ère ligne..

Merci d'avance.

13 réponses

Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
39
Messages postés
7
Date d'inscription
dimanche 22 novembre 2009
Statut
Membre
Dernière intervention
28 décembre 2009

Merci de ta réponse.
Pour lire une certaine ligne, Ok.
Par contre pour modifier ou écrire à la ligne N°x sans modifier les autres, je bute un peu là.
Quand j'utilise WriteLine, ça me modifie toute les lignes.

A+,
Franz1664.
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
39
writeline?
montre ton code stp
Messages postés
7
Date d'inscription
dimanche 22 novembre 2009
Statut
Membre
Dernière intervention
28 décembre 2009

Bon, je suis un peu débutant, mais motivé, hein ?
Voila :
Pour érire à la ligne 3, j'ai pensé :

dim ex1
Dim i
Dim OutputFile
Dim outFSO
Dim outStream
Dim fso ' Target list FileSystemObject


OutputFile = "H:\Aseq\bidon.txt"
Set outFSO = CreateObject("Scripting.FileSystemObject")
Set outStream = outFSO.CreateTextFile(outputfile, True)


ex1 "RA " & 50

Do Until i=3
i=i+1
outStream.WriteLine
Loop
'outStream.WriteLine ex1

outStream.Close
msgbox("Script finished.")

Merci encore de ta réponse rapide !
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
39
tu as regardé les liens donnés?!
le 2e en l'occurrence, tu y vois FSO quelque part?

ce n'est pas la bonne manière, FSO c'est pour le SCRIPT !

tu es bien en VB6 non? pas VBS..
Messages postés
7
Date d'inscription
dimanche 22 novembre 2009
Statut
Membre
Dernière intervention
28 décembre 2009

Oups, si, je suis en vbs.

Mince, je suis pas dans la bonne rubrique alors...
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
39
... déplacé vers le forum approprié
Messages postés
7
Date d'inscription
dimanche 22 novembre 2009
Statut
Membre
Dernière intervention
28 décembre 2009

1000 Merci de m'avoir déplacé le sujet
Messages postés
7
Date d'inscription
dimanche 22 novembre 2009
Statut
Membre
Dernière intervention
28 décembre 2009

Salut,
Personne pour un petit coup de pouce ?
C'est pas force de chercher, mais là, je bute sur ce soucis.

Merci, d'avance :-)
A+,
Franz1664.
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
26
 Bonsoir,



Option Explicit
'Ajout d'une ligne dans un fichier txt après ligne x
Call AddLineTxt("D:\Test.txt", 1, "new line " & now)

Function AddLineTxt(strFile, intLineAdd, strWordAdd)
   Dim objFso, objTextFile, objDicoLine
   Dim arrLineFile, strKey
   Dim intLine, i
   
   Set objFso=Createobject("Scripting.FileSystemObject")
   'lecture fichier + création dictionnaire 
   Set objTextFile=objFso.OpenTextFile(strFile,1)
   Set objDicoLine=CreateObject("Scripting.Dictionary")
   intLine=0
   Do while not objTextFile.AtEndOfStream
      arrLineFile=Split(objTextFile.ReadAll, vbCrLf)
      For i=LBound(arrLineFile) To UBound(arrLineFile)
              objDicoLine.Add intLine, arrLineFile(intLine) 
              intLine = intLine+1
      Next
   Loop
   objTextFile.Close

   'ecriture du fichier à partir du dictionnaire
   'insert de strWordAdd après la ligne intLineAdd
   Set objTextFile=objFso.OpenTextFile(strFile,2)
   For Each strKey in objDicoLine.Keys
       Select Case strKey
          Case intLineAdd-1
              objTextFile.WriteLine objDicoLine.Item(strKey) 
              objTextFile.WriteLine strWordAdd
          Case Else
              objTextFile.WriteLine objDicoLine.Item(strKey) 
       End Select
   Next
   objTextFile.Close

   Set objDicoLine = Nothing
   Set objFso = Nothing
   Set objTextFile = Nothing
End Function



Il ne reste donc plus qu'à réouvrir le fichier et lire la ligne ajoutée précédemment.


jean-marc
Messages postés
4
Date d'inscription
jeudi 10 décembre 2009
Statut
Membre
Dernière intervention
4 janvier 2010

Bonjour,
il est impossible de modifier directement un fichier en vbs. Il faut lire le fichier dans une variable, la modifier, et écraser l'ancien contenu dans le fichier. C'est à dire qu'il faut l'ouvrir un fois en lecture, puis en écriture. En reprenant le code à la 9ème ligne, on peut par exemple faire ceci (si le fichier existe):

Set outStream = outFSO.OpenTextFile(outputfile, 1)
ex1 "RA " & 50
contenu = ""

'On place les 2 premières lignes dans la variable "contenu"
for i = 1 to 3
contenu = contenu & outStream.readline & vbcrlf
i = i + 1
next

'On place une 3ème ligne modifiée et on passe l'ancienne
contenu = contenu & ex1 & vbcrlf
outStream.skipline

'On garde les lignes suivantes
do until outStream.atendofstream
contenu = contenu & outStream.readline & vbcrlf
loop

outStream.close

'A ce stade, on a dans la variable, le contenu du fichier modifié
'Il reste à l'ouvrir en écriture pour écraser l'ancien contenu
Set outStream = outFSO.OpenTextFile(outputfile, 2)
outStream.write contenu
outStream.close

Ai-je répondu à la question?
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
26
 Bonjour raymix,



Dernier signe de vie de Franz1664 : le 29 novembre 2009 à 19:48:19
Proposition (testée) de JMO : le 29 novembre 2009 à 19:32:05


jean-marc
Messages postés
7
Date d'inscription
dimanche 22 novembre 2009
Statut
Membre
Dernière intervention
28 décembre 2009

Bonjour,
Merci à tous et + particulièrement à JMO et Raymix

J'ai un cruel manque de temps en ce moment, je vous remercie de vos réponses, c'est sympa.

Sincèrement, toutes les réponses m'aident bien, et, c'est sûr et certains que je vais les utiliser très bientôt, je vous tiendrais au courant soyez-en sûr.

Je suis vraiment dans la "mouise" avec mon temps libre.(En Janvier/Février ça devrait être plus calme pour moi)

J'ai bien essayé ton script (JMO), mais mes essai écraisaient les lignes du fichier, ce que Raymix a visiblement résolu : vous êtes bien complémentaires les gars, merci du coup de mains, j'apprécie sincèrement


Merci encore, à très bientôt.