Encore Fred pour écrire dans un fichier en VBS

Le
Fred
Bonjour et merci pour les réponses précédentes.

Dans mon code, j'arrive à lire le contenu du fichier, à aller chercher la
balise qui m'interresse ( 'RECHERCHE LIGNE REF DOS )
Mais ce que je souhaiterais faire, c'est remplacer son contenu
(<refdos>toto</refdos> par <refdos>TATA</refdos>) et là.. c'est la grosse
panique à bord !!


Merci pour votre aide.


FRED.









'RECHERCHE LIGNE REF DOS
Const ForReading = 1, ForWriting = 2

Dim OFSO3, MyFile2

Set OFSO3 = CreateObject("Scripting.FileSystemObject")

Set MyFile2 = OFSO3.OpenTextFile(Mon_Fic, ForReading)

' Tant que la fin du fichier n'est pas atteinte
Do While Not MyFile2.AtEndOfStream

'Lire chaque ligne
ReadLineTextFile = MyFile2.ReadLine

'Si la chaîne de caractère <refdos> est rouvée, alors l'inclure dans la
variable "ReadLineTextFile"
If InStr(ReadLineTextFile, "<refdos>") Then
MsgBox ReadLineTextFile
Else
End If

Loop

End Sub
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Gilles LAURENT [MVP]
Le #710711
"Fred" news:
| Bonjour et merci pour les réponses précédentes.

Bonsoir,

| Dans mon code, j'arrive à lire le contenu du fichier, à aller
| chercher la balise qui m'interresse ( 'RECHERCHE LIGNE REF DOS )
| Mais ce que je souhaiterais faire, c'est remplacer son contenu
| (<refdos>toto</refdos> par <refdos>TATA</refdos>) et là..... c'est la
| grosse panique à bord !!

Par exemple avec une expression régulière.
Celle-ci devrait répondre à votre besoin :

Set oRe=New RegExp
oRe.Global=True
oRe.Pattern=">[^>]+?<"

While Not oFile.AtEndOfStream
strLine=oFile.ReadLine
If oRe.Test(strLine) Then
WScript.Echo oRe.Replace(strLine, ">TATA<")
End If
Wend

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
Fred
Le #710709
Bonjour,

Encore désolé mais lorsque j'exécute le code, jobtiens l'erreur:

"Type défini par l'utilisateur non défini"

...

Merci pour votre aide.

FRED.




"Gilles LAURENT [MVP]" news:uUeMe%
"Fred" news:
| Bonjour et merci pour les réponses précédentes.

Bonsoir,

| Dans mon code, j'arrive à lire le contenu du fichier, à aller
| chercher la balise qui m'interresse ( 'RECHERCHE LIGNE REF DOS )
| Mais ce que je souhaiterais faire, c'est remplacer son contenu
| (<refdos>toto</refdos> par <refdos>TATA</refdos>) et là..... c'est la
| grosse panique à bord !!

Par exemple avec une expression régulière.
Celle-ci devrait répondre à votre besoin :

Set oRe=New RegExp
oRe.Global=True
oRe.Pattern=">[^>]+?<"

While Not oFile.AtEndOfStream
strLine=oFile.ReadLine
If oRe.Test(strLine) Then
WScript.Echo oRe.Replace(strLine, ">TATA<")
End If
Wend

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr




Gilles LAURENT [MVP]
Le #710707
"Fred" news:
| Bonjour,

Bonjour,

| Encore désolé mais lorsque j'exécute le code, jobtiens l'erreur:
|
| "Type défini par l'utilisateur non défini"

Vous devez adapter ce code à votre contexte.
Ci-dessous un exemple très simple :

--- Coupez ici : test.vbs ---
Const LINE="<refdos>toto</refdos>"

Set oRe=New RegExp
oRe.Global=True
oRe.Pattern=">[^>]+?<"

WScript.Echo "Avant:" & LINE
WScript.Echo "Après:" & oRe.Replace(LINE, ">TATA<")
--- Coupez ici : test.vbs ---

> cscript //nologo test.vbs

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
Fred
Le #710706
Bon, je sus vraiment désolé d'être boulet, mais je n'arrive pas à faire
grand chose...

J'ai beau essayer de coler un peu partout dans mon code, cela ne me donne
pas grand chose...

Si vous pouviez m'indiquer à quel endroit il faudrait que j'agisse....

Fred.


' LECTURE COMPLETE DU FICHIER

Set Fsys = CreateObject("Scripting.FileSystemObject")
Set OFSO2 = Fsys.OpenTextFile(Mon_Fic, 1)

Contenu = OFSO2.Readall
msg = "Le fichier contient : " & Contenu

MsgBox (msg)


'RECHERCHE LIGNE REF DOS
Const ForReading = 1, ForWriting = 2
Dim OFSO3, MyFile2

Set OFSO3 = CreateObject("Scripting.FileSystemObject")
Set MyFile2 = OFSO3.OpenTextFile(Mon_Fic, ForReading)

' Tant que la fin du fichier n'est pas atteinte...
Do While Not MyFile2.AtEndOfStream

'...Lire chaque ligne
ReadLineTextFile = MyFile2.ReadLine

'Si la chaîne de caractère <refdos> est rouvée, alors l'inclure dans la
variable "ReadLineTextFile"
If InStr(ReadLineTextFile, "<refdos>") Then

MsgBox ReadLineTextFile
Else
End If
Loop



"Gilles LAURENT [MVP]" news:%23j9cN%
"Fred" news:
| Bonjour,

Bonjour,

| Encore désolé mais lorsque j'exécute le code, jobtiens l'erreur:
|
| "Type défini par l'utilisateur non défini"

Vous devez adapter ce code à votre contexte.
Ci-dessous un exemple très simple :

--- Coupez ici : test.vbs ---
Const LINE="<refdos>toto</refdos>"

Set oRe=New RegExp
oRe.Global=True
oRe.Pattern=">[^>]+?<"

WScript.Echo "Avant:" & LINE
WScript.Echo "Après:" & oRe.Replace(LINE, ">TATA<")
--- Coupez ici : test.vbs ---

> cscript //nologo test.vbs

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr




Gilles LAURENT [MVP]
Le #710534
"Fred" news:
| Bon, je sus vraiment désolé d'être boulet, mais je n'arrive pas à
| faire grand chose...

Peut-être car vous utiliser du VBA et non du VBS !

En VBA :

Sub Test()
Const LINE = "<refdos>toto</refdos>"
Set oRe = CreateObject("VBScript.RegExp")
oRe.Global = True
oRe.Pattern = ">[^>]+?<"

MsgBox "Avant:" & LINE
MsgBox "Après:" & oRe.Replace(LINE, ">TATA<")
End Sub

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
Fred
Le #710529
Bonjour,

Oui, mais cela affiche une MmsgBox, ça n'écris pas dans le fichier...


FRED.


"Gilles LAURENT [MVP]" news:uVUX8%
"Fred" news:
| Bon, je sus vraiment désolé d'être boulet, mais je n'arrive pas à
| faire grand chose...

Peut-être car vous utiliser du VBA et non du VBS !

En VBA :

Sub Test()
Const LINE = "<refdos>toto</refdos>"
Set oRe = CreateObject("VBScript.RegExp")
oRe.Global = True
oRe.Pattern = ">[^>]+?<"

MsgBox "Avant:" & LINE
MsgBox "Après:" & oRe.Replace(LINE, ">TATA<")
End Sub

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr




Publicité
Poster une réponse
Anonyme