Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 VBA - Convertir fichiers xlsx en ods

moustic54

XLDnaute Occasionnel
Bonjour le forum

Est-il possible de convertir plus de 103 fichiers placés dans un seul répertoire en xlsx au format ods sans ouvrir un à un chaque fichier puis "enregistrer sous" ?

Cette tâche risque d'être longue et fastidieuse.

Merci à ceux qui pourront trouver une solution m'évitant cet exercice.
 

moustic54

XLDnaute Occasionnel
Bonjour le forum

Je lance un SOS
J'ai vraiment besoin des compétences des spécialistes d'Excel pour convertir ces fichiers Excel en ODS en recourant à une macro.

Merci à ceux qui m'entendront.
 

ChTi160

XLDnaute Barbatruc
Bonjour le Fil
ce Code semble correspondre (perfectible) ! a adapter surement .
VB:
Option Explicit
Sub XlsxEnOds()
    Dim wb As Workbook
    Dim Chemin As String
    Dim oChemin As String
    ' Spécifiez le chemin d'accès complet du fichier Excel à convertir
    Chemin = ThisWorkbook.Path & "\fichier.xlsx"
   
    ' Ouvrir le fichier Excel
    Set wb = Workbooks.Open(Chemin)
   
    ' Définir le chemin d'accès et le nom de fichier pour la sauvegarde au format ODS
   
    oChemin = Left(Chemin, Len(Chemin) - 5) & ".ods" ' Remplacez ".xlsx" par ".ods"
   
    ' Enregistrer le fichier au format ODS
    wb.SaveAs Filename:=oChemin, FileFormat:=60
   
    ' Fermer le fichier Excel
    wb.Close False
   
    ' Afficher un message de confirmation pour le test
    MsgBox "Conversion terminée. Le fichier a été enregistré sous " & oChemin
End Sub
Bonne Journée
Jean marie
 

Staple1600

XLDnaute Barbatruc
Bonjour

Grillé par l'autre JM

@moustic54
Ne pas oublier de regarder dans les archives du forum
Ci-dessous code issu de ce fil (nous étions en 2021)
Il fallait juste inverser et voir avec l'enregistreur de macro que
format ODS = xlOpenDocumentSpreadsheet
ActiveWorkbook.SaveAs Filename:="C:\Users\STAPLE\Documents\test.ods" , FileFormat:=xlOpenDocumentSpreadsheet, CreateBackup:=False
VB:
Sub Conversion_XLSX_vers_ODS()
Dim ODS_Nom$, XLSX_Nom$, StrPath$
Dim oWorkbook As Workbook, fDialog As FileDialog
Set fDialog = Application.FileDialog(msoFileDialogFolderPicker)
With fDialog
    .Title = "Sélectionner le dossier contenant les fichiers ODS"
    .AllowMultiSelect = False
    .InitialView = msoFileDialogViewList
    If .Show <> -1 Then
        MsgBox "Convertion annulée", , "Avertissement"
        Exit Sub
    End If
    StrPath = fDialog.SelectedItems.Item(1)
    If Right(StrPath, 1) <> "\" Then StrPath = StrPath + "\"
End With
If Left(StrPath, 1) = Chr(34) Then
    StrPath = Mid(StrPath, 2, Len(StrPath) - 2)
End If
XLSX_Nom = Dir$(StrPath & "*.xlsx")
While Len(XLSX_Nom) <> 0
    Set oWorkbook = Workbooks.Open(StrPath & XLSX_Nom)
    ODS_Nom = StrPath & Left(oWorkbook.Name, InStrRev(oWorkbook.Name, ".") - 1)
    oWorkbook.SaveAs Filename:=ODS_Nom & ".ods", FileFormat:=xlOpenDocumentSpreadsheet
    oWorkbook.Close False
    XLSX_Nom = Dir$()
Wend
MsgBox "La conversion est terminée", , "XLSX vers ODS"
Exit Sub
End Sub
Testé sur O365

[EDITION]
Précision: testé sur des classeurs *.xlsx ne contenant qu'une seule feuille.
 
Dernière édition:

moustic54

XLDnaute Occasionnel
Bonjour ChTi160, bonjour Staple1600

Merci à vous deux pour votre aide. Je n'aurai jamais pu y parvenir sans vous.
Comment indiqué dans mon fil, je n'y connais quasiment rien en vba. Programmer de la sorte dépassait largement mes maigres connaissances.
Je vais tester aussitôt.
Bon week-end à vous deux.

 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…