Lancement d'un lien hypertexte avec une macro

Signaler
Messages postés
19
Date d'inscription
mardi 26 mai 2020
Statut
Membre
Dernière intervention
28 juillet 2020
-
Messages postés
19
Date d'inscription
mardi 26 mai 2020
Statut
Membre
Dernière intervention
28 juillet 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

28 réponses

Hello Le_Pivert

désolé mais, je n'y arrive pas
je te joint le fichier avec la macro qui tu m'as donné il y a quelque temps
peux tu le modifier et, me l'envoyer de nouveau stp

c'est important,
je compte sur toi ^^
merci merci d'avance

https://cjoint.com/c/JGvgYQiIRkT
Messages postés
6915
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
2 septembre 2020
112
Tu te mets sur la feuille Synoptic diagram, tu fais Alt F11 et tu colles ce code.

C'est simple!

Tu peux le faire toi même

Je ne peux pas faire plus

Bon courage
Le_Pivert

je l'ai fait mais, lorsque je lance la macro, elle sélectionne la cellule A1 de l'onglet "Synoptic diagram" et la colle dans "Specific Synoptic diagram"

désolé mais, peux tu le faire stp et m'envoyer le fichier
Messages postés
6915
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
2 septembre 2020
112
La demande de ce post était:

Lancement d'un lien hypertexte avec une macro

Je crois y avoir répondu!

Désolé je ne peux pas faire plus, ce n'est pas dans mes compétences.

Poste un nouveau post avec les difficultés rencontrées. Un autre membre pourra y répondre.

Je te souhaite de mener à bien ton projet
Messages postés
6915
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
2 septembre 2020
112 >
Messages postés
6915
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
2 septembre 2020

Bonjour sylvain_6 ,

bonne nouvelle, j'ai réussi a faire ce que tu désirais Je n'aime pas rester sur un échec, alors j'ai cherché et trouvé!

Si cela t'interesse toujours!

Voilà

@+ Le Pivert
Messages postés
6915
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
2 septembre 2020
112 >
Messages postés
6915
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
2 septembre 2020

Impossibilité de me servir de mon pc. Mise à jour Microsoft 2004 très longue. Disponible dans la soirée j'espère!
@ + Le Pivert
Messages postés
6915
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
2 septembre 2020
112 >
Messages postés
6915
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
2 septembre 2020

voilà le classeur

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

bonne lecture

@+ Le Pivert
Messages postés
19
Date d'inscription
mardi 26 mai 2020
Statut
Membre
Dernière intervention
28 juillet 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
6915
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
2 septembre 2020
112
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
19
Date d'inscription
mardi 26 mai 2020
Statut
Membre
Dernière intervention
28 juillet 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
19
Date d'inscription
mardi 26 mai 2020
Statut
Membre
Dernière intervention
28 juillet 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
6915
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
2 septembre 2020
112
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
19
Date d'inscription
mardi 26 mai 2020
Statut
Membre
Dernière intervention
28 juillet 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
6915
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
2 septembre 2020
112
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
19
Date d'inscription
mardi 26 mai 2020
Statut
Membre
Dernière intervention
28 juillet 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
6915
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
2 septembre 2020
112
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
6915
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
2 septembre 2020
112
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
6915
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
2 septembre 2020
112
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
6915
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
2 septembre 2020
112
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
19
Date d'inscription
mardi 26 mai 2020
Statut
Membre
Dernière intervention
28 juillet 2020

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

dis moi si tu as reçu le fichier
Messages postés
19
Date d'inscription
mardi 26 mai 2020
Statut
Membre
Dernière intervention
28 juillet 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
6915
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
2 septembre 2020
112
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
19
Date d'inscription
mardi 26 mai 2020
Statut
Membre
Dernière intervention
28 juillet 2020

voici mon fichier
peux tu analyser stp

