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 Sub

Je 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

Rechercher des sujets similaires à "csv enregistre macro separateur virgule"