Dim CheminInitial$, fso As Object, Nmax&, n&, L#, NouveauNom$ 'mémorise les variables
Sub Lancer()
CheminInitial = ThisWorkbook.Path
Set fso = CreateObject("Scripting.FileSystemObject")
Nmax = 0
n = 0
L = Feuil1.OLEObjects("Label1").Width
Feuil1.OLEObjects("Label2").Width = 0
Feuil1.Range("C2") = "0% des fichiers sont renommés"
NouveauNom = "Mon beau fichier " '"Classeur" 'à adapter
Compte CheminInitial
Renomme CheminInitial
End Sub
Sub Compte(chemin$)
Dim sf As Object
For Each sf In fso.GetFolder(chemin).subfolders
Compte sf.Path 'récursivité pour traiter l'arborescence
Nmax = Nmax + sf.Files.Count
Next sf
End Sub
Sub Renomme(chemin$)
Dim sf As Object, f As Object, numero&, extension$
For Each sf In fso.GetFolder(chemin).subfolders
Renomme sf.Path 'récursivité pour traiter l'arborescence
numero = 0
For Each f In sf.Files
If Not f.Name Like NouveauNom & "*" Then
'--renomme le fichier (à adapter)---
numero = numero + 1
extension = Mid(f.Name, InStrRev(f.Name, "."))
Name f.Path As sf.Path & "\" & NouveauNom & Format(numero, "0000") & extension
'---barre de progression---
n = n + 1
Feuil1.OLEObjects("Label2").Width = L * n / Nmax
Feuil1.Range("C2") = Format(n / Nmax, "0%") & " des fichiers sont renommés"
Application.ScreenUpdating = True
End If
Next f, sf
End Sub