Convertir un fichier texte (avec des ;) en longueur fixe

cs_eren Messages postés 38 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 27 novembre 2008 - 7 juil. 2003 à 16:36
cs_eren Messages postés 38 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 27 novembre 2008 - 8 juil. 2003 à 13:19
J'ai un fichier issu d'Excel au format CSV, c.a.d avec des points virgules entre chaque champ
Ex .
Renaud;Eric
Dupond;Paul

J'ai besoin de convertir ce fichier vers un autre et de la manière suivante :

Les champs de gauche doivent une longueur fixe de 30 caractères et les champs de droite une longueur fixe de 15 caractères.

A l'affichage dans un éditeur, je vois donc 2 colonnes :
les noms de 0 à 30, puis les prénoms de 31 à 45

7 réponses

ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
7 juil. 2003 à 19:05
salut

dim t() as string

redim t(0)
open filename for input as #1
do until eof(1)
line input #1,t(ubound(t))
redim preserve t(ubound(t)+1)
loop
close #1

dim nom as string * 30,prenom as string *15
dim temp() as string

for x = 0 to ubound(t) - 1
temp = split(t(x),";")
nom = format(temp(0),space(30))
prenom = format(temp(1),space(15))
t(x) = nom & prenom
erase temp
next

open filename2 for output as #1
for x = 0 to ubound(t)-1
print #1,t(x)
next
close#1

erase t

tu mets ca dans un command ou ce que tu veux

voila

ShareVB
0
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
7 juil. 2003 à 19:05
salut

dim t() as string

redim t(0)
open filename for input as #1
do until eof(1)
line input #1,t(ubound(t))
redim preserve t(ubound(t)+1)
loop
close #1

dim nom as string * 30,prenom as string *15
dim temp() as string

for x = 0 to ubound(t) - 1
temp = split(t(x),";")
nom = format(temp(0),space(30))
prenom = format(temp(1),space(15))
t(x) = nom & prenom
erase temp
next

open filename2 for output as #1
for x = 0 to ubound(t)-1
print #1,t(x)
next
close#1

erase t

tu mets ca dans un command ou ce que tu veux

voila

ShareVB
0
cs_eren Messages postés 38 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 27 novembre 2008
8 juil. 2003 à 09:38
-------------------------------
Réponse au message :
-------------------------------

> J'ai un fichier issu d'Excel au format CSV, c.a.d avec des points virgules entre chaque champ
> Ex .
> Renaud;Eric
> Dupond;Paul
>
> J'ai besoin de convertir ce fichier vers un autre et de la manière suivante :
>
> Les champs de gauche doivent une longueur fixe de 30 caractères et les champs de droite une longueur fixe de 15 caractères.
>
> A l'affichage dans un éditeur, je vois donc 2 colonnes :
> les noms de 0 à 30, puis les prénoms de 31 à 45
>
0
cs_eren Messages postés 38 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 27 novembre 2008
8 juil. 2003 à 09:57
-------------------------------
Réponse au message :
-------------------------------

> salut
>
> dim t() as string
>
> redim t(0)
> open filename for input as #1
> do until eof(1)
> line input #1,t(ubound(t))
> redim preserve t(ubound(t)+1)
> loop
> close #1
>
> dim nom as string * 30,prenom as string *15
> dim temp() as string
>
> for x = 0 to ubound(t) - 1
> temp = split(t(x),";")
> nom = format(temp(0),space(30))
> prenom = format(temp(1),space(15))
> t(x) = nom & prenom
> erase temp
> next
>
> open filename2 for output as #1
> for x = 0 to ubound(t)-1
> print #1,t(x)
> next
> close#1
>
> erase t
>
> tu mets ca dans un command ou ce que tu veux
>
> voila
>
> ShareVB
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > J'ai un fichier issu d'Excel au format CSV, c.a.d avec des points virgules entre chaque champ
> > Ex .
> > Renaud;Eric
> > Dupond;Paul
> >
> > J'ai besoin de convertir ce fichier vers un autre et de la manière suivante :
> >
> > Les champs de gauche doivent une longueur fixe de 30 caractères et les champs de droite une longueur fixe de 15 caractères.
> >
> > A l'affichage dans un éditeur, je vois donc 2 colonnes :
> > les noms de 0 à 30, puis les prénoms de 31 à 45
> >
>
0

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

Posez votre question
cs_eren Messages postés 38 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 27 novembre 2008
8 juil. 2003 à 10:00
D'abord merci. le problème est le problème est que le programme fonctionne mais le fichier de destination est vide. Il semble que les lignes
nom = Format(temp(0), Space(30))
prenom = Format(temp(1), Space(15))
renvoie un blanc pour nom et prenom ?
0
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
8 juil. 2003 à 10:27
salut

est ce que ubound(t)-1 correspond au nombre de ligne de ton fichier original CSV
si non remplace do until eof(1) par do while not eof(1)

verifie que t(x) dans split contient bien quelque chose
ainsi que temp(0) et temp(1)

tu as remplacer filename et filename2 par les noms des fichiers

voila

ShareVB
0
cs_eren Messages postés 38 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 27 novembre 2008
8 juil. 2003 à 13:19
En fait avec
nom = temp(0)
prenom = temp(1)
c'est correct alors que ce n'est pas le cas avec

nom = Format(temp(0), Space(30))
prenom = Format(temp(1), Space(15))

Sans doute un pb de format car nom et prenom dans ce cas font bien 30 et 15 en longueur mais avec une chaine vide.
0
Rejoignez-nous