Conversion txt en csv

Fermé
pinkwyzard Messages postés 5 Date d'inscription jeudi 14 février 2008 Statut Membre Dernière intervention 14 février 2008 - 14 févr. 2008 à 10:55
 coucoussa - 21 mars 2011 à 19:21
Bonjour,

Je souhaiterai savoir comment faire pour convertir un fichier.txt sans separateur en un csv.

Quel language devrai-je utiliser par exemple.

Merci .

36 réponses

NicoDisso Messages postés 230 Date d'inscription mardi 26 mai 2009 Statut Membre Dernière intervention 22 août 2009 32
5 juin 2009 à 08:54
en fait tu veux juste ouvrir un fichier texte dans excel en coupant les données à des longueurs définies toujours identiques ?
Champ 1 = 5 caracteres...



0
Bien je vai tenter de bien expliquer la chose.

Ma responsable de stage sait importer le fichier texte dans excel et le couper (psk il y a un truc pour le faire), mais elle veut plus se casser la tete, et elle veut que je lui fasse une application qui puisse gerer tout sa.

en gros, passer du fichier texte au fichier excel, sans quel ait besoin de faire quoi que ce soit
0
NicoDisso Messages postés 230 Date d'inscription mardi 26 mai 2009 Statut Membre Dernière intervention 22 août 2009 32
5 juin 2009 à 08:56
si j'ai bien compris ce que tu veux c'est "importer un fichier texte" dans excel

menu Données/données externes/importer un fichier texte



0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
5 juin 2009 à 09:01
Re,

dans Excel, je trouve que vous vous etes vraiment gavé pour rien.
On c'est peut être gavé pour rien, mais pas plus que toi avec VBA.
Il faut arrêter de dire que c'est plus facile.

Mais si on préfére écrire plus de lignes de codes quand quelqu'une suffisent alors il faut arrêter de dire que c'est plus facile.

Entre les assistants d'importation, et le VBA y'avait de quoi faire...
Pas besoin de VBA quand on peut utiliser des formules.
Pas besoin non plus d'importation quand on peut ouvrir un fichier txt avec excel.
0
NicoDisso Messages postés 230 Date d'inscription mardi 26 mai 2009 Statut Membre Dernière intervention 22 août 2009 32
5 juin 2009 à 09:09
est ce que tu as vu au moins pourquoi c'etait le code VBA que j'ai posté ?
Je l'ai mis dans le post au cas ou ca pouvais lui servir pour enreistrer son fichier en csv sans passer par enregistrer sous d'excel vu que c'est ce qui était demandé dans l'autre post. Si t'arrives a le faire avec tes formules et ba tant mieux

ensuite vu ce qu'il veut faire, je vois quand meme pas pourquoi vous avez passé autant de temps a faire ca meme ton dernier post ne sert à rien, c'est prévu dans excel en direct, en 3 clics vous pouvez le faire...
0

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

Posez votre question
NicoDisso Messages postés 230 Date d'inscription mardi 26 mai 2009 Statut Membre Dernière intervention 22 août 2009 32
5 juin 2009 à 09:11
Et elle peut pas faire actualiser les données dans Excel, en faisant un clique droit dans les données existantes ?
0
ben en fait c'est une procedure qu'elle doit faire tous les jours, sur le meme fichier (c'est le fichier d'une banque) puisque ya des informations de chaque jour. si tu veux, elle le fait depui quelque mois l'import du fichier texte dans excel et le decoupage, mais elle veut que ca se fasse automatiquement et ensuite qu'elle arrange juste la forme c'est tout

bon maintenant est ce que c'est possible de le faire en vba? sinon, c 'est pas grave, je garde le truc en C.
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567 > codeur
5 juin 2009 à 09:22
Re,

Oui, c'est possible en VBA, en C ou n'importe quelle langage.
Mais franchement en ce cas si tu cherches juste un résultat tu as les formules excel qui font l'affaire, pas besoin de programmation.
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
5 juin 2009 à 09:21
Re,

Ben, si tu peux séparrer en 3 clics la ligne, alors chapeau et je suis prenneur.
Mais pas de formules ou VBA.
Juste comme ça, tu as une ligne
012345789..............................aaaabbbb.............
Et avec 3 clics tu la sépare en sachant que le nombre de caractères par colonnes n'est pas le même.

je vois quand meme pas pourquoi vous avez passé autant de temps a faire ca meme ton dernier post ne sert à rien
Justement, j'ai dit que j'ai utiliser perl (en fait c'était une petite ligne de commande qui pese moins qu'un code VBA) pour ne pas passer de temps, mais tu as du mal à comprendre je vois.

