comment vérifier si une cellule contient un lien hypertexte

saadmechiche

XLDnaute Junior
bonjour ,

dans mon code j aimerai boucler sur toutes les cellules du usedrange mais ne prendre que les cellules qui ont un hyperlink , comment dois je faire ? merci pour votre aide.
 

Efgé

XLDnaute Barbatruc
Re : comment vérifier si une cellule contient un lien hypertexte

Bonjour saadmechiche, (Re) Bonjour Staple,
J'étais parti, alors je livre....
Pour boucler:
VB:
Sub test()
For Each C In Sheets("Feuil1").Hyperlinks
     MsgBox C.Range.Address, 64, "Une cellule trouvée"
Next C
End Sub
Cordialement
 

Staple1600

XLDnaute Barbatruc
Re : comment vérifier si une cellule contient un lien hypertexte

Re; salut Efgé ;)

Bon bah je livre aussi, histoire d'entrer dans le jeu
Code:
Sub a()
Dim c As Range, p As Range
    For Each c In Selection
        If c.Hyperlinks.Count = 1 Then
            If p Is Nothing Then
                Set p = c
            Else
                Set p = Application.Union(p, c)
            End If
        End If
    Next c
MsgBox p.Address
End Sub

PS1: Crédits à Messieurs kjin et pierrejean que je salue au passage ;)

PS2: Efgé, ta boucle est moins bouclée que la mienne, et donc je l'adopte illico ;)
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : comment vérifier si une cellule contient un lien hypertexte

Re

Donc la précédente avec la sauce Efgé dedans ;)
Code:
Sub b()
Dim c, p As Range
    For Each c In ActiveSheet.Hyperlinks
            If p Is Nothing Then
                Set p = Range(c.Range.Address)
            Else
                Set p = Application.Union(p, Range(c.Range.Address))
            End If
    Next c
MsgBox p.Address
End Sub
 

Efgé

XLDnaute Barbatruc
Re : comment vérifier si une cellule contient un lien hypertexte

Re,
La version conjointe avec moins de ligne mais peut être pas plus rapide (mais j'aime bien le IIf, même si il faut souvent s'en méfier):
VB:
Sub Test2()
Dim C As Hyperlink, p As Range
    For Each C In ActiveSheet.Hyperlinks
        Set p = Union(Range(C.Range.Address), IIf(p Is Nothing, Range(C.Range.Address), p))
    Next C
MsgBox p.Address
End Sub
Cordialement
 

Staple1600

XLDnaute Barbatruc
Re : comment vérifier si une cellule contient un lien hypertexte

Re

Tu as raison, le IIF a ses détracteurs
mais pas le Switch ;)
Code:
Sub Test3()
Dim C As Hyperlink, p As Range
    For Each C In ActiveSheet.Hyperlinks
        Set p = Union(Range(C.Range.Address), Switch(p Is Nothing, Range(C.Range.Address), Not p Is Nothing, p))
    Next C
MsgBox p.Address
End Sub
 

Staple1600

XLDnaute Barbatruc
Re : comment vérifier si une cellule contient un lien hypertexte

Re

Efgé:
Nos deux codes précédents ont un léger problème ;)

Alors je retire les oignons et je mets le String ;)
Code:
Sub Test4()
Dim C As Hyperlink, a$
    For Each C In ActiveSheet.Hyperlinks
       a = a & C.Range.Address & ","
    Next C
'MsgBox Range(Left(a, Len(a) - 1)).Address
'Si il faut vraiment sélectionner ;o)
Range(Left(a, Len(a) - 1)).Select
End Sub
 

Discussions similaires

Réponses
5
Affichages
285
Réponses
7
Affichages
558

Statistiques des forums

Discussions
312 920
Messages
2 093 640
Membres
105 771
dernier inscrit
lorachab