OVH Cloud OVH Cloud

Lien hypertexte pointant sur une macro

7 réponses
Avatar
Nicolas B.
Bonsoir à tous,

Est-il possible de lancer une macro à partir d'un lien hypertexte placé dans
une cellule ?
J'ai cherché dans l'aide, mais rien trouvé :-(

Merci

--
Nicolas B.

Adresse @adresse.bidon.com invalide,
E-mail : www.cerbermail.com/?gAAILfkPsC

7 réponses

Avatar
Jean-François Aubert
Salut Nicolas,

- en A1 tu tapes un nom de macro, ici : macro1
- en A2 tu tapes un nom de macro, ici : macro2
- tu sélectionnes les cellules A1 et A2
- tu lances la macro Sub ajusteLienHypertexteLanceurDeMacro()
elle va ajuster les liens, en les dirigeants sur leur propre cellule "hôte",
ce qui permet de récupérer le nom d'une macro (valeur de la cellule "hôte").

Après cela, les liens hypertextes lanceront les macros.

'*************************************************
'====== dans le module de feuille
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
Call yy
End Sub

'====== dans un module standard
Public qui
Sub yy()
Dim laMacro
qui = ActiveCell.Address
laMacro = ActiveWorkbook.Name & "!" & Range(qui)
On Error Resume Next
Application.Run laMacro
If Err > 0 Then
MsgBox "la macro : " & laMacro & " n'existe pas !"
Exit Sub
End If
End Sub 'jfa


Sub macro1()
MsgBox "macro lancée par le lien hypertexte : " & Range(qui)
End Sub

Sub macro2()
MsgBox "macro lancée par le lien hypertexte : " & Range(qui)
End Sub
'.....................................................................................
Sub ajusteLienHypertexteLanceurDeMacro()
Dim c As Range
Dim sh
sh = ActiveSheet.Name
For Each c In Selection
c.Select
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
sh & "!" & ActiveCell.Address, TextToDisplay:¬tiveCell.Value
Next
End Sub 'jfa


'************************************


--
Amicalement

Jean-François Aubert
{Vaudois de la Côte Lémanique}


"Nicolas B." a écrit dans le message de
news:%
Bonsoir à tous,

Est-il possible de lancer une macro à partir d'un lien hypertexte placé dans
une cellule ?
J'ai cherché dans l'aide, mais rien trouvé :-(

Merci

--
Nicolas B.

Adresse @adresse.bidon.com invalide,
E-mail : www.cerbermail.com/?gAAILfkPsC




Avatar
j
"Jean-François Aubert" <à a écrit dans le message de
news: 3fd29c68$
Salut Nicolas,
Après cela, les liens hypertextes lanceront les macros.

'*************************************************
'====== dans le module de feuille
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
Call yy
End Sub



ça existe où ce truc là Worksheet_FollowHyperlink ?
apparemment pas dans mon vieil Excel 97 !
--

http://jacxl.free.fr/

Avatar
Philippe.R
Bonjour Jacques et Jean François,

Worksheet_FollowHyperlink n'est pas non plus présent dans mon 97 qui se limite à cette liste
d'évènements :

Worksheet_Activate
Worksheet_BeforeDoubleClick
Worksheet_BeforeRightClick
Worksheet_Calculate
Worksheet_Change
Worksheet_Deactivate
Worksheet_SelectionChange

alors que la version 2002 l'étend à ces deux évènements supplémentaires :

Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
--
Amicales Salutations

Retirer A_S_ pour répondre.
XL97 / XL2002

"" a écrit dans le message de
news:%

"Jean-François Aubert" <à a écrit dans le message de
news: 3fd29c68$
Salut Nicolas,
Après cela, les liens hypertextes lanceront les macros.

'*************************************************
'====== dans le module de feuille
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
Call yy
End Sub



ça existe où ce truc là Worksheet_FollowHyperlink ?
apparemment pas dans mon vieil Excel 97 !
--

http://jacxl.free.fr/






Avatar
Nicolas B.
Merci pour ta réponse.

--
Nicolas B.

Adresse @adresse.bidon.com invalide,
E-mail : www.cerbermail.com/?gAAILfkPsC


Salut Nicolas,

- en A1 tu tapes un nom de macro, ici : macro1
- en A2 tu tapes un nom de macro, ici : macro2
- tu sélectionnes les cellules A1 et A2
- tu lances la macro Sub ajusteLienHypertexteLanceurDeMacro()
elle va ajuster les liens, en les dirigeants sur leur propre
cellule "hôte", ce qui permet de récupérer le nom d'une macro
(valeur de la cellule "hôte").

Après cela, les liens hypertextes lanceront les macros.

'*************************************************
'====== dans le module de feuille
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
Call yy
End Sub

'====== dans un module standard
Public qui
Sub yy()
Dim laMacro
qui = ActiveCell.Address
laMacro = ActiveWorkbook.Name & "!" & Range(qui)
On Error Resume Next
Application.Run laMacro
If Err > 0 Then
MsgBox "la macro : " & laMacro & " n'existe pas !"
Exit Sub
End If
End Sub 'jfa


Sub macro1()
MsgBox "macro lancée par le lien hypertexte : " & Range(qui)
End Sub

Sub macro2()
MsgBox "macro lancée par le lien hypertexte : " & Range(qui)
End Sub

'...........................................................................

..........
Sub ajusteLienHypertexteLanceurDeMacro()
Dim c As Range
Dim sh
sh = ActiveSheet.Name
For Each c In Selection
c.Select
ActiveSheet.Hyperlinks.Add Anchor:=Selection,
Address:="", SubAddress:= _ sh & "!" &
ActiveCell.Address, TextToDisplay:¬tiveCell.Value Next
End Sub 'jfa


'************************************



"Nicolas B." a écrit dans le
message de news:%
Bonsoir à tous,

Est-il possible de lancer une macro à partir d'un lien hypertexte
placé dans une cellule ?
J'ai cherché dans l'aide, mais rien trouvé :-(

Merci

--
Nicolas B.

Adresse @adresse.bidon.com invalide,
E-mail : www.cerbermail.com/?gAAILfkPsC




Avatar
Jean-François Aubert
Worksheet_FollowHyperlink(ByVal Target As Hyperlink)


existe depuis Excel 2000.

Toutes mes excuses aux antiquaires ;-)) ...j'ai le '97 seulement au boulot....
--
Amicalement

Jean-François Aubert
{Vaudois de la Côte Lémanique}



'====== dans le module de feuille
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
Call yy
End Sub



ça existe où ce truc là Worksheet_FollowHyperlink ?
apparemment pas dans mon vieil Excel 97 !
--

http://jacxl.free.fr/






Avatar
Denis Michon
Bonjour Jean-François,

J'ai conservé une copie de la procédure que tu as publiée ... je la trouve intéressante.

J'ai cependant fait quelques modifications ...dont je te fais part .

Procédure visant à créer les liens hypertextes avec le contenu des cellules de la colonne A

'--------------------------
Sub ajusteLienHypertexteLanceurDeMacro()

Dim Rg As Range, C As Range

With Worksheets("Feuil2")
Set Rg = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
For Each C In Rg
.Hyperlinks.Add Anchor:=C, Address:="", SubAddress:= _
C.Address(, , xlA1, True), TextToDisplay:=C.Text
Next
End With
Set Rg = Nothing
End Sub
'--------------------------


Dans le module feuille où l'action se déroule.
Cette façon de faire fait disparaître l'utilisation de la variable "Public"
'--------------------------
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)