Mon dernière post (si tu parles de celui avec les formules) alors il est bien mon difficile qu'un code VBA (qui suppose déjà apprendre de la programmation, quand ce n'est pas nécessaire).
Mais comme je l'ai déjà dit, le demandeur voulais soit en java soit en C.
0
NicoDisso Messages postés 230 Date d'inscription mardi 26 mai 2009 Statut Membre Dernière intervention 22 août 2009 32
5 juin 2009 à 09:23
oui c'est possible, bien sur.
ca dependra de ce qu'elle veut faire, mais pour moi, elle a juste à rafraichir les données pour que ca remplace ce qu'elle a en gardant le découpage qui va bien.
Apres si elle veut automaiser la mise ne page, c'est autre chose.
Elle peut tres bien enregistrer une macro lorsqu'elle fait l'actualisation des données et sa mise en page.
Apres elle n'aura plus qu'a lancer cette macro.

0
bien,

alors si c'est possible d'automatiser la mise en page. si c'est possible de le faire en vba, peux-tu m'indiquer les etapes et comment faire?

et pour la macro, si j'ai bien compris, elle servira a faire l'actualisation des données et la mise en page, c'est ca?
alors peux-u stp m'aider a le faire? comme ça j'aurais deux solutions et je verrais laquelle elle prefere.

toujours mieux d'avoir deux solutions qu'une seule.

Pour lami20j, je ne dirai pas que ta solution n'est pas bonne. je la garde quand meme
0
NicoDisso Messages postés 230 Date d'inscription mardi 26 mai 2009 Statut Membre Dernière intervention 22 août 2009 32
5 juin 2009 à 09:27
lami20j : je suis d'accord avec toi que ca ne sert a rien de taper du code si on peut faire autrement.
Maintenant, quand tu vois pour quoi c'est faire, c'est de toute facon bien décalé du sujet de base...
Moi, le code je l'avais fait pour autre chose donc vu l'intitulé du sujet ça pouvait avoir un interet, mais au final ca n'en avait pas.

0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
5 juin 2009 à 09:31
Re,

De toute façon l'important c'est de donner une solution.
Comme je suis au boulot, je n'ai pas accès d'aller sur cjoint pour récupérer son fichier, et pas non plus beaucoup de temps.
J'ai vu ton code et je sais que c'était pour autre chose.
Maintenant si tu peux lui fournir un solution VBA, ça ne me dérangéras pas du tout ;-), bien au contraire.
Toute solution sera bienvenue.
0
NicoDisso Messages postés 230 Date d'inscription mardi 26 mai 2009 Statut Membre Dernière intervention 22 août 2009 32
5 juin 2009 à 09:34
tu as juste a faire dans le menu
Outils/macro/nouvelle macro
la tu fais ok ( aul ieu de l'appeler macro1 tu l'appelle MAJ, par exemple )
ensuite tu fais tuout ton ptit boulot ( MAJ des données, MEP qui va bien ) et un fois que tu as tout fini tu cliques sur le bouton stop

ensuite pour lancer la macro tu fais
Outils/macro/macros tu selectionnes celle que tu viens de créer et automatiquement elle refait ce que tu viens de faire à l'identique.

Apres, tu peux avoir à y modifier des choses dans le code afin qu'elle s'adapte au nombre de lignes renvoyées selon la MEP que tu as faite
0
c'est quoi le MAJ des données? et le MEP?

Ok, j'ai bien compris, la macro, elle refait tout a ma place, mais est ce que je choisi le fichier avant de lancer la macro a chaque fois? Si c'est ca, ok.

mais y-a-t-il moyen quand on ouvre excel que la macro se lance automatiquement?

juste pour preciser, mon fichier comporte une centaine de ligne, donc si je doit copier ligne par ligne c'est pas evident alors
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
5 juin 2009 à 09:42
Re,

Regarde son message.
Le séparateur ; n'existe pas.
Il faut l'insérer dans la ligne après un certain nombre de caractères, qui n'est pas le même
la 1ère ; c'est après 8 caractères
la 2ème après 4
la 3ème après 4
la 4ème après 17
la 5ème après 9
etc.

Normalement une macro VBA avec left, mid c'est suffisant dans son cas
0
re lami20j,

alors si c'est possible de le faire sous VBA, et de choisir les caracteres pour chaque colonne, et si c'est possible de le faire sur plusieurs lignes, dans ce cas c'est plus facile, ca evite de passer d'un .txt en .csv et de copier le resultat le coller dans excel et de la mise en forme.

