VBA Excel: enregistrer tous les fichiers d'un mm dossier en xlsx

Charlotte -  
 Charlotte -
Bonjour,

Je dispose d'un dossier contenant plusieurs classeurs Excel au format .csv
Je souhaite automatiser leur conversion en xlsx par un code vba.
Actuellement, je les ouvre les uns après les autres, je passe par "Enregistrer sous" et je sélectionne dans type de fichier "Classeur Excel" avant de confirmer. Puis je répète l'opération autant de fois qu'il y a de classeur.
Quelqu'un aurait-il une solution miracle pour me faire gagner du temps??

Merci d'avance!!
A voir également:

1 réponse

pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 767
 
Bonjour,

plusieurs classeurs Excel
Euh... Combien?
1
Charlotte
 
J'en ai une quinzaine par dossier.

Merci
0
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 767
 
Regarde cette astuce de lermitte222. Tu y trouveras ton bonheur... et un fichier!
0
Charlotte
 
Merci pour l'astuce.

Comme j'utilise Excel 2010 et qu'il est indiqué que cette version fait automatiquement la conversion, je me demande si une procédure si importante est nécessaire? De plus, j'ai lancé la conversion mais elle n'a pas pu se faire à cause d'une erreur...
Dans l'idéal, je pense plus à un code qui boucle sur tous les fichiers et procède au "enregistrer sous" automatiquement...

Merci
0
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 767
 
Ce code fait ce que tu souhaites.
Merci à Lermitte222.

Option Explicit

Sub CsvEnXls()
Dim fs, F, f1, sf
Dim wbk As Workbook, Chemin As String
Const ssfTous = &H1
Dim objShell As Object, objFolder As Object, oFolderItem As Object

    Set objShell = CreateObject("Shell.Application")
    Set objFolder = objShell.BrowseForFolder(&H0&, "Choisir un répertoire", ssfTous)
    Set oFolderItem = objFolder.Items.Item
    
    Chemin = oFolderItem.Path & "\"
    
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set F = fs.GetFolder(Chemin)
    Set sf = F.Files
    
    For Each f1 In sf
        If LCase(Right(f1.Name, 3)) = "csv" Then
            Set wbk = Workbooks.Open(Chemin & f1.Name)
            wbk.SaveAs Left(wbk.Name, Len(wbk.Name) - 4), FileFormat:=xlOpenXMLWorkbook
            wbk.Close
        End If
    Next
    
    Set wbk = Nothing
    Set objShell = Nothing
    Set objFolder = Nothing
    Set oFolderItem = Nothing
    Set fs = Nothing
    Set F = Nothing
    Set sf = Nothing
End Sub
0
Charlotte
 
Merci pour votre réponse.
Mais lorsque je lance, depuis un classeur excel du dossier choisi, la macro contenant le code proposé, l'ensemble des fichiers au format csv s'ouvre puis se referme mais rien n'a changé; est-ce normal?

Merci
0