Convertir plusieurs fichiers CSV UTF 8 en fichiers XLSX

Hello,
Je viens de tester et ça fonctionne plutôt bien.^^
Seul problème c'est qu'au lieu d'avoir 2 lignes, le fichier se retrouve sur une seule ligne (test sur le fichier tarif).
Après cette modif c'est le top!^^

UN grand merci

Seul problème c'est qu'au lieu d'avoir 2 lignes, le fichier se retrouve sur une seule ligne (test sur le fichier tarif).

et c'est la première fois que je rencontre ce phénomène

j'ai essayé de décoder chaque caractère et le mettre en ascii, rien n'y fait ! je n'ai pas (encore) trouvé la cause !

Bonjour et désolé pour le temps de réponse.

Malheureusement j'ai testé et il n'y a toujours qu'une seule ligne dans le fichier Excel de résultat.
Pourtant dans le fichier de test tarif on voit bien 2 lignes (une entête et une de valeurs)
Comment forcer ce retour avec le traitement ligne à ligne svp?

J'ai aménagé la macro

Const sep = ";"

Sub csv2xlsx()
Dim chemin$, Rep As FileDialog

    ' choix du répertoire
    Set Rep = Application.FileDialog(msoFileDialogFolderPicker)
    Application.FileDialog(msoFileDialogFolderPicker).Title = "Choix du répertoire des fichiers ..."
    Rep.Show
    If Rep.SelectedItems.Count = 0 Then Exit Sub
    chemin = Rep.SelectedItems(1) & "\"

    importCSV chemin

End Sub

Sub importCSV(chemin As String)
Dim wb As Workbook, ws As Worksheet
Dim fichier$, T() As String, D, ligne&, i%, ContenuLigne$, nItems%, ff

fichier = Dir(chemin & "*.csv")
Do While fichier <> ""

    Set wb = Workbooks.Add
    Set ws = wb.Worksheets(1)

    ff = FreeFile
    Open chemin & fichier For Input As #ff
        ligne = 0
        Do While Not EOF(1)
            Line Input #ff, ContenuLigne
            tbl = Split(ContenuLigne, Chr(10))
            For i = LBound(tbl) To UBound(tbl)
                ligne = ligne + 1
                T = Split(Utf8_Decode(tbl(i)) & sep, sep)
                ws.Cells(ligne, 1).Resize(1, UBound(T)) = T
            Next
        Loop
    Close #ff

    wb.SaveAs chemin & Replace(fichier, ".csv", ".xlsx")
    wb.Close

fichier = Dir
Loop

End Sub

Function Utf8_Decode(ByVal txt As String) As String
Dim ln As Long, s As String, i As Integer, j As Integer, K As Integer
    For ln = 1 To Len(txt)
        i = Asc(Mid(txt, ln, 1))
        If i > 127 Then
            If Not i And 32 Then
            j = Asc(Mid(txt, ln + 1, 1))
            s = s & ChrW$(((31 And i) * 64 + (63 And j)))
            ln = ln + 1
        Else
            j = Asc(Mid(txt, ln + 1, 1))
            K = Asc(Mid(txt, ln + 2, 1))
            s = s & ChrW$(((i And 15) * 16 * 256) + ((j And 63) * 64) + (K And 63))
            ln = ln + 2
        End If
            Else
            s = s & Chr$(i)
        End If
    Next ln
    Utf8_Decode = s
End Function

Wow!!! C'est parfait!!!

Un énorme Merci!
J'ai appris énormément ^^

Rechercher des sujets similaires à "convertir fichiers csv utf xlsx"