on peut tout simplement creer une feuille excel, preparer la mise en forme, et ensuite on lance le code qui recupere le fichier et qui insere dans les colonnes, non? nest-ce pas plus simple?


dans ce cas, lami20j, peux tu m'aider a le faire? jsai pas du tout utiliser VBA dans excel, et en plus de sa j'ai esxcel 2007.

Merci bcp, et puis si tu pense que c'est mieu de le faire a partir d'excel jsui partant aussi.

Si j'avai proposé JAVA ou C, c'est psk jpensai pas que excel pouvait le faire.
0
NicoDisso Messages postés 230 Date d'inscription mardi 26 mai 2009 Statut Membre Dernière intervention 22 août 2009 32
5 juin 2009 à 09:47
MAJ des données :
tu te places dans une des lignes importées de ton fichier, et tu fais clique droit, "actualiser les données", la excel te demande le fichier que tu veux importer, et il de garde ton découpage prédéfini.

MEP : Mise En Page
Tu fais la mise en page de tes cellules comme tu le veux.
par contre si tu sais que tu as au maximum 200 lignes dans ton fichier importé, tu fais ta macro en fonction de ca, comme ca tu n'auras pas à y retoucher apres.

lancement automatique, tu mets le code que ta macro a fait ( entre sub macro1 et nd sub ) dans le code de
thisworkbook.Workbook_Open

0
NicoDisso Messages postés 230 Date d'inscription mardi 26 mai 2009 Statut Membre Dernière intervention 22 août 2009 32
5 juin 2009 à 09:54
quand il importe, il peut dire que le texte est avec une "largeur fixe".
Du coup excel le ventile en fonction de la longueur des champs, le séparateur ne lui sert à rien au final
Ca ne colle pas avec le libelle tu topic, mais le resultat final correspondra..
0
pour nicodisco:


Peux tu me faire un debut du chemin, et m'expliquer les etapes? jsai pas trop utiliser excel. de plus j'ai excel2007.

jte remercie bcp
0
NicoDisso Messages postés 230 Date d'inscription mardi 26 mai 2009 Statut Membre Dernière intervention 22 août 2009 32
5 juin 2009 à 10:02
Bon ba les ptits gars amusez vous bien parce que la je sens que ca va me soualer.
Il n'y a absolument rien de compliquer a faire ca.
En plus excel 2007 n'a rien a voir avec ca, moi je suis en 2000 donc bon...
si tu veux tu me mets le fichier texte, ton fichier excel et une copie d'ecran de ce que tu veux sur cijoint et je te le fais.
sinon amusez vous bien ;-)
0
T'enerve pas, désolé, c'est juste un service.

bon voila, je t'envoi les fichier:

d'abor le fichier texte: https://www.cjoint.com/?gfkheHZupW
Le resultat que j'aimerais que ca me donne: https://www.cjoint.com/?gfkh25VAmr

pour precision, on ne m'a donné que quelque ligne (par rapport au fichier texte) mais normalement il y en a des centaines.

Merci bcp


PS: si tu remarque la difference entre le resultat que je veux et le fichier texte, il y a des zero dans le fichier texte qui ne sont pas dans le xls (c'est parce qu'on veut pas les prendre)

Jte remercie d'avance
désolé du dérangement
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
5 juin 2009 à 12:48
Re,

Oui, la solution VBA + Assistant Importation avec le découpage est là, je lui ai mis un +
Mais tu as bien gavé quand même ;-))), mais ça me permettra quand même de ne pas retester le code en C, j'ai dit plus haut que je suis un paresseux ;-)

En ce qui concerne la mise en forme je pense que tu as utilisé l'enregistrement de macro quand même ;-))
0
NicoDisso Messages postés 230 Date d'inscription mardi 26 mai 2009 Statut Membre Dernière intervention 22 août 2009 32
5 juin 2009 à 14:45
merci pour le +

et effectivement le code est tellement moche que c'est bien la macro qui le donne.
a la base, c'était pas ca le topic mais bon ;-)
vu qu'il rajoutait une colonne au milieu et quand plus il voulait un certain nombre de zero, voila quoi ...
0
NicoDisso Messages postés 230 Date d'inscription mardi 26 mai 2009 Statut Membre Dernière intervention 22 août 2009 32
8 juin 2009 à 12:36
Codeur, je pense qu'un merci aurait ete un minimum...
lami20j qui n'est meme pas le demandeur a meme pris la peine de noter le message...
0