Ecrire un fichier csv par VBA en choisissant le séparateur

Comment écrire en VBA un fichier csv en utilisant le ; comme 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 sub
sub 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 sub
sub 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 sub

Auteur :

Mots clefs associés à cette page : , ,