Bonjour MichD,
Je te remercie pour ton aide et pour ta proposition.
Je reconnais que mon explication n'était pas facile a comprendre. Mais comme d'habitude, tu as vu juste.
Ton exemple de code m'a bien aidé. Voici l'exécution finale:
(Peut-être pourrait-elle être affinée pour s'exécuter plus rapidement)
-------------------------------------------------------
Sub AfficheLesLiensHypertexte()
'Insertions des hyperliens du contenu des cellules
Dim N As Integer, MonTest As Boolean
On Error Resume Next
For Each C In Range("R4", [R65000].End(xlUp))
N = C.Hyperlinks.Count
If N > 0 Then
MonTest = EstValide(C.Hyperlinks(1))
If MonTest Then
GoTo Suite
Else
Chemin_Fichier = C.Value
Fichier = Split(Chemin_Fichier, "\")(UBound(Split(Chemin_Fichier, "\")))
Chemin = Replace(Chemin_Fichier, Fichier, "")
NouveauChemin = "R:\Comparatifs terminés\"
C.Hyperlinks.Add C, NouveauChemin & Fichier, , "Ouvrir fichier", NouveauChemin & Fichier
End If
End If
If C.Value = "Ancien" Then Err = 0: GoTo Suite
C.Hyperlinks.Add Anchor:=C, Address:=C.Value, TextToDisplay:=C.Value, ScreenTip:="Ouvrir fichier"
If EstValide(C.Hyperlinks(1)) = False Then
Chemin_Fichier = C.Value
Fichier = Split(Chemin_Fichier, "\")(UBound(Split(Chemin_Fichier, "\")))
Chemin = Replace(Chemin_Fichier, Fichier, "")
NouveauChemin = "R:\Comparatifs terminés\"
C.Hyperlinks.Add C, NouveauChemin & Fichier, , "Ouvrir fichier", NouveauChemin & Fichier
End If
Suite:
Next
Range("R4").Select
Range("R4", Selection.End(xlDown)).Select
End Sub
Function EstValide(Lien As Hyperlink) As Boolean
On Error Resume Next
If Dir(Lien.Address) <> "" Then
If Err <> 0 Then
Err.Clear
If UCase(Left(Lien.Address, 4)) = "HTTP" Then
EstValide = True
Else
EstValide = False
End If
Else
EstValide = True
End If
End If
End Function
----------------------------------------