1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
| Sub Replace_HL_Adress()
Dim Hl As Hyperlink, Wsh As Worksheet
Dim Msgprompt As String, Msganswer As String, LogInfo As String, LogWarn As String
Dim ConfirmB As Boolean ' Confirmation individuelle lien par lien
Dim SearchTxt As String, ReplaceTxt As String, ReplAnsw As String
Dim HLReplCnt As Integer
' Chaines à trouver / remplacer
SearchTxt = "C:\"
ReplaceTxt = "E:\"
' Confirmation individuelle *** à changer ***
ConfirmB = True
HLReplCnt = 0
' On parcourt toutes les sheets de la collection puis tous les HL de chaque sheet
For Each Wsh In ActiveWorkbook.Worksheets
LogInfo = vbNullString
If Wsh.Hyperlinks.Count > 0 Then
For Each Hl In Wsh.Hyperlinks
ReplAnsw = Replace(Hl.Address, SearchTxt, ReplaceTxt, , , vbTextCompare)
If ReplAnsw <> vbNullString Then 'On remplace seulement si la chaine a été trouvée
If ConfirmB = True Then
Msgprompt = "Changement adress de l'hyperlien " & Wsh.Name & "-" & Hl.Range.Address & "-" & Hl.Address & "?"
Msganswer = MsgBox(Msgprompt, vbYesNo)
End If
If Msganswer = vbYes Or ConfirmB = False Then
ReplAnsw = Replace(Hl.Address, SearchTxt, ReplaceTxt, , , vbTextCompare)
HLReplCnt = HLReplCnt + 1
LogInfo = LogInfo & HLReplCnt & "/" & Hl.Name & vbTab & Hl.Address & vbTab & Hl.Range.Address & vbCrLf
End If
Else: LogWarn = LogWarn & "Pas de ramplacement pour: " & Hl.Name & vbTab & Hl.Address & vbTab & Hl.Range.Address & vbCrLf
End If
Next Hl
End If
Next Wsh
' Rapport
If LogInfo <> vbNullString Then
LogInfo = LogInfo & " remplacements pour " & ActiveWorkbook.Name & vbCrLf & LogInfo
MsgBox LogInfo
End If
If LogWarn <> vbNullString Then
LogWarn = " Warning: " & ActiveWorkbook.Name & vbCrLf & LogWarn
MsgBox LogWarn, vbExclamation
End If
End Sub |
Partager