Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Question tordue :-)

16 réponses
Avatar
OlivierT
Bonjour,

Sur une machine, je n'ai pas office d'installé.
J'ai un fichier CSV que je dois traiter pour l'enregistrer dans un fichier
TXT.
Comment lire un fichier CSV en VBS (ou autre) récupérer chaque valeur
(séparateur ;) pour les envoyer dans un fichier TXT ?

Merci,

Olivier

10 réponses

1 2
Avatar
~Jean-Marc~ [MVP]
Salut OlivierT,
tu nous disais :
Bonjour,

Sur une machine, je n'ai pas office d'installé.
J'ai un fichier CSV que je dois traiter pour l'enregistrer dans un
fichier TXT.
Comment lire un fichier CSV en VBS (ou autre) récupérer chaque valeur
(séparateur ;) pour les envoyer dans un fichier TXT ?


Il faut utiliser FileSystemObject pour créer un double traitement lecture
écriture.
( Set fso = WScript.CreateObject("Scripting.FileSystemObject") )

Du style (vite fait, non testé, juste pour voir le principe) :
( ForReading = 1 ForWriting = 2
srce = path complet du fichier à lire dest = path fichier à écrire )


Set fsrce=fso.OpenTextFile(srce, ForReading)
Set fdest=fso.OpenTextFile(dest, ForWriting,True)
End If
While Not fsrce.AtEndOfStream
line=fsrce.ReadLine
ALine = split(line,";")
For i = 0 To ubound(ALine)
fdest.WriteLine ALine(i)
Next
Wend
fdest.close
fsrce.close

nb : j'ai un trou de mémoire sur le ubound :
For i = 0 To ubound(ALine)
ou bien :
For i = 0 To ubound(ALine) - 1

@+

--
~Jean-Marc~ MVP Shell/User Fr
( Vista x86 Ultimate )
- http://msmvps.com/blogs/docxp/ -
- http://docxp.mvps.org -

Avatar
Gilles LAURENT
"OlivierT" a écrit dans le message
de
news:
| Bonjour,

Bonjour,

| Sur une machine, je n'ai pas office d'installé.
| J'ai un fichier CSV que je dois traiter pour l'enregistrer dans un
| fichier TXT.
| Comment lire un fichier CSV en VBS (ou autre) récupérer chaque valeur
| (séparateur ;) pour les envoyer dans un fichier TXT ?

Une version en batch :

+++ Usage
> Csv2Txt.cmd <CsvFilename>

+++ Exemple
> Csv2Txt.cmd test.csv > test.txt

--- Coupez ici : Csv2Txt.cmd ---
@echo off
setlocal enabledelayedexpansion
for /f "tokens=*" %%i in (%1) do (
set line=%%i& call :_split !line: =¨!
)
goto :eof
:_split
if "%1" neq "" (
set arg=%1& echo !arg:¨= !& shift
goto :_split
)
--- Coupez ici : Csv2Txt.cmd ---

--
Gilles LAURENT
http://glsft.free.fr
Avatar
jbongran
"~Jean-Marc~ [MVP]" a écrit dans le message de
news:
Salut OlivierT,
tu nous disais :
Bonjour,

Sur une machine, je n'ai pas office d'installé.
J'ai un fichier CSV que je dois traiter pour l'enregistrer dans un
fichier TXT.
Comment lire un fichier CSV en VBS (ou autre) récupérer chaque valeur
(séparateur ;) pour les envoyer dans un fichier TXT ?


Il faut utiliser FileSystemObject pour créer un double traitement lecture
écriture.
( Set fso = WScript.CreateObject("Scripting.FileSystemObject") )

Du style (vite fait, non testé, juste pour voir le principe) :
( ForReading = 1 ForWriting = 2
srce = path complet du fichier à lire dest = path fichier à
rire )


Set fsrce=fso.OpenTextFile(srce, ForReading)
Set fdest=fso.OpenTextFile(dest, ForWriting,True)
End If
While Not fsrce.AtEndOfStream
line=fsrce.ReadLine
ALine = split(line,";")
For i = 0 To ubound(ALine)
fdest.WriteLine ALine(i)
Next
Wend
fdest.close
fsrce.close

nb : j'ai un trou de mémoire sur le ubound :
For i = 0 To ubound(ALine)
ou bien :
For i = 0 To ubound(ALine) - 1


Pour t'ôter du doute, passes toi de la boucle ;-)
fdest.WriteLine Join(ALine, "")


Avatar
Gilles LAURENT
"jbongran" a écrit dans le message de
news:46713672$0$4997$
| Pour t'ôter du doute, passes toi de la boucle ;-)
| fdest.WriteLine Join(ALine, "")

