[Excel vba]enregistrement au format csv [Résolu/Fermé]

Signaler
Messages postés
1227
Date d'inscription
jeudi 29 juillet 2004
Statut
Contributeur
Dernière intervention
25 novembre 2013
-
 david -
Bonjour,

J'utilise le code suivant :
Dim chemin
chemin = ThisWorkbook.Path & ""
ActiveWorkbook.SaveAs Filename:= _
chemin & "nomfichier.csv", FileFormat:=xlCSV, CreateBackup:=False
Mais excel me génere un fichier csv avec "," comme séparateur au lieu de ";". Quand je fais la même opération manuellement, le séparateur est bien ";" !!??

Quelqu'un à une idée ?

Merci de votre aide,

Tom

8 réponses

Bonjour,

J'ai eu le même souci de mon côté avec des macros Excel 200 qui ne fonctionne plus sous 2003.

Tout simplement car dans l'instruction SAVEAS, il y a une nouveau paramètre nommé 'local'

Il faut le mettre à TRUE pour qu'il prenne en considération les options langue d'excel.

Sinon, ilprends les options langues de Visual Basic.

Et souvent Excel est en français, donc avec un séparateur ;
Alors que VBA est en anglais avec séparateur ,.

Pour moi cela a fonctionné

voici la ligne VBA pour Excel2003 :
ActiveWorkbook.SaveAs Filename:=fname2, FileFormat:=xlCSV, CreateBackup:=False, local:=True

voici la ligne pour Excel2000:
ActiveWorkbook.SaveAs Filename:=fname2, FileFormat:=xlCSV, CreateBackup:=False
45
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 56962 internautes nous ont dit merci ce mois-ci

tin de merde ce truc ! 2jours de boulot a chercher et tu me donne la solution. J'aurais du y penser avant ! Un grand merci Juillet45 ca fonctionne.
Merci tout plein ! Quel plaisir de trouver les réponses à nos problèmes aussi vite ! Vous nous faites gagner tellement de temps !
Bravo ca marche parfaitement
Merci beaucoup Juillet45.
Pas facile à trouver, avec l'aide excel qui renvoie sur le site "fourre tout" ...
En modifiant les paramètres régionaux de windows cette méthode me permet aussi de remplacer le séparateur ";" par un pipe "|" ce qui pour moi est plus pratique.
local:= true et paramètre= ; dans le panneau de config. ne suffisent pas.
par contre on notera que
1-on lance la macro à partir du fichier monfichier.xls
2-Le fichier est désormais ouvert sous monfichier.csv (mais toujours avec du format xls (couleurs, onglets, ...)
3-on demande la fermeture du fichier
..et là il faut répondre à 3 questions mini pour s'en sortir.
4-après plusieurs essais on note que si on confirme correctement toutes les demandes relatives à l'enregistrement on finit par avoir un csv avec 'point-virgule' (que Excel sait reconnaitre à l'ouverture) (ce qui n'est pas le cas si on part du principe que le saveas a bien finit son boulot et que l'on répond aux questions en ce sens)

Solution de contournement après le saveas --> 3 lignes en exclusivité mondiale sur ce forum :

Application.DisplayAlerts = False
ActiveWorkbook.Close
Application.DisplayAlerts = True
Messages postés
1227
Date d'inscription
jeudi 29 juillet 2004
Statut
Contributeur
Dernière intervention
25 novembre 2013
429
Bonjour,

pb résolu :
Sub SaveAsCSV(période)
Dim Range As Object, Line As Object, Cell As Object
Dim StrTemp, chemin As String

Dim Separateur As String
chemin = ThisWorkbook.Path & ""
Separateur = ";"
Set Range = ActiveSheet.UsedRange

Open chemin & "JDEreport" & période & ".csv" For Output As #1
For Each Line In Range.Rows
StrTemp = ""
For Each Cell In Line.Cells
StrTemp = StrTemp & CStr _
(Cell.Text) & Separateur
Next
Print #1, StrTemp '= " "
Next
Close
End Sub

Merci qd même,

Tom
bonjour,
J'ai exactement ce code là dans un programme en Excel 97-2003 ... en office 2010, cela ne fonctionne plus !
que faire ?
merci de vos réponses
dans les options régionales du panneau de config, puis dans l'ongelet sélectionn, personnalisé, il y a le choix du caractère
ET... également avoir lu le message nobody (20/04/2011). Si l'on ne désactive pas le displayalerts et que l'on répond mal aux questions d'enregistrement Excel va réenregistrer sur le fichier avec le séparateur , au lieu de ;.

Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=DeskPath & "\export.csv", FileFormat:=xlCSV, CreateBackup:=False, local:=True
ActiveWorkbook.Close
Application.DisplayAlerts = True
Messages postés
1227
Date d'inscription
jeudi 29 juillet 2004
Statut
Contributeur
Dernière intervention
25 novembre 2013
429
Merci pour ta réponse mais le pb est que j' ai absolument besoin de ";" comme séparateur pour un upload ultérieur. QQ1 connait-il le moyen de choisir le séparateur à l'enregistrement par macro au format csv ???

Merci
bonne réponse dans saveas
- il faut le local:=true en parametre
- et avoir bien paramétré dans les paramètres régionaux le séparateur de liste en ";"


merci
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 107
bonjour

dans vba lorsque tu mets une formule par exemple :

ActiveCell.FormulaR1C1 = SI(C7="";"";RANG(C7;C$3:C$27;0))

elle ne fonctionne pas.

mais celle ci fonctionne :

ActiveCell.FormulaR1C1 = SI(C7="","",RANG(C7,C$3:C$27,0))

car vba ne connait pas ; et exige ,

de toute façon si ton fichier CSV est avec virgule,
cela ne l'empêche pas de fonctionner.