Bonjour, j'ai un programme qui renome les documents d'un fichier. Voulant qu'il renomme aussi les documents des sous dossiers, j'ai essayé d'utiliser une fonction récurssive. En orange les lignes en rapport avec la récurssivité. La ligne bleu génère un message d'erreur : Erreur de compilation ; Nombre d'arguments incorrect ou affectation de propriété incorrecte.
Débutante en excel, je n'arrive pas à corriger cette erreur. Merci pour votre aide.
Sub Rename()
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 path 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
Dim chemin As String
chemin = "P:\Test\"
Set Fso = CreateObject("Scripting.FileSystemObject")
Set SourceFolder = Fso.GetFolder(chemin)
path = "P:\Test\"
For Each FileItem In SourceFolder.Files
Set RegEx = New VBScript_RegExp_55.RegExp
Filename = Dir(path & "*.*")
Do While Filename <> "" ' REGARDE SI LE NOM EST FORMALISE
Temp = Replace(Filename, "-", "_") ' remplace les tiret du haut par des tiret du bas
RegEx.Pattern = "^(.+)(_V[0-9]+)\.(.+)$" ' Teste si le nom est formalisé
If Not RegEx.Test(Temp) Then ' SI NON DECOUPE ET REMPLACE LES TIRETS
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 = "P:\Test\" & RegEx.Replace(Temp, "$1_V1.$3") ' réassemble avec les morceaux trouvés et V1 car pas de numérotation
Else
Result = path & RegEx.Replace(Temp, "$1_V$2.$3") ' Réassemble les morceaux en insérant le _V
End If
Else
Result = path & Temp
End If
Name path & Filename As Result
Filename = Dir()
Loop
Next FileItem
For Each SubFolder In SourceFolder.SubFolders
Rename SubFolder.path
Next SubFolder
MsgBox "Terminé"
End Sub