Convertir en masse .csv en .xls

Bonjour

Je cherche un script VBA pour convertir plusieurs .csv avec un séparateur ; en tableau .xls.

Il faudrait en plus que je puisse choisir les fichiers à convertir et que cela ne supprime pas les sources.

Voilà

2 réponses

  1. Bonjour
    voila une macro pour faire des cumuls de fichier CSV
    Sub ListeFichier()
    Dim Dossier As FileDialog
          Chemin = ActiveWorkbook.Path & Application.PathSeparator
    Set Dossier = Application.FileDialog(msoFileDialogOpen)
       With Dossier
          .AllowMultiSelect = False
          .InitialFileName = Chemin
          .Title = "Choix d'une fichier Elise"
                With .Filters
                   .Clear
                   .Add "Fichiers Textes", "*.csv", 1
                End With
          .InitialFileName = ""
          'Interdit la multi sélection
          .AllowMultiSelect = False
             If .Show = -1 Then
                   Fichier = .SelectedItems(1)
                   Call LireFichier(Fichier)
                Else
                   Exit Sub
             End If
       End With
    Set Dossier = Nothing
    End Sub
    
    Sub LireFichier(NomFichier)
    Dim Ar() As String
       With Application
          .ScreenUpdating = False
          .EnableEvents = False
          .Calculation = xlManual
       End With
    Sep = ";"
    Lig = Range("A" & Rows.Count).End(xlUp).Row + 1
    If Lig = 2 Then Lig = 1
    ' -------------------------------------
        Open NomFichier For Input As #1
            Do While Not EOF(1)
                Line Input #1, Chaine
                   Ar = Split(Chaine, Sep)
                   Col = 1
                      For X = LBound(Ar) To UBound(Ar)
                         Cells(Lig, Col) = Ar(X)
                         Col = Col + 1
                      Next
                Lig = Lig + 1
            Loop
        Close #1
    ' -------------------------------------
       With Application
          .ScreenUpdating = True
          .Calculation = xlCalculationAutomatic
          .EnableEvents = True
          .CutCopyMode = False
          .Goto [A1], True
       End With
       MsgBox "Terminer"
    End Sub
    

    A+
    Maurice
    2
    1. Bonjour Maurice

      J'ai ajouté une réponse au sujet pour compléter l'explication du cas que je souhaite traiter.

      @+
      0
  2. Bonjour Maurice

    La conversion en tableau est bien faîte.

    Par contre j'aurais souhaité que cela créé un nouveau fichier et que cela soit autorisé pour plusieurs fichiers sources simultanément.

    1 : lancer la macro (avec un bouton) depuis un fichier exel "macro cumuls de fichiers CSV"
    2 : l'explorateur de dossier s'ouvre avec un filtre sur les fichiers type .csv
    3 : on est autorisé à choisir 1 ou plusieurs fichiers (100 par ex!)
    4 : la macro créée autant de nouveaux fichiers en .xls avec le même nom et les données en tableau (séparation ;) et ils sont enregistrés dans le même dossier que les fichiers sources.

    C'est peut-être mieux expliqué sous cette forme.

    Merci bien pour tes réponses.

    Antoine
    0