Bonjour, j'ai un programme qui permet de renommer les dossiers et sous dossiers d'un répertoire. Malheureusement la récurssivité pour changer le nom de mes sous dossiers ne fonctionne pas. Le programme en lui même est juste, pas de messages d'erreurs donc je n'arrive pas à trouver d'où vient le problème. Si quelqun a une solution.
Merci d'avance!
Merci d'avance!
VB:
Sub Rename()
Dim dossier As String
dossier = "P:\Test\"
'Appelle la procédure de recherche des fichiers
rech_fichier dossier
MsgBox "Terminé"
End Sub
Sub rech_fichier(repertoire As String)
Dim RegEx As VBScript_RegExp_55.RegExp
Dim Matches As VBScript_RegExp_55.MatchCollection
Dim Match As VBScript_RegExp_55.Match
Dim Filename As String
Dim Result As String
Dim Temp As String
Dim Fso As Scripting.FileSystemObject
Dim SourceFolder As Scripting.Folder
Dim SubFolder As Scripting.Folder
Dim FileItem As Scripting.File
Set Fso = CreateObject("Scripting.FileSystemObject")
Set SourceFolder = Fso.GetFolder(repertoire)
For Each FileItem In SourceFolder.Files
Set RegEx = New VBScript_RegExp_55.RegExp
Filename = Dir(repertoire & "*.*")
Do While Filename <> ""
Temp = Replace(Filename, "-", "_")
RegEx.Pattern = "^(.+)(_V[0-9]+)\.(.+)$" ' Teste si le nom est formalisé
If Not RegEx.Test(Temp) Then
RegEx.Pattern = "^([^0-9|\.|_]+)_*([0-9]*)\.(.+)$" ' Découpe le nom pour récupérer les parties à réassembler en excluant le underscore
Set Matches = RegEx.Execute(Temp)
If (Matches(0).SubMatches(1)) = "" Then
Result = repertoire & RegEx.Replace(Temp, "$1_V1.$3") ' réassemble avec les morceaux trouvés et V1 car pas de numérotation
Else
Result = repertoire & RegEx.Replace(Temp, "$1_V$2.$3") ' Réassemble les morceaux en insérant le _V
End If
Else
Result = repertoire & Temp
End If
Name repertoire & Filename As Result
Filename = Dir()
Loop
Next FileItem
'--- Appel récursif pour lister les fichier dans les sous-répertoires ---.
For Each SubFolder In SourceFolder.SubFolders
rech_fichier SubFolder.path
Next SubFolder
End Sub