yy Target.Parent.Address(0, 0)

End Sub
'--------------------------

Dans un module standard :
La seule modification "importante" est au sujet de la syntaxe de cette ligne

LaMacro = "'" & ThisWorkbook.Name & "'!macro1"

L'utilisation des apostrophes "'" permet d'utiliser un nom de classeur contenant des espaces , sans ces dernieres, point de
salut.

Il est d'ailleurs possible de passer un paramètre à l'appel de la macro :

Application.Run LaMacro, Adr

'--------------------------
Sub yy(Adr As String)

Dim LaMacro As String
LaMacro = "'" & ThisWorkbook.Name & "'!macro1"
On Error Resume Next
Application.Run LaMacro, Adr
If Err > 0 Then
MsgBox "la macro : " & LaMacro & " n'existe pas !"
Exit Sub
End If

End Sub
'--------------------------


Dans un module standard. En supposant que la cellule cliquée
contienne le mot "Macro1" ....

'--------------------------
Sub macro1(Adresse As String)
MsgBox "macro lancée par le lien hypertexte : " & Adresse
End Sub
'--------------------------


Salutations!



"Jean-François Aubert" <à a écrit dans le message de news:3fd29c68$
Salut Nicolas,

- en A1 tu tapes un nom de macro, ici : macro1
- en A2 tu tapes un nom de macro, ici : macro2
- tu sélectionnes les cellules A1 et A2
- tu lances la macro Sub ajusteLienHypertexteLanceurDeMacro()
elle va ajuster les liens, en les dirigeants sur leur propre cellule "hôte",
ce qui permet de récupérer le nom d'une macro (valeur de la cellule "hôte").

