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 ?
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 -
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 -
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 -
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
"OlivierT" <OlivierT@discussions.microsoft.com> a écrit dans le message
de
news:BE8742E4-64FA-42E8-8509-D5B8D7ED11C5@microsoft.com
| 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 ---
"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
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, "")
"~Jean-Marc~ [MVP]" <doc.j-m.OTER@ouanadoudou.fr> a écrit dans le message de
news: 0466028B-BD33-402D-9C0D-387C01C9B8B2@microsoft.com...
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, "")
"~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, "")
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
"jbongran" <jbongrand@nrg.fr> a écrit dans le message de
news:46713672$0$4997$426a74cc@news.free.fr
| 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 ---
"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)
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
"Fred" <foleide@libre.france> a écrit dans le message de
news:%23AuNiWorHHA.884@TK2MSFTNGP02.phx.gbl
| 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" 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
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
"OlivierT" <OlivierT@discussions.microsoft.com> wrote in message
news:BE8742E4-64FA-42E8-8509-D5B8D7ED11C5@microsoft.com...
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().
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
~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 -
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 -
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 -
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
"~Jean-Marc~ [MVP]" <doc.j-m.OTER@ouanadoudou.fr> a écrit dans le
message de
news:3D7863CD-BE3D-4470-9EF9-D71E608DDFFA@microsoft.com
|| 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 !
"~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 !