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

Franz1664 Messages postés 7 Date d'inscription dimanche 22 novembre 2009 Statut Membre Dernière intervention 28 décembre 2009 - 22 nov. 2009 à 11:33
Franz1664 Messages postés 7 Date d'inscription dimanche 22 novembre 2009 Statut Membre Dernière intervention 28 décembre 2009 - 28 déc. 2009 à 19:59
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

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
22 nov. 2009 à 11:51
0
Franz1664 Messages postés 7 Date d'inscription dimanche 22 novembre 2009 Statut Membre Dernière intervention 28 décembre 2009
22 nov. 2009 à 15:35
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.
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
22 nov. 2009 à 15:37
writeline?
montre ton code stp
0
Franz1664 Messages postés 7 Date d'inscription dimanche 22 novembre 2009 Statut Membre Dernière intervention 28 décembre 2009
22 nov. 2009 à 15:43
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 !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
22 nov. 2009 à 15:51
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..
0
Franz1664 Messages postés 7 Date d'inscription dimanche 22 novembre 2009 Statut Membre Dernière intervention 28 décembre 2009
22 nov. 2009 à 15:58
Oups, si, je suis en vbs.

Mince, je suis pas dans la bonne rubrique alors...
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
22 nov. 2009 à 16:00
... déplacé vers le forum approprié
0
Franz1664 Messages postés 7 Date d'inscription dimanche 22 novembre 2009 Statut Membre Dernière intervention 28 décembre 2009
22 nov. 2009 à 16:01
1000 Merci de m'avoir déplacé le sujet
0
Franz1664 Messages postés 7 Date d'inscription dimanche 22 novembre 2009 Statut Membre Dernière intervention 28 décembre 2009
29 nov. 2009 à 16:58
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.
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
29 nov. 2009 à 19:32
 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
0
raymix Messages postés 4 Date d'inscription jeudi 10 décembre 2009 Statut Membre Dernière intervention 4 janvier 2010
28 déc. 2009 à 13:41
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?
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
28 déc. 2009 à 15:10
 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
0
Franz1664 Messages postés 7 Date d'inscription dimanche 22 novembre 2009 Statut Membre Dernière intervention 28 décembre 2009
28 déc. 2009 à 19:59
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.
0
Rejoignez-nous