Conversion en .csv

chaldeen -  
The_boss_68 Messages postés 959 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai un problème car je souhaite convertir en fichier .xls en .csv pour pouvoir le lire en Python (avec Pandas). Le problème est que même en réalisant "Save As" et en choisissant l'extension .csv, je me retrouve toujours avec un fichier qui n'a pas bougé, qui possède l'extension .csv mais dont les données sont toujours dans des colonnes séparées au lieu d'être séparées par des virgules dans une même cellule. Savez-vous de quoi peut provenir ce problème ?
Merci

1 réponse

  1. The_boss_68 Messages postés 959 Date d'inscription   Statut Membre Dernière intervention   182
     
    Bonjour

    Test à tout hasard ce code
    Les fichiers .csv seront enregistré là ou se trouve ton fichier .XLS

    Slts

    Option Explicit
    'UTF-8
    Public Sub Create_CSV()
    Dim wb As Workbook, ws As Worksheet, ws2 As Worksheet
    Dim rngHeaders As Range, rngData As Range
    Dim sPath As String, sFile As String
    Dim lastCol As Long, lastRow As Long, lRow As Long, Counter As Long
    Dim i As Long
    Const X As Long = 1500
    
        With Application
            .DisplayAlerts = False
            .ScreenUpdating = False
        End With
            
        Set wb = ThisWorkbook
        Set ws = wb.Worksheets("Données")
        sPath = wb.Path & Application.PathSeparator
        
        With ws
            lastCol = .Cells(1, .Columns.Count).End(xlToLeft).Column
            lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
            Set rngHeaders = .Cells(1).Resize(, lastCol)
            Counter = WorksheetFunction.RoundUp(lastRow / X, 0)
            lRow = 2
            For i = 1 To Counter
                Set rngData = Union(rngHeaders, .Cells(lRow, 1).Resize(X - 1, lastCol))
                sFile = "Part_" & i & ".csv"
                Set ws2 = Worksheets.Add
                rngData.Copy Destination:=ws2.Cells(1)
                ws2.Copy
                With ActiveWorkbook
                    .SaveAs Filename:=sPath & sFile, FileFormat:=xlCSV
                    .Close savechanges:=False
                End With
                Application.DisplayAlerts = False
                ws2.Delete
                Application.DisplayAlerts = True
                lRow = lRow + (X - 1)
            Next i
        End With
        
    End Sub
    
    1