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?
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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)
Partager