Format cellules csv

bonjour,

dans la macro ci dessous (merci galopin01)

est il possible de conserver les formats des cellules d'origine ?

Sub csvv1()
Dim Tablo, iR%, i%, Tmp$, Sep$
'Dim iR As Integer, i As Integer, Tmp As String, Sep As String, Tablo

With Sheets(1)                    'On travaille directement sur la feuille export

    Sep = ";" 'ou ","
    iR = .Range("A65500").End(xlUp).Row  'Détermine la dernière ligne
    Tablo = .Range("A1:F" & iR)          'Mémorise le tout dans un tableau

     Open ThisWorkbook.Path & "\toto" & Format(Date, "dd-mmmm-yyyy") & "_" & Format(Time, "hh-mm") & ".csv" For Output As #1

    For i = 1 To iR
      If Tablo(i, 6) <> "" Then          'Recopie uniquement les lignes du tableau <> ""
     Tmp = ""
      For k = 1 To 6
      Tmp = Tmp & CStr(Tablo(i, k)) & Sep
      Next
      End If
    Print #1, Tmp
    Next

    DoEvents
    MsgBox "C'est fini !"
    Close #1

End With
End Sub

cordialement

re bonjour,

j'ai essayé de faire autrement pour mettre le format des 2 colonnes concernés en réouvrant le csv et le modifier une fois créé

et le résultat n'est....pas bon du tout...

Sub csvv2()
Dim Tablo, iR%, i%, Tmp$, Sep$

With Sheets(1)                    'On travaille directement sur la feuille export

    Sep = ","
    iR = .Range("A65500").End(xlUp).Row  'Détermine la dernière ligne
    Tablo = .Range("A1:D" & iR)          'Mémorise le tout dans un tableau
    'Open "Tournees-vracs.csv" For Output As #1
    'Open ThisWorkbook.Path & "\toto.csv" For Output As #1
     Open ThisWorkbook.Path & "\toto" & ".csv" For Output As #1
    For i = 1 To iR
      If Tablo(i, 4) <> "" Then          'Recopie uniquement les lignes du tableau <> ""
     Tmp = ""
      For k = 1 To 4
      Tmp = Tmp & CStr(Tablo(i, k)) & Sep
      Next
      End If
    Print #1, Tmp
    Next
    DoEvents
    MsgBox "C'est fini !"
    Close #1

End With
Workbooks.Open Filename:= _
 ThisWorkbook.Path & "\toto" & ".csv"
    Columns("C:C").NumberFormat = "#,##0"
    Columns("D:D").Select
    Selection.NumberFormat = "m/d/yyyy"
    Selection.Replace What:="/", Replacement:=".", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Selection.NumberFormat = "General"
    Range("C6").Select
End Sub

là je suis un peu perdu

si quelqu'un a déjà eu le problème merci d'avance

bonsoir,

essaie ceci

Sub csvv2()
Dim Tablo, iR%, i%, Tmp$, Sep$
Dim formatxls(4)

With Sheets(1)                    'On travaille directement sur la feuille export
 For i = 1 To 4
  formatxls(i) = .Cells(2, i).NumberFormat
 Next i
    Sep = ","
    iR = .Range("A65500").End(xlUp).Row  'Détermine la dernière ligne
   Tablo = .Range("A1:D" & iR)          'Mémorise le tout dans un tableau
   'Open "Tournees-vracs.csv" For Output As #1
   'Open ThisWorkbook.Path & "\toto.csv" For Output As #1
    Open ThisWorkbook.Path & "\toto" & ".csv" For Output As #1
    For i = 1 To iR
      If Tablo(i, 4) <> "" Then          'Recopie uniquement les lignes du tableau <> ""
    Tmp = ""
      For k = 1 To 4
      Select Case UCase(formatxls(k))
      Case "GENERAL"
      Tmp = Tmp & CStr(Tablo(i, k)) & Sep
      Case Else
      Tmp = Tmp & Format(Tablo(i, k), formatxls(k)) & Sep
      End Select
      Next
      End If
    Print #1, Tmp
    Next
    DoEvents
    MsgBox "C'est fini !"
    Close #1

End With
End Sub

MERCI h2so4

c'est super!!

j'y étais depuis un moment !!

une dernière petite question , le csv est comme il faut mais juste un petit détail

si je vérifie avec Notepad mon csv toutes les lignes on un ; a la fin

est il possible de ne pas le mettre a l'enregistrement ?

cordialement

bonsoir,

j'ai changé l'instruction print #1,tmp

Sub csvv2()
Dim Tablo, iR%, i%, Tmp$, Sep$
Dim formatxls(4)

With Sheets(1)                    'On travaille directement sur la feuille export
 For i = 1 To 4
  formatxls(i) = .Cells(2, i).NumberFormat
 Next i
    Sep = ","
    iR = .Range("A65500").End(xlUp).Row  'Détermine la dernière ligne
   Tablo = .Range("A1:D" & iR)          'Mémorise le tout dans un tableau
   'Open "Tournees-vracs.csv" For Output As #1
   'Open ThisWorkbook.Path & "\toto.csv" For Output As #1
    Open ThisWorkbook.Path & "\toto" & ".csv" For Output As #1
    For i = 1 To iR
      If Tablo(i, 4) <> "" Then          'Recopie uniquement les lignes du tableau <> ""
    Tmp = ""
      For k = 1 To 4
      Select Case UCase(formatxls(k))
      Case "GENERAL"
      Tmp = Tmp & CStr(Tablo(i, k)) & Sep
      Case Else
      Tmp = Tmp & Format(Tablo(i, k), formatxls(k)) & Sep
      End Select
      Next
      End If
    Print #1, left(Tmp,len(tmp)-1)
    Next
    DoEvents
    MsgBox "C'est fini !"
    Close #1

End With
End Sub

t'es trop fort

merci pour ton aide !!!!!!

Rechercher des sujets similaires à "format csv"