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 SubLe 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 SubIl 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