Après cela, les liens hypertextes lanceront les macros.

'*************************************************
'====== dans le module de feuille
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
Call yy
End Sub

'====== dans un module standard
Public qui
Sub yy()
Dim laMacro
qui = ActiveCell.Address
laMacro = ActiveWorkbook.Name & "!" & Range(qui)
On Error Resume Next
Application.Run laMacro
If Err > 0 Then
MsgBox "la macro : " & laMacro & " n'existe pas !"
Exit Sub
End If
End Sub 'jfa


Sub macro1()
MsgBox "macro lancée par le lien hypertexte : " & Range(qui)
End Sub

Sub macro2()
MsgBox "macro lancée par le lien hypertexte : " & Range(qui)
End Sub
'.....................................................................................
Sub ajusteLienHypertexteLanceurDeMacro()
Dim c As Range
Dim sh
sh = ActiveSheet.Name
For Each c In Selection
c.Select
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
sh & "!" & ActiveCell.Address, TextToDisplay:¬tiveCell.Value
Next
End Sub 'jfa


'************************************


--
Amicalement

Jean-François Aubert
{Vaudois de la Côte Lémanique}


"Nicolas B." a écrit dans le message de
news:%
Bonsoir à tous,

Est-il possible de lancer une macro à partir d'un lien hypertexte placé dans
une cellule ?
J'ai cherché dans l'aide, mais rien trouvé :-(

Merci

--
Nicolas B.

Adresse @adresse.bidon.com invalide,
E-mail : www.cerbermail.com/?gAAILfkPsC




Avatar
Jean-François Aubert
Salut Denis,

J'ai noté tes modifications; c'est une façon interressante.
J'ai cependant également fait une modification de la modification ;-)

dans la proc yy
LaMacro = "'" & ThisWorkbook.Name & "'!macro1"


devient:
LaMacro = "'" & ThisWorkbook.Name & "'!" & Range(Adr).Text
ceci, pour lancer la bonne macro.

'********************************
'=====Úns un module standard :
Sub yy(Adr As String)
Dim LaMacro As String
LaMacro = "'" & ThisWorkbook.Name & "'!" & Range(Adr).Text
On Error Resume Next
Application.Run LaMacro, Adr
If Err > 0 Then
MsgBox "la macro : " & LaMacro & " n'existe pas !"
Exit Sub
End If
End Sub
'.................................................................................
Sub ajusteLienHypertexteLanceurDeMacro()

Dim Rg As Range, C As Range

With Worksheets("Feuil2")
Set Rg = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
For Each C In Rg
.Hyperlinks.Add Anchor:=C, Address:="", SubAddress:= _
C.Address(, , xlA1, True), TextToDisplay:=C.Text
Next
End With
Set Rg = Nothing
End Sub

'======Úns le module feuille où l'action se déroule.
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
yy Target.Parent.Address(0, 0)
End Sub
'--------------------------

'=======Úns un module standard. En supposant que la cellule cliquée
'========contienne le mot "Macro1" ....
Sub macro1(Adresse As String)
MsgBox "macro lancée par le lien hypertexte : " & Adresse
End Sub

'**********************************
--
Amicalement

Jean-François Aubert
{Vaudois de la Côte Lémanique}


"Denis Michon" <denis a écrit dans le message de
news:JUKAb.24536$
Bonjour Jean-François,

J'ai conservé une copie de la procédure que tu as publiée ... je la trouve intéressante.

J'ai cependant fait quelques modifications ...dont je te fais part .

Procédure visant à créer les liens hypertextes avec le contenu des cellules de la colonne A

'--------------------------
Sub ajusteLienHypertexteLanceurDeMacro()

Dim Rg As Range, C As Range

With Worksheets("Feuil2")
Set Rg = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
For Each C In Rg
.Hyperlinks.Add Anchor:=C, Address:="", SubAddress:= _
C.Address(, , xlA1, True), TextToDisplay:=C.Text
Next
End With
Set Rg = Nothing
End Sub
'--------------------------


Dans le module feuille où l'action se déroule.
Cette façon de faire fait disparaître l'utilisation de la variable "Public"
'--------------------------
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)

