OVH Cloud OVH Cloud

CSV et options regionales

4 réponses
Avatar
titeuf24
Bonjour a tous,

j'ai un gros souci. Je dois generer des dizaines de fichiers csv pour les
uploader dans un systeme. J'ai donc utilise l'enregistreur de macro pour voir
comment on faisait et j'ai ecrit la ligne de code suivante:

ActiveWorkbook.SaveAs Filename:= _
place & ctry & "_MTFC.csv" _
, FileFormat:=xlCSV, CreateBackup:=False

Le probleme c'est que je veux des csv separes par des ";" et que la macro
genere des fichiers ou les donnees sont separees par des ",". Pourtant, quand
j'ai fait la manip pour voir le code, les fichiers crees etaient corrects.

Quelqu'un pourrait-il me depanner parce que la, je ne vois pas quoi faire...

4 réponses

Avatar
FILK
Bonjour Titeuf,

tu peux utiliser la méthode "file scripting object". (ne pas oublier de
cocher la référence dans outilreferences)

Exemple trouvé sur le net
(http://www.sloppycode.net/Reference/FSO/Ref-145.html):

Set fso = CreateObject("Scripting.FileSystemObject")
Set folderObject = fso.GetFolder(Server.MapPath("fso") & "")
Set textStreamObject = folderObject.CreateTextFile("testfile.txt",true,false)

textStreamObject.WriteLine("a new text file")
textStreamObject.Close ' remember to close it so that it writes the file

Set textStreamObject = Nothing
Set folderObject = Nothing
Set fso = Nothing

' Creates a text file called "testfile.txt" in the folder, overwrites if it
exists
' and sets it to ascii (false to indicate not unicode). Then write "a new
text file"
' to the testfile.txt, and closes it
' NB remember the trailing slash in the GetFolder method

J'ai déjà utilisé dans ton cas cette méthode, qui je l'admets est bien plus
longue que l'enregistrement.

N'y aurait-il pas moyen avec cette méthode d'ouvrir le fichier et de
remplacer les ; par des , ?

Cette méthode est extra : copier-coller 100 fois plus fiable que le
presse-papier windows, info sur fichier/repertoire existants, ...

Bon courége.

Philippe.


Bonjour a tous,

j'ai un gros souci. Je dois generer des dizaines de fichiers csv pour les
uploader dans un systeme. J'ai donc utilise l'enregistreur de macro pour voir
comment on faisait et j'ai ecrit la ligne de code suivante:

ActiveWorkbook.SaveAs Filename:= _
place & ctry & "_MTFC.csv" _
, FileFormat:=xlCSV, CreateBackup:úlse

Le probleme c'est que je veux des csv separes par des ";" et que la macro
genere des fichiers ou les donnees sont separees par des ",". Pourtant, quand
j'ai fait la manip pour voir le code, les fichiers crees etaient corrects.

Quelqu'un pourrait-il me depanner parce que la, je ne vois pas quoi faire...


Avatar
titeuf24
Salut Phillipe,

merci de ton aide, mais je dois avouer que je ne suis pas bien sur de
comprendre comment je suis sense utiliser la methode que tu indiques. Je suis
un autodidacte de VBA et la, je crois que ca me passe un peu au dessus de la
tete.

Si tu as 5 minutes pour developper ton exemple, ca m'interesse, mais sache
que j'ai trouve une solution un peu moins "propre" (je cree tous les
fichiers, mais je ne les ferme pas, puis je ferme Excel manuellement et je
mets "sauver tous" et ca me les sauve au bon format. Il faut juste que je
clique environ 60 fois pour oui).

Merci de ton aide en tous les cas,

Christophe.


Bonjour Titeuf,

tu peux utiliser la méthode "file scripting object". (ne pas oublier de
cocher la référence dans outilreferences)

Exemple trouvé sur le net
(http://www.sloppycode.net/Reference/FSO/Ref-145.html):

Set fso = CreateObject("Scripting.FileSystemObject")
Set folderObject = fso.GetFolder(Server.MapPath("fso") & "")
Set textStreamObject = folderObject.CreateTextFile("testfile.txt",true,false)

textStreamObject.WriteLine("a new text file")
textStreamObject.Close ' remember to close it so that it writes the file

Set textStreamObject = Nothing
Set folderObject = Nothing
Set fso = Nothing

' Creates a text file called "testfile.txt" in the folder, overwrites if it
exists
' and sets it to ascii (false to indicate not unicode). Then write "a new
text file"
' to the testfile.txt, and closes it
' NB remember the trailing slash in the GetFolder method

J'ai déjà utilisé dans ton cas cette méthode, qui je l'admets est bien plus
longue que l'enregistrement.

N'y aurait-il pas moyen avec cette méthode d'ouvrir le fichier et de
remplacer les ; par des , ?

Cette méthode est extra : copier-coller 100 fois plus fiable que le
presse-papier windows, info sur fichier/repertoire existants, ...

Bon courége.

Philippe.


Bonjour a tous,

j'ai un gros souci. Je dois generer des dizaines de fichiers csv pour les
uploader dans un systeme. J'ai donc utilise l'enregistreur de macro pour voir
comment on faisait et j'ai ecrit la ligne de code suivante:

ActiveWorkbook.SaveAs Filename:= _
place & ctry & "_MTFC.csv" _
, FileFormat:=xlCSV, CreateBackup:úlse

Le probleme c'est que je veux des csv separes par des ";" et que la macro
genere des fichiers ou les donnees sont separees par des ",". Pourtant, quand
j'ai fait la manip pour voir le code, les fichiers crees etaient corrects.

Quelqu'un pourrait-il me depanner parce que la, je ne vois pas quoi faire...




Avatar
Clément Marcotte
Bonjour,

Jette un oeil là-dessus:

http://www.excelabo.net/xl/sortir.php#csv;,http://www.excelabo.net/xl/sortir.php#csv;,


"titeuf24" a écrit dans le message de
news:
Salut Phillipe,

merci de ton aide, mais je dois avouer que je ne suis pas bien sur de
comprendre comment je suis sense utiliser la methode que tu indiques. Je
suis
un autodidacte de VBA et la, je crois que ca me passe un peu au dessus de
la
tete.

Si tu as 5 minutes pour developper ton exemple, ca m'interesse, mais sache
que j'ai trouve une solution un peu moins "propre" (je cree tous les
fichiers, mais je ne les ferme pas, puis je ferme Excel manuellement et je
mets "sauver tous" et ca me les sauve au bon format. Il faut juste que je
clique environ 60 fois pour oui).

