bonjour tout le monde!!
Je developpe une application en vba Excel.
Dans le cadre de ce developpement je dois a un moment vérifier la validité des liens hypertextes.
pour chaque onglet de mon workbook, je vérifie chacun des liens, en regardant si le fichier vers lequel ils pointent existe ou non. Si ce fichier existe, le lien apparait en vert, sinon il apparait en rouge.
Voici le code de ma fonction.
Sub test_existance_hyperlink()
Dim MyHyperLink As Hyperlink
Dim MyWorkSheet As Worksheet
Dim ofso As Object
Dim a As String
'pour chacune des feuille de workbook
Set ofso = CreateObject("Scripting.FileSystemObject")
For Each MyWorkSheet In ActiveWorkbook.Worksheets
MyWorkSheet.Activate
MsgBox MyWorkSheet.Name
'pour chaque liens hypertexte
For Each MyHyperLink In ActiveSheet.Hyperlinks
inbitems_ligne = ActiveSheet.UsedRange.Rows.Count
inbitems_colonnes = ActiveSheet.UsedRange.Columns.Count
'si le liens hypertexte est "mort"
If ofso.FileExists(MyHyperLink.Address) = False Then
i = 0
j = 0
trouve = False
' je récupère le nom du lien
a = MyHyperLink.Name
'je le recherche dans toute la feuille le liens concerné et le met en rouge
'ma recherche se fait case par case
While i < inbitems_ligne And trouve = False
While j < inbitems_colonnes And trouve = False
ActiveSheet.Range("A1").Activate
ActiveCell.Offset(i, j).Select
If CStr(Selection.Value) = CStr(a) Then
With Selection.Font
.Name = "Arial"
.FontStyle = "Normal"
.Size = 10
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleSingle
.ColorIndex = 3
End With
trouve = True
End If
j = j + 1
Wend
i = i + 1
Wend
End If
Next
Next
ActiveWorkbook.Worksheets(1).Activate
End Sub
Ce code marche bien a une exception pres.
En effet, deux de mes onglets possèdent des mises en forme spéciales, ou certaines colonnes et certaines lignes sont fusionnées.
Du coup, lorsque je recherche le lien "mort" en faisant des comparaisons case par case, j'obtiens une erreur ( car des cellules sont fusionnées).
j'aurais donc une question.
Y a t-il un quelconque moyen de récupérer la position de la cellule d'un lien hypertexte.
Si ce moyen existe, je pourais non plus faire ma recherche case par case mais directement sur la cellule du lien.
Sinon y a t-il un moyen de passer outre les cellules fusionnées lors de la recherche ?
merci d'avance
-xaeris-