Et pour le Fun uniquement :-)

--- Coupez ici : Csv2Txt.vbs ---
With CreateObject("Scripting.FileSystemObject")
.CreateTextFile (dest, True).WriteLine Join (Split ( _
.OpenTextFile (srce).ReadAll,";"), VbCrLf)
End With
--- Coupez ici : Csv2Txt.vbs ---

--
Gilles LAURENT
http://glsft.free.fr
Avatar
Fred
Dans : news:%,
Gilles LAURENT disait :
"jbongran" a écrit dans le message de
news:46713672$0$4997$
Pour t'ôter du doute, passes toi de la boucle ;-)
fdest.WriteLine Join(ALine, "")


Et pour le Fun uniquement :-)

--- Coupez ici : Csv2Txt.vbs ---
With CreateObject("Scripting.FileSystemObject")
.CreateTextFile (dest, True).WriteLine Join (Split ( _
.OpenTextFile (srce).ReadAll,";"), VbCrLf)
End With
--- Coupez ici : Csv2Txt.vbs ---


:-)

Tu fais du «obfuscated C» en vbs ?
http://www.ioccc.org/

(un petit lien passé par Michel (MCI) il y a quelques temps et dont on
ne se lasse pas !)


--
Fred
http://www.cerber mail.com/?3kA6ftaCvT (enlever l'espace)


Avatar
Gilles LAURENT
"Fred" a écrit dans le message de
news:%
| Tu fais du «obfuscated C» en vbs ?
| http://www.ioccc.org/
|
| (un petit lien passé par Michel (MCI) il y a quelques temps et dont on
| ne se lasse pas !)

ROTFL

--
Gilles LAURENT
http://glsft.free.fr
Avatar
Jacques Barathon [MS]
"OlivierT" wrote in message
news:
Bonjour,

Sur une machine, je n'ai pas office d'installé.
J'ai un fichier CSV que je dois traiter pour l'enregistrer dans un fichier
TXT.
Comment lire un fichier CSV en VBS (ou autre) récupérer chaque valeur
(séparateur ;) pour les envoyer dans un fichier TXT ?


Une version avec PowerShell pour faire bonne mesure :-) :

type fichier.csv | foreach {[String]::Join(" ",$_.Split(";"))} > fichier.txt

La question ne précisait pas quel format devraient prendre les données
envoyées dans le fichier TXT. J'ai assumé qu'elles devaient être simplement
séparées par un espace. La solution peut de toute façon être facilement
adaptée pour tout autre formatage.

J'ai également assumé que le fichier CSV utilisait le point-virgule comme
séparateur. C'est la norme en France. Si le fichier utilise un autre
séparateur, on peut là aussi le changer facilement en passant le bon
séparateur en paramètre à la méthode Split().

Jacques

Avatar
~Jean-Marc~ [MVP]
Salut Gilles LAURENT,
tu nous disais :
Et pour le Fun uniquement :-)

--- Coupez ici : Csv2Txt.vbs ---
With CreateObject("Scripting.FileSystemObject")
.CreateTextFile (dest, True).WriteLine Join (Split ( _
.OpenTextFile (srce).ReadAll,";"), VbCrLf)
End With
--- Coupez ici : Csv2Txt.vbs ---


Ah oui, joli. (mais peu lisible ;-) )

@+

--
~Jean-Marc~ MVP Shell/User Fr
( Vista x86 Ultimate )
- http://msmvps.com/blogs/docxp/ -
- http://docxp.mvps.org -

Avatar
~Jean-Marc~ [MVP]
Salut Jacques Barathon [MS],
tu nous disais :

Une version avec PowerShell pour faire bonne mesure :-) :


Que d'inspiration, messieurs ! :-)))

--
~Jean-Marc~ MVP Shell/User Fr
( Vista x86 Ultimate )
- http://msmvps.com/blogs/docxp/ -
- http://docxp.mvps.org -

Avatar
Gilles LAURENT
"~Jean-Marc~ [MVP]" a écrit dans le
message de
news:
|| Et pour le Fun uniquement :-)
||
|| --- Coupez ici : Csv2Txt.vbs ---
|| With CreateObject("Scripting.FileSystemObject")
|| .CreateTextFile (dest, True).WriteLine Join (Split ( _
|| .OpenTextFile (srce).ReadAll,";"), VbCrLf)
|| End With
|| --- Coupez ici : Csv2Txt.vbs ---
|
| Ah oui, joli. (mais peu lisible ;-) )

Poutant j'ai indenté :-)
Je vous l'accorde, c'est à proscrire. C'était juste pour vous taquiner !

--
Gilles LAURENT
http://glsft.free.fr
1 2