https://cjoint.com/c/JFpnYBDompT
Messages postés
6915
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
2 septembre 2020
112
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
19
Date d'inscription
mardi 26 mai 2020
Statut
Membre
Dernière intervention
28 juillet 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
6915
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
2 septembre 2020
112
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
Messages postés
19
Date d'inscription
mardi 26 mai 2020
Statut
Membre
Dernière intervention
28 juillet 2020

Salut Le_pivert,

j'ai repris la macro,
nouveau problème :


celle-ci recherche dans les cellules de B20 à B23 le chiffre "1"
si elle trouve le chiffre, elle sélectionne la cellule de la même ligne mais de la colonne AE
c'est le lien hypertexte, vu dans la macro précédente
celui-ci renvoie à une sélection
la macro copie la sélection et la colle dans un nouvelle onglet à un endroit bien précis

ensuite, même macro pour recherche chiffre 2
ensuite, même macro pour recherche chiffre 3
etc...

cela fonctionne mais les macros sélectionnent toujours le lien hypertexte où il y a le chiffre 1, donc copie à chaque fois la même sélection

je t'ai mis le lien du fichier pour mieux comprendre

peux tu analyser stp, et voir pourquoi les macros sélectionnent toujours le même lien hypertexte

https://cjoint.com/c/JGhloWfH0CT
Messages postés
19
Date d'inscription
mardi 26 mai 2020
Statut
Membre
Dernière intervention
28 juillet 2020

Re Le_Pivert

en fait, je reprends tout et, même la macro que tu m'as donné pour lien hypertexte avec plage, ne fonctionne plus ?
voir ci-dessous
elle fonctionne uniquement si l'on sélectionne avant le lien hypertexte dans le fichier !
peux tu regarder stp

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
Messages postés
6915
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
2 septembre 2020
112
Comme ceci:

Sub synoptic()
recherche (1)
recherche (2)
End Sub
Sub recherche(ByVal nombre As Integer)
Dim diasyn As Worksheet, spesyndia As Worksheet, syn As Worksheet
Dim img As Object
Dim ligne As Long, position As Long, chiffre As Long, plage As Long
Application.ScreenUpdating = False
Set syn = Worksheets("Synoptic")
Set diasyn = Worksheets("Synoptic diagram")
Set spesyndia = Worksheets("Specific Synoptic diagram")
spesyndia.Select
Cells.Select
Selection.Delete
       For Each img In ActiveSheet.Shapes
       img.Delete
        Next
Sheets("Synoptic").Select
On Error Resume Next
position = 1
For ligne = 20 To 53
If syn.Cells(ligne, 2).Value = "" Then
ElseIf syn.Cells(ligne, 2).Value = nombre Then 'recherche la ligne ou se trouve "1"
   Cells(ligne, 31).Select
With Selection.Hyperlinks(1)
.Follow NewWindow:=False, AddHistory:=True
 If .SubAddress <> "" Then
    plage = Split(.SubAddress, "!")(1) 'sélectionne le lien hypertexte
    End If
 End With
diasyn.Select
Range(Range(plage)).Select  'sélectionne la plage du synoptic recherché
Selection.Copy
    spesyndia.Select
    Cells(position, 1).Select
    ActiveSheet.Paste
End If
Next
Application.ScreenUpdating = True
End Sub


voilà

@+ Le Pivert
Messages postés
19
Date d'inscription
mardi 26 mai 2020
Statut
Membre
Dernière intervention
28 juillet 2020

Hello le_pivert
je vais tester,

maintenant, pourrais tu envoyer le fichier modifié avec cette macro stp

ce serait plus simple pour moi

merci d'avance
Messages postés
19
Date d'inscription
mardi 26 mai 2020
Statut
Membre
Dernière intervention
28 juillet 2020

re Le_pivert

as tu testé ta 1ére macro, car en relançant, celle-ci, il ne se passe rien ?
celle où le lien hypertexte doit ouvrir la sélection ?
de mon côté, cela ne fonctionne pas !
test et rep moi stp