[Catégorie modifiée .Net -> VB6] remplacer des valeurs dans un fichier texte

cs_Bidou93 Messages postés 4 Date d'inscription lundi 3 août 2009 Statut Membre Dernière intervention 18 août 2012 - 18 août 2012 à 04:23
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 18 août 2012 à 22:17
bonjour,

Je voudrais remplacer des mots ou des chiffres situés en diverses endroits d'un fichier texte en vb5.
Soit le fichier suivant
1- blablablablabla motAchanger
2- blablablablabla
3- blablablablabla motAchanger
4- blablablablabla
5- blablablablabla 123456(à modifier)
6- blablablablabla
7- motAchanger
etc
Le fichier compte plusieurs centaines de lignes .J'ai essayé avec FSO mais je n'y suis pas arrivé .
Merci de votre aide

10 réponses

cs_titicar Messages postés 181 Date d'inscription jeudi 30 mai 2002 Statut Membre Dernière intervention 19 août 2012
18 août 2012 à 11:03
Salut,

Je ne me souviens plus très bien, mais ces fonctions existent-elles sous vb5 :
- InStr(); ex: x=InStr(1,"Bla","a") -> x devrait être égal à 3
- l'objet Collection; ex: Dim maCollect As New Collection

titicar
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
18 août 2012 à 11:11
Bonjour,
Nul besoin de Instr, dans cette affaire et si l'exemple donné est complet et bon.
Mais j'attendrai personnellement que cette discussion soit déplacée, car donner une solution là où ouverte :
Forum > VB.NET et VB 2005

ferait que la solution y serait perdue pour ceux qui développent sous VB5
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
cs_titicar Messages postés 181 Date d'inscription jeudi 30 mai 2002 Statut Membre Dernière intervention 19 août 2012
18 août 2012 à 11:59
Oups, je n'avais pas regardé la section ouverte.
Il y a bien la fonction Replace() qui ferait aussi l'affaire, mais c'est pareil, uniquement à partir de vb6.

titicar
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
18 août 2012 à 12:54
Sur la base de ce qu'il a exposé, Replace (non présent sous VB5) n'est pas non plus nécessaire.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0

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

Posez votre question
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
18 août 2012 à 13:22
Salut

Catégorie modifiée

Remplacer du texte dans des données qui se trouvent en mémoire, dans des variables, n'est pas un gros problème.
Sous VB5, Replace n'existe pas, mais des solutions de remplacement existent (basée sur Instr et les Left$, Mid$, Right$)

Par contre, remplacer du texte à l'intérieur d'un fichier texte n'est pas possible directement.
Il te faut :
- Ouvrir le fichier (1) texte en mode lecture (Open)
- Ouvrir un second fichier (2) temporaire en écriture (Open)
- Lire chaque ligne du fichier 1 (Line Input)
- Faire la substitution de la chaine (Replace ou équivalent)
- Ecrire la ligne, modifiée ou non, dans le Fichier 2 (Print#)
- Boucler ainsi jusqu'à la dernière ligne du fichier 1 (Do-Loop, EOF)
- Fermer fichier 2 (Close)
- Fermer fichier 1 (Close)
- Détruire fichier 1 (Kill)
- Copier fichier 2 avec le nom du fichier 1 original (FileSystemObject, Copy)
- Détruire fichier 2 (Kill)

Tous ces mots clé trouvent leur explication dans l'aide de VB ou parmi les questions forum/codes sources du site.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
cs_titicar Messages postés 181 Date d'inscription jeudi 30 mai 2002 Statut Membre Dernière intervention 19 août 2012
18 août 2012 à 13:24
Là, je tire mon chapeau, pas un Replace(), ni même un InStr()
Il faut réinventer toute la roue?
Vivement que le sujet soit déplacé
(Nota : Après vérif, InStr fait parti de VB5)
0
cs_titicar Messages postés 181 Date d'inscription jeudi 30 mai 2002 Statut Membre Dernière intervention 19 août 2012
18 août 2012 à 15:03
Pour info et en revenir à Replace() et d'autres commandes équivalentes sous VB5, je suis tombé là-dessus :
Comment faire pour simuler des fonctions de chaîne de Visual Basic 6.0 dans VB5
0
cs_Bidou93 Messages postés 4 Date d'inscription lundi 3 août 2009 Statut Membre Dernière intervention 18 août 2012
18 août 2012 à 17:45
Bonjour,

houlà houlà je vois que je dois clarifier les choses ...j'ai mis ce post à cet endroit parce que je souhaiterai avoir une solution à mon problème en vb5 et j'avoue que n'étant pas un habitué des forums je me suis peut-être trompé...
Cela étant j'ai trouvé le programme ci-après dont je n'ai plus le nom de l'auteur ( qu'il m'en excuse) qui ne repond pas exactement à mon attente parce que je ne peux pas remplacer plusieurs valeurs.Je suis sûr cependant qu'il va en intéresser plus d'un.
Dim Chaine As String, Cible As String
Dim Fichier2 As String, Fichier1 As String
Dim Ancien As String, Nouveau As String
Ancien = "toto"
Nouveau = "titi"
Fichier1 = "C:\nomfichier.txt"
Fichier2 = "C:\nomfichier2.txt"

Open Fichier1 For Input As #1
Open Fichier2 For Append As #2
Do While Not EOF(1)
Line Input #1, Chaine
Cible = Join(Split(Chaine, Ancien), Nouveau)
Print #2, Cible
Loop
Close #1
Close #2
'Kill Fichier1
MsgBox "Terminé."

merci de votre aide
0
cs_titicar Messages postés 181 Date d'inscription jeudi 30 mai 2002 Statut Membre Dernière intervention 19 août 2012
18 août 2012 à 18:23
Bref, tu as trouvé la solution?
Celà dit, les commandes Join() et Split() ne font pas parties du language de VB5.
Bonne continuation
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
18 août 2012 à 22:17
Que viennent faire Split et Join dans ton problème ?
Non, il te suffit de scruter un peu le Web pour trouver l'équivalent de la fonction Replace. Ce n'est pas compliqué.
0
Rejoignez-nous