Sub Changer_Extension_xlsx_En_xlsm()
With Application
'pas d'affichage d'alerte
.DisplayAlerts = False
'pas de mise à jour de l'écran
.ScreenUpdating = False
End With
Dim objFSO, objDossier, objFichier, objListe
Dim Racine, ExtX, ExtM
ExtX = ".xlsx"
ExtM = ".xlsm"
On Error Resume Next
'mets le chemin de ton répertoire ici
Racine = "C:\Users\Fred\Desktop\"
'le nom du fichier .txt qui contiendra la liste des classeurs .xlsx
laListe = "Liste changements ext.txt"
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objDossier = objFSO.GetFolder(Racine)
Set objListe = objFSO.CreateTextFile((Racine & "\" & laListe), 2)
If (objDossier.Files.Count > 0) Then
For Each objFichier In objDossier.Files
's'il y a .xlsx comme extension,
If Right(objFichier.Name, 5) = ExtX Then
'on inscrit le nom du classeur dans la liste
objListe.WriteLine objFichier.Name
'on modifie l'extension en .xlsm
NouveauNom = Left(objFichier.Name, Len(objFichier.Name) - 5) & ExtM
'on ouvre le classeur
Workbooks.Open Filename:=Racine & objFichier.Name
'on l'enregistre en .xlsm
ActiveWorkbook.SaveAs Filename:=Racine & NouveauNom, _
FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
'on ferme
ActiveWindow.Close
'on supprime le classeur xlsx
'Kill Racine & objFichier.Name
End If
Next
End If
objListe.Close
Set objListe = Nothing
Set objDossier = Nothing
Set objFSO = Nothing
With Application
.DisplayAlerts = True
.ScreenUpdating = True
End With
End Sub