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

Sauvegarde au format CSV

3 réponses
Avatar
SuperGolgoth
Bonjour à tous
Dans une macro VB, quand je veux sauvegarder une feuille avec la
methode suivante :
ActiveWorksheet.SaveAs Filename:="C:\fichier.csv", FileFormat:=xlCSV,
CreateBackup:=False
j'obtiens mon fichier avec comme separateur des , au lieu de ;
comment modifier cela ...?
Merci

3 réponses

Avatar
SuperGolgoth
Le 17/05/2006, SuperGolgoth a supposé :
Bonjour à tous
Dans une macro VB, quand je veux sauvegarder une feuille avec la methode
suivante :
ActiveWorksheet.SaveAs Filename:="C:fichier.csv", FileFormat:=xlCSV,
CreateBackup:úlse
j'obtiens mon fichier avec comme separateur des , au lieu de ;
comment modifier cela ...?
Merci


Je precise que quand je sauvegarde a partir d'excel 'enregistrer
sous...' ca fonctionne, j'ai des ;
mais a partir de la macro, j'ai des , ...

Avatar
JohnFuss
Bonjour,

de mémoire le format csv se base sur les options regionales du poste, il y a
un autre format de fichier plat de sortie qui lui utilise systématiquement
le ;, je ne sais plus lequel mais ça doit se retrouver facilement.

sinon utilise cette fonction que j'utilise, elle est un peu 'lourde' mais
assez paramètrable, tu y trouveras ton bonheur je suis sûr

Je reste à dispo si besoin

John

'---------------------------------------------------------------------------------------
' Function : WriteFileFromSheet As String
' Sujet : Ecrit un fichier avec une feuille excel (ou +ieurs)
' Renvoi : La taille du fichier en Ko ou "False" si erreur
' Exemple :
'---------------------------------------------------------------------------------------
' Param1 Def : NomFichier As String
' ------ Desc : Nom du fichier à créer
' Param2 Def : rep As String
' ------ Desc : Chemin du fichier à créer
' Param3 Def : Optional wb As String = ""
' ------ Desc : nom du classeur à mettre dans le fichier
' Param4 Def : Optional sh As Variant = ""
' ------ Desc : nom de la feuille à mettre dans le fichier
' ------ : peut contenir un array de nom de feuille à exporter
' ------ : très utile si on veut exporter plusieurs feuilles de même
format dans le même fichier
' Param5 Def : Optional Separator As String = ";"
' ------ Desc : Défini le séparateur entre les données
' Param6 Def : Optional RemplaceLeFichierSiExist As Boolean = True
' ------ Desc : Vrai si on veut écraser le fichier si il existe déja
' Param7 Def : Optional EnTete As Boolean = True
' ------ Desc : Vrai si on veut ecrire la ligne 1 dans le fichier sinon Faux
'---------------------------------------------------------------------------------------
'
Public Function WriteFileFromSheet(NomFichier As String, rep As String,
Optional Wb As String = "", Optional sh As Variant = "", Optional Separator
As String = ";", Optional RemplaceLeFichierSiExist As Boolean = True,
Optional EnTete As Boolean = True) As String
Dim CSV As Integer, fso As New FileSystemObject, j As Integer
Dim ra As Range, i As Integer, lgn As String, msg As String, FullMsg As
String

On Error Resume Next
If Wb = "" Then Wb = ActiveWorkbook.Name
If Not IsArray(sh) Then If sh = "" Then sh = ActiveSheet.Name
On Error GoTo WriteFileFromSheet_Error
sh = CArray(sh)
CSV = FreeFile
ChangeDirectory rep
If fso.FileExists(NomFichier) And RemplaceLeFichierSiExist Then
fso.DeleteFile NomFichier, True
ElseIf Not FileExists(NomFichier) Then
RemplaceLeFichierSiExist = True
End If
Open NomFichier For Append As #CSV
If EnTete And RemplaceLeFichierSiExist Then
For i = 1 To RSW("IV1", CStr(sh(0)), Wb).End(xlToLeft).Column
lgn = lgn & Cells(1, i) & Separator
Next
Print #CSV, Left(lgn, Len(lgn) - Len(Separator))
End If
On Error Resume Next
For j = LBound(sh) To UBound(sh)
For Each ra In GetRangeCol(CStr(sh(j)), Wb)
lgn = ""
msg = ""
For i = 1 To RSW("IV1", CStr(sh(j)), Wb).End(xlToLeft).Column
On Error Resume Next
lgn = lgn & ra.Offset(0, i - 1) & Separator
If Err.Number <> 0 Then msg = msg & vbLf & "'" & sh(j) &
"'!" & Replace(ra.Offset(0, i - 1).Address, "$", "")
Next
If msg = "" Then
Print #CSV, Left(lgn, Len(lgn) - Len(Separator))
Else
FullMsg = FullMsg & msg
End If
Next
Next
Close #CSV
If FullMsg = "" Then
WriteFileFromSheet = Round(fso.GetFile(MakeFileName(rep,
NomFichier)).Size / 1024, 0)
ElseIf MsgBox("Les cellules ci-dessous n'ont pas été traitées :" & vbLf
& "Les lignes dont elles sont issues n'ont pas été traitées." & vbLf &
"Cliquer sur 'Ok' pour créer le fichier." & FullMsg, vbOkCancel, "Problème
de création de fichier") = vbOk Then
WriteFileFromSheet = Round(fso.GetFile(MakeFileName(rep,
NomFichier)).Size / 1024, 0)
End If
Exit Function
WriteFileFromSheet_Error:
Close #CSV
WriteFileFromSheet = "False"
End Function

'GetRangeCol(CStr(sh(j)), Wb) sert à renvoyer un range contenant les cellule
de range("A2:A" & Range("A65536").end(xlup).row) sur la feuille donnée



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

Bonjour à tous
Dans une macro VB, quand je veux sauvegarder une feuille avec la methode
suivante :
ActiveWorksheet.SaveAs Filename:="C:fichier.csv", FileFormat:=xlCSV,
CreateBackup:úlse
j'obtiens mon fichier avec comme separateur des , au lieu de ;
comment modifier cela ...?
Merci




Avatar
Clément Marcotte
http://www.excelabo.net/xl/sortir.php#csv;,

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

http://www.excelabo.net/xl/sortir.php#csv2002


http://groups.google.com/groups?as_q=csv+point-virgule&num&scoring=r&hl=fr&as_epq=&as_oq=&as_eq=&as_ugroup=microsoft.public.fr.excel&as_usubject=&as_uauthors=&lr=&as_drrb=q&as_qdr=&as_mind=1&as_minm=1&as_miny81&as_maxd&as_maxm=5&as_maxy 06
"SuperGolgoth" a écrit dans le message de news:

Bonjour à tous
Dans une macro VB, quand je veux sauvegarder une feuille avec la methode
suivante :
ActiveWorksheet.SaveAs Filename:="C:fichier.csv", FileFormat:=xlCSV,
CreateBackup:úlse
j'obtiens mon fichier avec comme separateur des , au lieu de ;
comment modifier cela ...?
Merci