CSV enregistré par macro : séparateur virgule
Bonjour à tous,
Malgré mes différentes recherches sur le sujet je me tourne vers vous pour un problème auquel je n'ai pour l'instant trouvé aucun remède...
En temps normal l'enregistrement de fichiers CSV se fait avec le séparateur " ; " mais bizarrement je me rends compte qu'en utilisant la macro citée ci-dessous le séparateur n'est plus " ; " mais devient " , " ce qui rend impossible l'import que je dois réaliser avec ce fichier CSV.
La macro me sert à copier les données depuis une feuille de calcul, créer un nouveau classeur, et coller les données en vue de l'enregistrement de ce classeur en format CSV :
Sub IMPORT_FILE()
'Copie des données
Range("TABLEARTICLE").Select
Selection.Copy
'Création d'un nouveau classeur
Workbooks.Add
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'Collage des données
Range("A1").Select
Application.CutCopyMode = False
'Suppression des feuilles 2 et 3
Sheets("Feuil2").Activate
Sheets(Array("Feuil2", "Feuil3")).Select
Application.DisplayAlerts = False
ActiveWindow.SelectedSheets.Delete
Application.DisplayAlerts = True
'Ouverture de la fenêtre d'enregistrement
Application.Dialogs(xlDialogSaveAs).Show
End SubJe constate que le simple fait d'ouvrir la boîte de dialogue "Enregistrer sous" par macro génère des séparateurs " , " au lieu du traditionnel point-virgule...
Si j'enlève la fonction Application.Dialogs(xlDialogSaveAs).Show et que je fais manuellement "Fichier > Enregistrer sous > ..." alors le séparateur sera bien " ; "
Savez-vous pourquoi ? Et comment est-il possible d'y remédier ?
(par contre j'ai vu que pas mal de monde cherchait à avoir des CSV avec des virgules en guise de séparateur, donc je leur conseille vivement de passer par cette macro ^^.. Malheureusement ce n'est pas du tout mon souhait !)
Merci d'avance
Benoit
Bonjour,
Une recherche sur ce forum m'a permis de trouver une généreuse participation de galopin01
https://forum.excel-pratique.com/excel/exporter-simplement-une-feuille-en-csv-sep-t25109.html
Dans le code d'origine, je n'ai modifié que la plage à exporter : Range("TABLEARTICLE")
Par contre, à chaque exécution, le fichier cible est écrasé s'il n'est pas dynamique
Le nom du fichier cible est à adapter ... il pourrait être dynamique.
À voir si ça convient ...
Sub RegCSV()
Dim Plage As Object, oL As Object, oC As Object, Tmp As String, Sep$
Sep = ";"
Set Plage = ActiveSheet.Range("TABLEARTICLE")
Open "NomEtCheminFichier.csv" For Output As #1 ' Nom du fichier à adapter
For Each oL In Plage.Rows
Tmp = ""
For Each oC In oL.Cells
Tmp = Tmp & CStr(oC.Text) & Sep
Next
Print #1, Tmp
Next
Close
End Sub Gelinotte