yy Target.Parent.Address(0, 0)

End Sub
'--------------------------

Dans un module standard :
La seule modification "importante" est au sujet de la syntaxe de cette ligne

LaMacro = "'" & ThisWorkbook.Name & "'!macro1"

L'utilisation des apostrophes "'" permet d'utiliser un nom de classeur contenant des espaces ,
sans ces dernieres, point de

salut.

Il est d'ailleurs possible de passer un paramètre à l'appel de la macro :

Application.Run LaMacro, Adr

'--------------------------
Sub yy(Adr As String)

Dim LaMacro As String
LaMacro = "'" & ThisWorkbook.Name & "'!macro1"
On Error Resume Next
Application.Run LaMacro, Adr
If Err > 0 Then
MsgBox "la macro : " & LaMacro & " n'existe pas !"
Exit Sub
End If

End Sub
'--------------------------


Dans un module standard. En supposant que la cellule cliquée
contienne le mot "Macro1" ....

'--------------------------
Sub macro1(Adresse As String)
MsgBox "macro lancée par le lien hypertexte : " & Adresse
End Sub
'--------------------------


Salutations!



"Jean-François Aubert" <à a écrit dans le message de
news:3fd29c68$

Salut Nicolas,

- en A1 tu tapes un nom de macro, ici : macro1
- en A2 tu tapes un nom de macro, ici : macro2
- tu sélectionnes les cellules A1 et A2
- tu lances la macro Sub ajusteLienHypertexteLanceurDeMacro()
elle va ajuster les liens, en les dirigeants sur leur propre cellule "hôte",
ce qui permet de récupérer le nom d'une macro (valeur de la cellule "hôte").

Après cela, les liens hypertextes lanceront les macros.

'*************************************************
'====== dans le module de feuille
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
Call yy
End Sub

'====== dans un module standard
Public qui
Sub yy()
Dim laMacro
qui = ActiveCell.Address
laMacro = ActiveWorkbook.Name & "!" & Range(qui)
On Error Resume Next
Application.Run laMacro
If Err > 0 Then
MsgBox "la macro : " & laMacro & " n'existe pas !"
Exit Sub
End If
End Sub 'jfa


Sub macro1()
MsgBox "macro lancée par le lien hypertexte : " & Range(qui)
End Sub

Sub macro2()
MsgBox "macro lancée par le lien hypertexte : " & Range(qui)
End Sub
'.....................................................................................
Sub ajusteLienHypertexteLanceurDeMacro()
Dim c As Range
Dim sh
sh = ActiveSheet.Name
For Each c In Selection
c.Select
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
sh & "!" & ActiveCell.Address, TextToDisplay:¬tiveCell.Value
Next
End Sub 'jfa


'************************************


--
Amicalement

Jean-François Aubert
{Vaudois de la Côte Lémanique}


"Nicolas B." a écrit dans le message de
news:%
Bonsoir à tous,

Est-il possible de lancer une macro à partir d'un lien hypertexte placé dans
une cellule ?
J'ai cherché dans l'aide, mais rien trouvé :-(

Merci

--
Nicolas B.

Adresse @adresse.bidon.com invalide,
E-mail : www.cerbermail.com/?gAAILfkPsC