Sub MAJ()
'Appelle la procédure de recherche des fichiers
UserForm1.Show 0
ListeFichiers [Parametres!A2]
Unload UserForm1
MsgBox "Mise à jour des liens terminée"
End Sub
Sub ListeFichiers(Repertoire As String)
'Nécessite d'activer la référence "Microsoft Scripting RunTime"
'Dans l'éditeur de macros (Alt+F11):
'Menu Outils
'Références
'Cochez la ligne "Microsoft Scripting RunTime".
'Cliquez sur le bouton OK pour valider.
Dim Fso As Scripting.FileSystemObject
Dim SourceFolder As Scripting.Folder
Dim SubFolder As Scripting.Folder
Dim FileItem As Scripting.File
Dim c As Range, d As Range
Set Fso = CreateObject("Scripting.FileSystemObject")
Set SourceFolder = Fso.GetFolder(Repertoire)
Set c = [A1]: Set d = [A500].End(xlUp)(2, 1)
'Boucle sur tous les noms de fichiers de la colonne A
Do While c.Address <> d.Address
'Si la cellule n'est pas vide et dont la valeur commence par un "1"
If c <> "" And Left(c, 1) = "1" Then
UserForm1.Label1.Caption = "% effectué : " & 100 * (c.Row - 6) / (d.Row - 6)
For Each FileItem In SourceFolder.Files
'Si la cellule ne contient pas de lien hypertexte
If c.Hyperlinks.Count = 0 Then
If FileItem.Name Like "*" & c & "*" & [Parametres!A4] Then
'Ajoute un lien hypertexte vers le fichier
ActiveSheet.Hyperlinks.Add Anchor:=c, _
Address:=FileItem.ParentFolder & "\" & FileItem.Name
End If
'Si la cellule contient un lien hypertexte contenant le chemin "TEST A VALIDER"
ElseIf InStr(c.Hyperlinks(1).Address, "\TEST A VALIDER\") > 0 Then
If FileItem.Name Like "*" & c & "*" & [Parametres!A4] Then
'Remplace le lien hypertexte vers le chemin définitif
ActiveSheet.Hyperlinks.Add Anchor:=c, _
Address:=FileItem.ParentFolder & "\" & FileItem.Name
End If
End If
Next FileItem
End If
Set c = c(2, 1)
Loop
'--- Appel récursif pour lister les fichier dans les sous-répertoires ---.
For Each SubFolder In SourceFolder.subfolders
ListeFichiers SubFolder.Path
Next SubFolder
End Sub