VBA - Export CSV qui modifie le séparateur de décimales

Bonjour,

Je cherche une solution à mon problème, pour lequel j'ai épluché une dizaine de forum mais rien n'abouti.
J'utilise Excel 365 FR, donc mes décimales sont des virgules.

J'ai des colonnes Excel qui contiennent des prix et des volumes avec des décimales. Exemple: 465,36 EUR
Je dois obtenir un CSV qui contient ces différentes données, mais vu que le format du logiciel qui utilisera ce CSV est différent, il faut que les séparateurs de décimales soient des points ==> 465.36

Pour l'export CSV, tout va bien.
Pour remplacer les virgules par des points pendant l'export, impossible:
1) j'ai tenté une macro "Remplace" grâce à l'enregistreur ==> ça ne fonctionne pas
2) J'ai tenté de convertir le nombre en texte puis remplacer virgule par point ==> ça fonctionne manuellement, mais pas via une macro.

Je suis totalement perdu sur comment faire, je suis débutant VBA.

Est-ce que quelqu'un sait comment faire en sorte que lorsque j'exporte en CSV, le format switch automatiquement en point et non plus des virgules?

merci pour votre aide,

Bonjour,

Déjà si tu es sous Mac je ne pourrai pas t'aider !

si ton séparateur décimal est la virgule, ton séparateur de colonne est la virgule ou le point virgule?

Bonjour,
Je suis sous windows 10

Le séparateur de colonne est le point-virgule ;

Sub test()
CreerCsv Sheets("Feuil1").UsedRange, Environ("temp") & "\test.csv"
End Sub
Sub CreerCsv(Palge As Range, Fichier As String)
Const Dec = ",", DeciCSV = ".", Col = ";"
Palge.Copy
With CreateObject("Scripting.FileSystemObject")
   With .OpenTextFile(Fichier, 2, True)
    .Write Replace(Replace(PressePapier, Dec, DeciCSV), vbTab, Col)
    .Close
   End With
End With
End Sub
Public Sub ClearPressePapier()
With CreateObject("htmlfile").parentwindow.clipboardData.clearData("Text"): End With

End Sub
Public Property Let PressePapier(valeur)
With CreateObject("htmlfile").parentwindow.clipboardData.SetData("Text", valeur): End With
End Property

Public Property Get PressePapier()
PressePapier = CreateObject("htmlfile").parentwindow.clipboardData.GetData("TEXT")
End Property

Edite:

Palge un compromis entre Plage et Page?????

Hello,

Merci pour ton code, j'ai testé mais le fichier se crée où ? je ne trouve pas.

Quand je colle le code dans le module, je modifie ma Feuil1 par CSV, ça me copie bien le tableau mais après il ne se passe rien.

et j'ai modifié Palge par Plage? je ne comprends pas

Environ("temp") & "\test.csv"

je l'ai mis dans le répertoire temp de Windows mais c'est à toi de choisir le répertoire et le nom du CSV!

tout comme il t'appartient de définir la plage source!

Sheets("Feuil1").UsedRange

dans le même répertoire que l'application par exemple

Thisworboock.path & "\test.csv"
CreerCsv Sheets("MyOnglet").UsedRange,Thisworboock.path & "\test.csv"

Incroyable, cela fonctionne parfaitement!

Merci énormément pour ton aide j'ai buté dessus plusieurs jours... vraiment merci!

Dernière petite question pour l'adaptation du format de sauvegarde:

Dim mySheet As Worksheet
Dim myPath As String
Dim myName As String
Dim myDate As Date

myDate = Date

myPath = "F:\\AAA\BBB\CCCC\"

myName = Format(myDate, "yyyymmdd") & "_Import.csv"

ActiveWorkbook.Sheets("CSV").Copy
With ActiveWorkbook
    .SaveAs Filename:=myPath & myName, FileFormat:=xlCSV, Local:=True
    .Close False
End With

J'utilisais ceci pour mettre dans un folder spécifique, mais comment l'adapter à ton code ?

CreerCsv ActiveWorkbook.Sheets("CSV").UsedRange, "F:\\AAA\BBB\CCCC\" & Format(Date, "yyyymmdd") & "_Import.csv"

Incroyable, cela fonctionne parfaitement!

c'était un peut l'idée!

Génial merci énormément!

Bonjour, sinon la virgule comme séparateur décimal n'a rien à voir avec la version excel FR ou non.

Excel utilise ce qui est définit dans le système windows.

Sinon vous décochez dans les options Excel et vous choisissez vous même le point ou la virgule à votre guise.

nouvelle image 9

Bonjour,

Il ne va quand même pas changer les options de sont excel sous prétexte que le logiciel qui utilise son CSV est américain ?

Personnellement c'est dans windows que j'ai indiqué le point comme séparateur de décimal. ( le point est au même endroit que les nombres sur le clavier).

Je ne suis pas américain pour autant.

Merci XmenPl, mais en effet, c'est un fichier partagé ça serait trop compliqué et chronophage de changer manuellement mes réglages à chaque utilisation du fichier...

Rechercher des sujets similaires à "vba export csv qui modifie separateur decimales"