Modifier des caractères d'un fichier txt

jmkkkk Messages postés 3 Date d'inscription vendredi 10 décembre 2004 Statut Membre Dernière intervention 5 juillet 2005 - 30 juin 2005 à 14:09
jmkkkk Messages postés 3 Date d'inscription vendredi 10 décembre 2004 Statut Membre Dernière intervention 5 juillet 2005 - 4 juil. 2005 à 17:38
Ja'i un fichier qui se nomme Original.YXZ qui contient les données suivantes :

757 0
15 554883.350
172077.110

732 0
15 554869.670
172055.440

731 0
15 554925.370
172030.480

38 0
15 554840.360
172026.830

281 0
15 554902.690
172118.240

8000 0 15
554896.219
172045.187

8001 0 15
554915.710
172075.013

8002 0 15
554936.495
172061.432

8003 0 15
554935.969
172055.982

8004 0 15
554938.773
172054.149

8005 0 15
554924.805
172032.377

287 0 15 554978.740 172119.710 526.070

30 0 15 554951.170 172161.710 524.510



et j'aimerai qu'il devienne comme ceci dans un fichier Destination.go7:

757, 554883.350,
172077.110

732, 554869.670,
172055.440

731, 554925.370,
172030.480

38,
554840.360,
172026.830

281, 554902.690,
172118.240

8000, 554896.219,
172045.187

8001, 554915.710,
172075.013

8002, 554936.495,
172061.432

8003, 554935.969,
172055.982

8004, 554938.773,
172054.149

8005, 554924.805,
172032.377

287, 554978.740, 172119.710, 526.070

30, 554951.170, 172161.710, 524.510



Avez-vous un script qui me fait ça simplement.

Merci

7 réponses

econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
30 juin 2005 à 14:24
Dim numFile1 As Long

Dim numFile2 As Long

Dim sTemp As String

Dim tablo() As String



numFile1=FreeFile

Open "Original.YXZ" For Input As #numFile1

numFile2 = FreeFile

Open "Destination.go7" For Input As #numFile1

While not EOF(numFile1)

Line Input #numFile1,sTemp

tablo=Split(sTemp," ",,vbTextCompare)

sTemp =
tablo(LBound(tablo)) & "," &
tablo(UBound(tablo)-1) & "," &
tablo(UBound(tablo))

Print #numFile2,sTemp

Wend

Close #numFile2

Close #numFile1




Manu
-------------------------------------------
Une question bien posée, c'est une chance de réponse bien adaptée.
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
30 juin 2005 à 14:25
Dim L as string, i as long, j As Long, Buffer as String
Dim F1 as long, F2 as Long
F1 = freefile
Open "Original.xyz" for input as #F1
F2 = Freefile
Open "Destination.go7" for output as #F2
While not eof(F1) ' Tant qu'on est pas a la fin du ficheir source
Line Input #F1, L ' On lit une ligne
L = L & " " ' On ajoute un espace en fin de ligne pour simplifier la seconde boucle While
i = Instr(L,"0 15") ' On repère la chaine "0 15"
Buffer = Left$(L,i-2) ' On extrait ce qui se trouve à gauche
L = Mid$(L,i + 5) ' On ne garde que la fin de la ligne
j = Instr(L," ") ' On cherche le 1er espace
While j <> 0 ' Si on a un espace dans la ligne
Buffer = Buffer & ", " & Left$(L,j-1) ' On ajoute se qui se trouve devant
L = Mid$(L,j+1) ' On ne garde que ce qui suit l'espace
j = Instr(L," ") ' On recherche l'espace suivant
Wend
Print #F2, Buffer ' On écrit le buffer
Wend
Close ' On ferme les deux fichiers

J'ai pas testé mais cela devrait le faire ...

christophe
0
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
30 juin 2005 à 14:38
Ah ... on s'est croisés ...



Une petite correction sur mon code :



Open "Destination.go7" For <strike>Input</strike> Output As #numFile1

Manu
-------------------------------------------
Une question bien posée, c'est une chance de réponse bien adaptée.
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
30 juin 2005 à 14:46
Et nouvelle version du mien ...

Dim L as string, F1 as long, F2 as Long
F1 = freefile
Open "Original.xyz" for input as #F1
F2 = Freefile
Open "Destination.go7" for output as #F2
While not eof(F1)
Line Input #F1, L
Print #F2, Replace$(Replace$(L," 0 15 "," "),", ")
Wend
Close
Bien plus simple et surement bien plus rapide ....

Christophe
0

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

Posez votre question
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
30 juin 2005 à 15:00
Excellent le coup du Replace ... arf bien vu !

Manu
-------------------------------------------
Une question bien posée, c'est une chance de réponse bien adaptée.
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
30 juin 2005 à 21:53
Econs < Etrangement, c'est en voyant ton Split() que j'ai eu l'idée de faire un double Replace() !! Me demande pas pourquoi, je dois avoir l'esprit très tordu !!!

Christophe
0
jmkkkk Messages postés 3 Date d'inscription vendredi 10 décembre 2004 Statut Membre Dernière intervention 5 juillet 2005
4 juil. 2005 à 17:38
Le double Replace() n'a pas
pas fonctionné avec mon fichier,

c'est quoi le $ après Replace ?

Mais j'ai effectivement réussi avec quelque chose de simple avec cette
fonction.

Si je veux sélectionner un caractère dans ligne à une position fixe (colonne)
et

que j'aimerai remplacer les 5 prochains caractères, c'est quoi la fonction.



Merci.



JM



PS : Je suis nouveau dans le forum et je débute avec vb6 et je suis heureux de

voir que vous répondez vite et même aux questions des novices.
0
Rejoignez-nous