bonjour,
je souhaite modifier une chaine de caractère à partir d'une position sur chaque ligne d'un fichier text.
je sais modifier et rechercher les carcatères sur l'ensemble du fichier mais pas sur une seule position.
Quelqu'un peut m'aider?
Version imprimable
bonjour,
je souhaite modifier une chaine de caractère à partir d'une position sur chaque ligne d'un fichier text.
je sais modifier et rechercher les carcatères sur l'ensemble du fichier mais pas sur une seule position.
Quelqu'un peut m'aider?
Avec le peu d'information que tu nous donne sur le contenu de ta chaine et la nature des caractères à modifier (position dans la ligne toujours la même pi âs ? nombre de caractères toujours le même ou pas ...)
essai de voir si la solution n'est pas la :
Manipulation des chaînes de caractères
;)
ok, je suis un peu juste en explication donc je reprends.
voici le code utilisé:
Comme on peut le voir il doit remplacer les 00000 par CBMTZ .Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Const ForReading = 1, ForWriting = 2, ForAppending = 8 Dim fso, f Dim st Set fso = CreateObject("Scripting.FileSystemObject") 'Ouverture et lecture du fichier à modifier Set f = fso.OpenTextFile("c:\temp\test.txt", ForReading) st = readAll.f f.Close 'ecriture du fichier modifier... aprés avoir remplacer "00000" par "CBMTZ".. Set f = fso.OpenTextFile("c:\temp\test.txt", ForWriting) f.Write replace(st,"00000","CBMTZ") f.close
Sachant que cette chaine de caractère se trouve sur plusieurs positions, je cherche à les remplacer uniquement sur la position [428,432] de mon fichier txt.
voir pièce jointe.
moi je dirais de cette manière :
C'est de la bidouille, mais ça devrait marcher...Code:
1
2
3 If Right(Left(st,432),5) = "00000" f.Write Left(st,428) & "CBMTZ" & Right(st,Len(st) - 432) 'nombres à réajuster peut être - sûrement End If
je te remercie pour l'info sauf que maintenant il ne modifie que la première ligne et c'est tout.
Code:
1
2
3
4
5 Set f = fso.OpenTextFile("c:\temp\test.txt", ForWriting) If Right(Left(st,432),5) = "00000" Then f.Write Left(st,427) & "CBMTZ" & Right(st,Len(st) - 432) End If f.close
ah oui, alors dans ce cas il faut lire le fichier ligne par ligne avec la méthode ReadLine de opentextefile (en mode lecture) et écrire en parralèle dans un fichier temporaire avec la méthode WriteLine de opentextefile (en mode écriture)
j'ai fait des modifications mais je suis tjs au point mort
Le boulet a besoin d'aide!Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 Const ForReading = 1, ForWriting = 2, ForAppending = 8 Dim fso, f Dim st Set fso = CreateObject("Scripting.FileSystemObject") 'Ouverture et lecture du fichier à modifier Set f = fso.OpenTextFile("c:\temp\test.txt", ForReading) st = f.readAll Do While Not f.AtEndOfStream f.ReadLine Loop f.Close 'ecriture du fichier modifier... aprés avoir remplacer "00000" par "CBMTZ".. Set f = fso.OpenTextFile("c:\temp\test.txt", ForWriting) Do While Not f.AtEndOfStream If Right(Left(st,432),5) = "00000" Then f.WriteLine Left(st,427) & "CBMTZ" & Right(st,Len(st) - 432) End If Loop f.close
ça devrait ressembler à ça :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 Const ForReading = 1, ForWriting = 2, ForAppending = 8 Dim fso, f Dim st Set fso = CreateObject("Scripting.FileSystemObject") 'Ouverture et lecture du fichier à modifier Set f = fso.OpenTextFile("c:\temp\test.txt", ForReading) Set f2 = fso.CreateTextFile("c:\temp\test.txt.tmp") Do While Not f.AtEndOfStream st = f.ReadLine If Right(Left(st,432),5) = "00000" Then f2.WriteLine Left(st,427) & "CBMTZ" & Right(st,Len(st) - 432) Else f2.WriteLine st End If Loop f.Close f2.close fso.deletefile ("c:\temp\test.txt") fso.MoveFile("c:\temp\test.txt.tmp", "c:\temp\test.txt")
Super un vrai Pro.:king:
Merci à toi pour ton aide précieuse.