Convertir plusieurs .csv en .xlsx

Bonjour à tous,

Je souhaite convertir pas moins de 500 fichiers .csv en .xlsx.

J'ai trouvé des solutions sur le net mais le problème est que je conserve les ";" une fois mon fichier en .xlsx. Or je voudrais des colonnes!

Voici mon code à date :

Sub CSVtoXLS()
'csv_en_xlsx
    Dim xFd As FileDialog
    Dim xSPath As String
    Dim xCSVFile As String
    Dim xWsheet As String
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Application.StatusBar = True
    xWsheet = ActiveWorkbook.Name
    Set xFd = Application.FileDialog(msoFileDialogFolderPicker)
    xFd.Title = "Choisissez le dossier des fichiers à convertir :"
    If xFd.Show = -1 Then
        xSPath = xFd.SelectedItems(1)
    Else
        Exit Sub
    End If
    If Right(xSPath, 1) <> "\" Then xSPath = xSPath + "\"
    xCSVFile = Dir(xSPath & "*.csv")
    Do While xCSVFile <> ""
        Application.StatusBar = "Converting: " & xCSVFile
        Workbooks.Open Filename:=xSPath & xCSVFile
        Columns("A:A").Select
        Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
        Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo _
        :=Array(1, 1), TrailingMinusNumbers:=True
        ActiveWorkbook.SaveAs Replace(xSPath & xCSVFile, ".csv", ".xlsx", vbTextCompare), xlWorkbookDefault
        ActiveWorkbook.Close
        Windows(xWsheet).Activate
        xCSVFile = Dir
    Loop
    Application.StatusBar = False
    Application.DisplayAlerts = True
End Sub

Ça passe pour 60 % des fichiers, les autres sont rejetés !! :(

Si vous avez une solution, je suis preneur! Merci d'avance

fifou

Bonjour Fifou6901

Sur une idée de Steelson que je salue, essaye ce classeur et dis nous

@+

Merci Bruno ... amitiés !

Je vois que tu as pas mal adapté ...

Si ton fichier est en unicode, précise le pour adapter ...

Il serait intéressant d'analyser pourquoi les fichiers ne passent pas !

Dans certains cas, le fichiers csv sont irréguliers, avec des données d'en-tête n'ayant pas le même nombre de colonnes, voire même une seule colonne ! Dans ce cas, il faut faire quelques corrections, sans compter le codage qui peut perturber :

  • traiter ligne à ligne
  • ajouter fictivement un séparateur à la fin de chaque ligne

Un exemple ...

Merci pour ton aide Bruno!

Petit détails :)

La feuille de calcul doit être renommée en "CSV2XLSX"

J'ai simplement changé une ligne pour que les fichiers s'enregistrent dans le dossier d'origine!

With ActiveWorkbook
          .SaveAs Replace(xSPath & xCSVFile, ".csv", ".xlsx", vbTextCompare), xlWorkbookDefault
          .Close SaveChanges:=False

Ta technique est nickel car 0 rejet! La mienne rejetait les fichiers vides...

Merci beaucoup!

Il serait intéressant d'analyser pourquoi les fichiers ne passent pas !

Dans certains cas, le fichiers csv sont irréguliers, avec des données d'en-tête n'ayant pas le même nombre de colonnes, voire même une seule colonne ! Dans ce cas, il faut faire quelques corrections, sans compter le codage qui peut perturber :

  • traiter ligne à ligne
  • ajouter fictivement un séparateur à la fin de chaque ligne

Un exemple ...

Effectivement, la cause était le problème de fichier vide!

Rechercher des sujets similaires à "convertir csv xlsx"