Changer le séparateur de données d'un fichier CSV

Bonjour,

Je voudrais à partir d'une macro excel ouvrir un fichier CSV puis changer le séparateur de données du fichier en séparateur virgule.

Je peux le faire manuellement en allant dans l'onglet Données --> Données externes -> Fichier texte --> je sélectionne mon fichier CSV --> et je coche le séparateur virgule --> terminer.

J'ai essayé avec l'enregistreur de macro mais cela ne fonctionne pas quand j'exécute.

J'aiensuite essayé d'adapter un code trouvé sur ce forum mais ça ne semble pas fonctionner.

Code :

Sub separateur_virgule_CSV()
Dim WbkCsv As Workbook
Dim NewFichCSV

NewFichCSV = Application.GetOpenFilename("Fichiers Csv,*.csv")
    If Not NewFichCSV = False Then
        Set WbkCsv = Workbooks.Open(Filename:=NewFichCSV, Local:=True)
    End If

Workbooks.OpenText Filename:=NewFichCSV, Origin:=xlWindows, _
                StartRow:=1, DataType:=xlDelimited, Semicolon:=True, Comma:=True
End Sub

Le code s'exécute bien. Le fichier CSV s'ouvre mais le séparateur virgule n'est pas mis.

Si quelqu'un a une solution je suis preneur.

Bonne journée à tous !

Tu n'as bas besoin de charger le fichier CSV pour changer son séparateur. Dans cet exemple, on change le séparateur du fichier donnees.csv et on sauvegarde le fichier sous le nom donnees2.csv.

Option Explicit

Sub Macro1()
    Dim f1 As Byte, f2 As Byte, ligne As String

    f1 = FreeFile
    f2 = f1 + 1

    Open ThisWorkbook.Path & "\" & "donnees.csv" For Input As #f1
        Open "donnees2.csv" For Output As #f2
            While Not EOF(f1)
                Line Input #f1, ligne
                ligne = Replace(ligne, ";", ",")
                Print #f2, ligne
            Wend
        Close #f2
    Close #f1
    MsgBox "Terminé."
End Sub

Il faudra par prudence scanner d'abord le fichier source pour s'assurer que le " ; " n'est pas utilisé dans le tableau.

Bonjour Muzan et Optimix joli le code sans charger le csv

J'ai fais à la suite de Muzan.

Sub separateur_virgule_CSV()
Dim WbkCsv As Workbook
Dim NewFichCSV

NewFichCSV = Application.GetOpenFilename("Fichiers Csv,*.csv")
    If Not NewFichCSV = False Then
        Set WbkCsv = Workbooks.Open(Filename:=NewFichCSV, Local:=True)
    End If

Workbooks.OpenText Filename:=NewFichCSV
Columns("A:A").Select
    Selection.Replace What:=";", Replacement:=",", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    ActiveWorkbook.Save
    ActiveWindow.Close

End Sub
Rechercher des sujets similaires à "changer separateur donnees fichier csv"