Lancement d'un lien hypertexte avec une macro

Signaler
Messages postés
11
Date d'inscription
mardi 26 mai 2020
Statut
Membre
Dernière intervention
16 juin 2020
-
Messages postés
6822
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
30 juin 2020
-
Bonjour

je souhaite créer une macro où lorsque l'on choisit une cellule avec lien hypertexte, ce lien s'active,
il y a déjà eu demande de faite, la 1ére réponse ne fonctionnait pas car, lien renvoyant à un classeur ou un onglet (ne fonctionne qu'avec un lien URL)
Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True


une autre réponse a été faite :
Sub Macro1() 
 With Selection.Hyperlinks(1) 
 .Follow NewWindow:=False, AddHistory:=True 
 If .SubAddress <> "" Then 
 Sheets(Split(.SubAddress, "!")(0)).Select 
 Range(Split(.SubAddress, "!")(1)).Select 
 End If 
 End With 
End Sub 



mais là, je n'arrive pas à comprendre ?
à quoi correspond :
Selection.Hyperlinks(1) 
SubAddress 
Sheet(split 
Range(split 


Sinon, si vous avez une autre idée, pour activer un lien hypertexte avec un code

merci d'avance

14 réponses

Messages postés
11
Date d'inscription
mardi 26 mai 2020
Statut
Membre
Dernière intervention
16 juin 2020

Bonjour cs_Le Pivert,

merci pour ta réponse :

Bonjour,

comme ceci:

Option Explicit Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Not Application.Intersect(Target, Range("A:A")) Is Nothing Then If Target.Value = "" Then Exit Sub Range(Target.Address).Hyperlinks(1).Follow NewWindow:=True End If End Sub 


je vais tester, mais j'ai reçu ainsi, tout attacher,
peux tu remettre stp

merci d'avance
Messages postés
6822
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
30 juin 2020
109
Ce code est obsolète, j'ai confondu.

Tu veux le lancer avec une macro

Voir ceci qui fonctionne très bien:

https://codes-sources.commentcamarche.net/forum/affich-10098579-lancement-lien-hypertexte-contenu-dans-une-cellule#1

@+ Le Pivert
Messages postés
11
Date d'inscription
mardi 26 mai 2020
Statut
Membre
Dernière intervention
16 juin 2020

Le Pivert

oups !
déjà répondu dans message précédent :

mais là, je n'arrive pas à comprendre ?
à quoi correspond :
Selection.Hyperlinks(1) 
SubAddress 
Sheet(split 
Range(split 


peux tu m'aguiller stp
Messages postés
11
Date d'inscription
mardi 26 mai 2020
Statut
Membre
Dernière intervention
16 juin 2020

Le Pivert

pour information :
l'onglet de mon classeur s'appelle synoptic
la cellule ou se trouve le lien hypertexte se trouve en AE:20

peux tu écrire ce code avec ces infos

merci d'avance
Messages postés
6822
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
30 juin 2020
109
La macro fonctionne a la sélection d'une cellule.

Tu te sers de l’enregistreur de macro. Tu sélectionnes le lien hypertexte, tu as ta macro que tu mets au début de cette macro

Sub Macro1()
'ta macro de sélection
 With Selection.Hyperlinks(1)
 .Follow NewWindow:=False, AddHistory:=True
 If .SubAddress <> "" Then
     Sheets(Split(.SubAddress, "!")(0)).Select
     Range(Split(.SubAddress, "!")(1)).Select
    End If
 End With
End Sub


voilà c'est tout simple

@+ Le Pivert
Messages postés
11
Date d'inscription
mardi 26 mai 2020
Statut
Membre
Dernière intervention
16 juin 2020

bon Le Pivert

la macro planque :


erreur d'exécution '9'
l'indice n'appartient pas à la sélection

elle plante sur la ligne :
Sheets(Split(.SubAddress, "!")(0)).Select
Messages postés
6822
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
30 juin 2020
109
chez moi cela fonctionne:

Sub Macro1()
Sheets("synoptic").Select
    Range("AE20").Select
    With Selection.Hyperlinks(1)
 .Follow NewWindow:=False, AddHistory:=True
 If .SubAddress <> "" Then
     Sheets(Split(.SubAddress, "!")(0)).Select
     Range(Split(.SubAddress, "!")(1)).Select
    End If
 End With
End Sub


mais là, je n'arrive pas à comprendre ?
à quoi correspond :
Selection.Hyperlinks(1)
SubAddress
Sheet(split
Range(split


Avec cela tu vas comprendre

Sub Macro1()
Sheets("synoptic").Select
    Range("AE20").Select
    With Selection.Hyperlinks(1)
 .Follow NewWindow:=False, AddHistory:=True
 If .SubAddress <> "" Then
     MsgBox .SubAddress
     Sheets(Split(.SubAddress, "!")(0)).Select
    MsgBox Split(.SubAddress, "!")(0)
     Range(Split(.SubAddress, "!")(1)).Select
    MsgBox Split(.SubAddress, "!")(1)
    End If
 End With
End Sub


voilà
Messages postés
11
Date d'inscription
mardi 26 mai 2020
Statut
Membre
Dernière intervention
16 juin 2020

Le Pivert

merci pour l'explication,
de ce côté j'ai compris la box me donne bien l'info ^^
mais de mon côté ma macro plante toujours au même endroit

Peux tu m'envoyer le fichier que tu as préparé, pour voir ce qui cloche chez moi !
Messages postés
6822
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
30 juin 2020
109
voilà

https://www.cjoint.com/c/JEAqFqCeZKQ

pour lancer la macro Ctrl w
Le Pivert,

je n'ai pas accès à ton lien
page introuvable

peux tu m'envoyer de nouveau un fichier excel avec macro stp
Messages postés
6822
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
30 juin 2020
109
Voilà, valable 4 jours

https://www.cjoint.com/c/JFcfX1EzDeQ
salut le Pivert
désolé mais avec le chomage partiel, je ne suis pas toujours connecté à temps
peux tu m'envoyé le lien pour lundi prochain stp
merci d'avance
salut Le Pivert
si possible, peux tu m'envoyer de nouveau le lien STP
Messages postés
6822
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
30 juin 2020
109
Salut,

Je ne l'ai plus. Mais tu peux le faire toi même en prenant un nouveau classeur et en suivant les indications données sur ce post.

https://codes-sources.commentcamarche.net/forum/affich-10101612-lancement-d-un-lien-hypertexte-avec-une-macro#8

Bon courage
je viens de créer un nouveau fichier excel avec
un onglet Synoptic
j'ai copié la macro : cela ne fonctionne pas

j'ai mis un lien web : cela fonctionne, la page web s'ouvre mais la macro plante après :

erreur d'exécution '9'
l'indice n'appartient pas à la sélection

elle plante sur la ligne :
Sheets(Split(.SubAddress, "!")(0)).Select


et pour revenir à ma demande
le lien hypertexte fait référence à un autre onglet du fichier et une cellule,
donc avec ce type de lien cela ne fonctionne pas

De ton côté, avais tu mis un lien vers onglet ou vers un site web ?
Messages postés
6822
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
30 juin 2020
109
Voilà un code avec un lien vers une feuille. Lien situé Sheets("synoptic").Range("AE20") et un lien vers un site web situé Sheets("synoptic").Range("AE23")
les 2 fonctionnent:

Option Explicit
'vers une feuille
Sub Macro1()
Sheets("synoptic").Select
    Range("AE20").Select
    With Selection.Hyperlinks(1)
 .Follow NewWindow:=False, AddHistory:=True
 If .SubAddress <> "" Then
     Sheets(Split(.SubAddress, "!")(0)).Select
     Range(Split(.SubAddress, "!")(1)).Select
    End If
 End With
End Sub
'vers un site web
Sub Macro2()
    Sheets("synoptic").Range("AE23").Hyperlinks(1).Follow NewWindow:=True
End Sub


Voilà, je ne peux pas faire plus

Bon courage
Messages postés
11
Date d'inscription
mardi 26 mai 2020
Statut
Membre
Dernière intervention
16 juin 2020

je t'envoie mon fichier,
peux tu regarder le prob stp

dis moi si tu as reçu le fichier
Messages postés
11
Date d'inscription
mardi 26 mai 2020
Statut
Membre
Dernière intervention
16 juin 2020

je pense que le problème vient du lien hypertexte

lorsque le lien va sur le même onglet et une autre cellule, la macro fonctionne,

si le lien va vers un autre onglet du classeur, la macro plante
Messages postés
6822
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
30 juin 2020
109
Non chez moi cela fonctionne sur un autre onglet.

Les macros sont dans un module

Je ne vois aucun lien pour ton envoi!
Messages postés
11
Date d'inscription
mardi 26 mai 2020
Statut
Membre
Dernière intervention
16 juin 2020

voici mon fichier
peux tu analyser stp

https://cjoint.com/c/JFpnYBDompT
Messages postés
6822
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
30 juin 2020
109
Tu aurais pu dire que le lien consistait à faire la sélection sur une plage !

Je ne vois pas l’intérêt de ce code. Il faut faire une macro pour chaque lien?

voilà la macro:

Sub synoptic()
On Error Resume Next
Sheets("synoptic").Select
Dim plage As Range
Range("AE20").Select
    With Selection.Hyperlinks(1)
 .Follow NewWindow:=False, AddHistory:=True
 If .SubAddress <> "" Then
plage = Split(.SubAddress, "!")(1) 'range
End If
 End With
 Sheets("Synoptic diagram").Select
Range(Range(plage)).Select
 End Sub



@+ Le Pivert
Messages postés
11
Date d'inscription
mardi 26 mai 2020
Statut
Membre
Dernière intervention
16 juin 2020

Bonjour Le Pivert

désolé, je n'ai pas du tout pensé à te dire que la sélection était une plage

maintenant, peux tu m'expliquer à quoi sert ce code stp :
"On Error Resume Next"

sinon, effectivement, en précisant que la sélection est une plage, cela fonctionne parfaitement (désolé encore)

pour la suite, je ne ferais pas une macro pour chaque sélection, j'ai prévu une autre qui fera tourner pour sélectionner ligne par ligne

merci encore pour ton aide précieuse

sera t'il possible de te contacter de nouveau si besoin ^^
Messages postés
6822
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
30 juin 2020
109
maintenant, peux tu m'expliquer à quoi sert ce code stp :
"On Error Resume Next"


https://docs.microsoft.com/fr-fr/dotnet/visual-basic/language-reference/statements/on-error-statement

Cache les erreurs, a n'employer qu'en dernier recours

dans ce cas le bug se produit en fin de sub

sera t'il possible de te contacter de nouveau si besoin ^^

Oui par intermédiaire de ce forum. Si je suis disponible, je me ferai un plaisir de répondre

@+ Le Pivert