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)
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
UserForm1.Label1.Caption = "% effectué : " & format(100 * (c.Row - 6) / (d.Row - 6), 0.00)
Userform1.Repaint
'Si la cellule n'est pas vide et dont la valeur commence par un "1"
If c <> "" And Left(c, 1) = "1" Then
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(UCase(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