Ecrire un fichier csv par VBA en choisissant le séparateur
Voici différentes solutions qui tiennent compte de la présence possible du ; comme simple signe de ponctuation normal dans ton texte et de la présence de chiffres.
sub ecrirelefichiertexteavecdespointsvirgules1()
'avec conversion des nombres en texte
Dim derniereligne As Integer, i As Integer
Dim j As Integer
Sheets("Feuil1").Select
derniereligne = [a65536].End(xlUp).Row
Open "lebeaufichiertexte.txt" For Output As 1
'Avec Print et points-virgules sans guillemets & Chr(34)
'Le séparateur dans le fichier est entre guillemets
'le séparateur VBA n'est pas entre guillemets
Print #1, Chr(34) & "Avec Print et points virgules" _
& " et sans guillemets" & Chr(34)
For i = 1 To derniereligne
Print #1, Cells(i, 1).Value; _
";"; Cells(i, 2).Value; _
";"; CStr(Cells(i, 3).Value); ";"; Cells(i, 4).Value
Next
Print #1, Chr(34) & "Avec Print, points-virgules et guillemets" _
& Chr(34)
For i = 1 To derniereligne
'chr(34) = guillemets
Print #1, Chr(34); Cells(i, 1).Value; Chr(34); ";"; _
Chr(34); Cells(i, 2).Value; Chr(34); ";"; _
Chr(34); CStr(Cells(i, 3).Value); Chr(34); ";"; _
Chr(34); Cells(i, 4).Value; Chr(34)
Next
'Avec Print et points-virgules
'Le séparateur dans le fichier est entre guillemets
'le séparateur VBA n'est pas entre guillemets
Print #1, Chr(34) & "Avec Print, points-virgules et guillemets" _
& Chr(34)
For i = 1 To derniereligne
Print #1, Chr(34); Cells(i, 1).Value; Chr(34); _
";", Chr(34); Cells(i, 2).Value; Chr(34) _
; ";", Chr(34); CStr(Cells(i, 3).Value); Chr(34), ";",
Chr(34); Cells(i, 4).Value; Chr(34)
Next
Close
end subsub ecrirelefichiertexteavecdespointsvirgules()
'sans conversion des nombres en texte
Dim derniereligne As Integer, i As Integer
Dim j As Integer
Sheets("Feuil1").Select
derniereligne = [a65536].End(xlUp).Row
Open "lebeaufichiertexte.txt" For Output As 1
'Avec Print et points-virgules sans guillemets & Chr(34)
'Le séparateur dans le fichier est entre guillemets
'le séparateur VBA n'est pas entre guillemets
Print #1, Chr(34) & "Avec Print et points virgules" _
& " et sans guillemets" & Chr(34)
For i = 1 To derniereligne
Print #1, Cells(i, 1).Value; _
";"; Cells(i, 2).Value; _
";"; Cells(i, 3).Value; ";"; Cells(i, 4).Value
Next
Print #1, Chr(34) & "Avec Print, points-virgules et guillemets" _
& Chr(34)
For i = 1 To derniereligne
'chr(34) = guillemets
Print #1, Chr(34); Cells(i, 1).Value; Chr(34); ";"; _
Chr(34); Cells(i, 2).Value; Chr(34); ";"; _
Cells(i, 3).Value; ";"; _
Chr(34); Cells(i, 4).Value; Chr(34)
Next
'Avec Print et points-virgules
'Le séparateur dans le fichier est entre guillemets
'le séparateur VBA n'est pas entre guillemets
Print #1, Chr(34) & "Avec Print, points-virgules et guillemets" _
& Chr(34)
For i = 1 To derniereligne
Print #1, Chr(34); Cells(i, 1).Value; Chr(34); _
";", Chr(34); Cells(i, 2).Value; Chr(34) _
; ";", Cells(i, 3).Value, ";", Chr(34); Cells(i, 4).Value;
Chr(34)
Next
Close
end subsub ecrirelefichiertexteavecdesvirgules()
Open "unbeaufichiertexte.txt" For Output As 1
Dim i As Integer, derniereligne As Integer
Sheets("Feuil1").Select
derniereligne = [a65536].End(xlUp).Row
'Avec Write
For i = 1 To derniereligne
Write #1, Cells(i, 1).Value; Cells(i, 2).Value; _
Cells(i, 3).Value; Cells(i, 4).Value
Next
'Avec Print et virgules
'Le séparateur dans le fichier est entre guillemets
'le séparateur VBA n'est pas entre guillemets
For i = 1 To derniereligne
Print #1, Chr(34); Cells(i, 1).Value; Chr(34); _
","; Chr(34); Cells(i, 2).Value; Chr(34); _
","; Cells(i, 3).Value; ","; Chr(34); Cells(i, 4).Value;
Chr(34)
Next
'Le séparateur dans le fichier est entre guillemets
'le séparateur VBA n'est pas entre guillemets
'sauf pour les points-virgulent qui collent les
'nom et les guillemets
For i = 1 To derniereligne
Print #1, Chr(34); Cells(i, 1).Value; Chr(34), ",", _
Chr(34); Cells(i, 2).Value; Chr(34); , _
",", Cells(i, 3).Value, ",", Chr(34); Cells(i, 4).Value;
Chr(34)
Next
Close
end subAuteur : Clément Marcotte
Mots clefs associés à cette page : CSV, virgule, point virgule
- Vous devez vous identifier ou créer un compte pour écrire des commentaires
