Private Sub Workbook_Open()
Dim Feui As Worksheet, Lien As Hyperlink, Adr As String, Chemin As String, _
Ancien As String, P As Long, Nouveau As String
For Each Feui In Me.Worksheets
For Each Lien In Feui.Hyperlinks
Adr = Lien.Address
If Left$(Adr, 2) = "\\" Then
P = InStrRev(Adr, "\")
Chemin = Left$(Adr, P)
Ancien = Mid$(Adr, P + 1)
On Error Resume Next
Nouveau = Dir(Chemin & "*.pdf")
If Err Then
Application.Goto Lien.Range
MsgBox "Lien hypertexte en '" & Feui.Name & "'!" & Lien.Range.Address & ", erreur en interrogeant :" _
& vbLf & Chemin & "*.pdf" & vbLf & Err.Description, _
vbCritical, "Ouverture " & Me.Name
ElseIf Nouveau = "" Then
MsgBox "Lien hypertexte en '" & Feui.Name & "'!" & Lien.Range.Address & ", fichier suivant inexistant :" _
& vbLf & Chemin & "*.pdf", vbExclamation, "Ouverture " & Me.Name
ElseIf Nouveau <> Ancien Then
Err.Clear: Lien.Address = Chemin & Nouveau
If Err Then
MsgBox "Lien hypertexte en '" & Feui.Name & "'!" & Lien.Range.Address & ", erreur en tentant de le corriger :" _
& vbLf & Err.Description, vbCritical, "Ouverture " & Me.Name
Else
MsgBox "Lien hypertexte en '" & Feui.Name & "'!" & Lien.Range.Address & ", fichier changé. Ancien nom :" _
& vbLf & """" & Ancien & """, nouveau nom :" & vbLf & """" & Nouveau & """.", _
vbInformation, "Ouverture " & Me.Name
End If
End If
On Error GoTo 0: End If
Next Lien
Next Feui
End Sub