Merci de ton aide en tous les cas,

Christophe.


Bonjour Titeuf,

tu peux utiliser la méthode "file scripting object". (ne pas oublier de
cocher la référence dans outilreferences)

Exemple trouvé sur le net
(http://www.sloppycode.net/Reference/FSO/Ref-145.html):

Set fso = CreateObject("Scripting.FileSystemObject")
Set folderObject = fso.GetFolder(Server.MapPath("fso") & "")
Set textStreamObject =
folderObject.CreateTextFile("testfile.txt",true,false)

textStreamObject.WriteLine("a new text file")
textStreamObject.Close ' remember to close it so that it writes the file

Set textStreamObject = Nothing
Set folderObject = Nothing
Set fso = Nothing

' Creates a text file called "testfile.txt" in the folder, overwrites if
it
exists
' and sets it to ascii (false to indicate not unicode). Then write "a new
text file"
' to the testfile.txt, and closes it
' NB remember the trailing slash in the GetFolder method

J'ai déjà utilisé dans ton cas cette méthode, qui je l'admets est bien
plus
longue que l'enregistrement.

N'y aurait-il pas moyen avec cette méthode d'ouvrir le fichier et de
remplacer les ; par des , ?

Cette méthode est extra : copier-coller 100 fois plus fiable que le
presse-papier windows, info sur fichier/repertoire existants, ...

Bon courége.

Philippe.


Bonjour a tous,

j'ai un gros souci. Je dois generer des dizaines de fichiers csv pour
les
uploader dans un systeme. J'ai donc utilise l'enregistreur de macro
pour voir
comment on faisait et j'ai ecrit la ligne de code suivante:

ActiveWorkbook.SaveAs Filename:= _
place & ctry & "_MTFC.csv" _
, FileFormat:=xlCSV, CreateBackup:úlse

Le probleme c'est que je veux des csv separes par des ";" et que la
macro
genere des fichiers ou les donnees sont separees par des ",". Pourtant,
quand
j'ai fait la manip pour voir le code, les fichiers crees etaient
corrects.

Quelqu'un pourrait-il me depanner parce que la, je ne vois pas quoi
faire...






Avatar
michdenis
Bonjour titeuf24,

Quand tu enregstres une feuille de calcul sous la forme d'un fichier .csv, cela ne devrait causer aucune difficulté.
Même chose si tu ouvres un fichier .csv à l'aide du menu Excel ou par un double-clic dans la fenêtre de l'explorateur window`.
Excel sait très bien faire cela.

Le problème est lorsque tu le fais par macro. En vba, tout est basé sur les paramètres américains. Et dans cette fenêtre,
c'est la virgule qui règne en roi et maître. La conséquence, si tu utilises une procédure VBA pour créer tes fichiers csv ou
les ouvrir, tu vas être au prise avec la virgule.

Si tu as une version Excel 2002 ou 2003, les méthodes Workbooks.SaveAs et Workbooks.Open ont un paramêtre "Local"
auquel tu peux affecter la valeur "True". Cela va solutionner ton problème. L'aide d'excel sur ces 2 méthodes est claire.

Si ta version excel est plus vieille, tu dois utiliser une des façons de faire proposer.


Salutations!


"titeuf24" a écrit dans le message de news:

Bonjour a tous,

j'ai un gros souci. Je dois generer des dizaines de fichiers csv pour les
uploader dans un systeme. J'ai donc utilise l'enregistreur de macro pour voir
comment on faisait et j'ai ecrit la ligne de code suivante:

ActiveWorkbook.SaveAs Filename:= _
place & ctry & "_MTFC.csv" _
, FileFormat:=xlCSV, CreateBackup:úlse

Le probleme c'est que je veux des csv separes par des ";" et que la macro
genere des fichiers ou les donnees sont separees par des ",". Pourtant, quand
j'ai fait la manip pour voir le code, les fichiers crees etaient corrects.

Quelqu'un pourrait-il me depanner parce que la, je ne vois pas quoi faire...