Convertir xls en csv avec séparateur ";"
greg
-
Normad Messages postés 112 Date d'inscription Statut Membre Dernière intervention -
Normad Messages postés 112 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai créé un macro pour convertir un fichier Excel en csv.
Elle marche :-) !
Le souci c'est que dans mon fichier csv, le séparateur est la virgule alors que je souhaiterais avoir un point virgule. :-(
Je me suis baladé sur déjà pas mal de forums où ce problème est parfois évoqué : apparemment VBA est en anglais (et utilise la virgule) tandis qu'Excel est en français (et utilise le point-virgule).
J'ai donc ajouté à mon code (ActiveWorkbook.SaveAs Filename:="nom_du_fichier.csv", _
FileFormat:=xlCSV, CreateBackup:=False) la commande "local:=True" (ce qui donne : ActiveWorkbook.SaveAs Filename:="nom_du_fichier.csv", _
FileFormat:=xlCSV, CreateBackup:=False, local:=True) comme cela est conseillé sur les forums, afin de prendre en compte la langue de mon ordinateur.
Mais ça ne marche toujours pas... :-(
Quelqu'un aurait d'autres idées ?
Merci d'avance.
J'ai créé un macro pour convertir un fichier Excel en csv.
Elle marche :-) !
Le souci c'est que dans mon fichier csv, le séparateur est la virgule alors que je souhaiterais avoir un point virgule. :-(
Je me suis baladé sur déjà pas mal de forums où ce problème est parfois évoqué : apparemment VBA est en anglais (et utilise la virgule) tandis qu'Excel est en français (et utilise le point-virgule).
J'ai donc ajouté à mon code (ActiveWorkbook.SaveAs Filename:="nom_du_fichier.csv", _
FileFormat:=xlCSV, CreateBackup:=False) la commande "local:=True" (ce qui donne : ActiveWorkbook.SaveAs Filename:="nom_du_fichier.csv", _
FileFormat:=xlCSV, CreateBackup:=False, local:=True) comme cela est conseillé sur les forums, afin de prendre en compte la langue de mon ordinateur.
Mais ça ne marche toujours pas... :-(
Quelqu'un aurait d'autres idées ?
Merci d'avance.
A voir également:
- Convertir xls en csv avec séparateur ";"
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Convertir youtube en mp3 avec audacity - Guide
- Convertir epub en kindle - Guide
- Convertir kindle en epub - Guide
- Convertir audio en texte word - Guide
1 réponse
Une solution de mon cru ci-dessous, mais qui nécessite de préciser la plage à enregistrer dans le fichier CSV
Private Declare Function GetTempPath Lib "kernel32" Alias _ "GetTempPathA" (ByVal nBufferLength As Long, ByVal lpBuffer _ As String) As Long Private Sub SaveAsCsv() Dim Value As Integer, Buf As String * 128, strligne() As String Dim Ligne As Long, Col As Integer, Fichier As String Dim f As Long, t As Variant, I As Integer, Test As String, Compte As Long On Error GoTo Fin Value = GetTempPath(128, Buf) 'Emplacement d'enregistrement (ici répertoire temporaire avec nom de fichier d'origine) Fichier = Left(Buf, Value) & "\" & ThisWorkbook.Name & ".csv" 'Plage à enregister pour l'exemple "A1:G20" ReDim strligne(20) 'nombre de lignes For Ligne = 1 To 20 'ligne 1 à 20 For Col = 1 To 7 'colonne A à G strligne(Ligne) = strligne(Ligne) & ";" & Cells(Ligne, Col) Next Col Next Ligne On Error Resume Next If Dir(Fichier) <> "" Then Kill Fichier If Dir(Fichier) <> "" Then MsgBox "Le fichier de résultat ne peut être remplacé car il est déjà ouvert", vbCritical Exit Sub End If On Error GoTo Fin f = FreeFile Open Fichier For Append As #f For Each t In strligne Print #f, CStr(t) Compte = Compte + 1 Next t Close #f MsgBox "Le fichier a bien été enregistré sous " & Fichier, vbInformation Exit Sub Fin: Close #f MsgBox Error End Sub