Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
Les cellules B1 à B4 contiennent bien un lien hypertexte
Par contre je confirme le problème avec le clic droit
Je renvoie le fichier avec les anomalies :
Si une cellule est vide, on à bien accès au clic droit (Exemple B12)
Si elle n’est pas vide, impossible de faire un clic droit (Exemple B13)
De même j’ai créé un lien hypertexte dans les cellules B10 et B11 avant de valider les macros, puis qu’après c’est impossible.
En suivant la même démarche (écrite en rouge)
Je ne suis pas parvenu à copier ces liens hypertexte.
je viens de constater que:
si le lien renvoie vers une autre cellule du fichier, il faut utiliser SubAddress
si le lien renvoie vers une adresse htpp, il faut utiliser Address
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target = "" Or Sheets(3).Range("A1") = "" Then Exit Sub
Target.Hyperlinks.Add Anchor:=Selection, Address:="" & Sheets(3).Range("A1") & ""
Sheets(3).Range("A1") = ""
End Sub
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If Target.Count > 1 Then Exit Sub
If Target = "" Then Exit Sub
Cancel = True
On Error Resume Next
Sheets(3).Range("A1") = Target.Hyperlinks(1).Address
End Sub
peut-être qu'en récupérant et combinant les deux;
Sheets(3).Range("A1") = Target.Hyperlinks(1).Address
Sheets(3).Range("A2") = Target.Hyperlinks(1).SubAddress
......... mais pas trop le temps en ce jour de Noël
Pour des liens hypertexte vers une adresse Web ou des fichiers extérieurs
Cette nouvelle macro fonctionne parfaitement 😱
Mais comme dans les 2 cas on perd l’usage du clic droit sur les cellules pleines, serait-il possible de faire 2 macros conventionnelles à placer dans les modules et que l’on validerait simplement par un bouton ou raccourci clavier 😕
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If Target.Count > 1 Then Exit Sub
If Target = "" Then Exit Sub
On Error Resume Next
If Target.Hyperlinks(1).Address = "" Then Exit Sub
Cancel = True
Sheets(3).Range("A1") = Target.Hyperlinks(1).Address
End Sub
Si j'ai bien compris, lors d'un copier-coller on ne veut que coller le lien.
On peut utiliser par exemple cette macro dans le code de la feuille :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
dim a$, sa$
If Target.Count = 1 Then
If Target.Hyperlinks.Count = 1 Then
a = Target.Hyperlinks(1).Address
sa = Target.Hyperlinks(1).SubAddress
Application.EnableEvents = False
Application.Undo
Me.Hyperlinks.Add Target, a, sa
Application.EnableEvents = True
End If
End If
End Sub
Noter que le texte de la cellule n'est pas modifié.
C’est presque parfait
Il n’a plus que les cellules qui ont un lien hypertexte qui ne permettent pas de faire un clic droit.
Pour les formats, copiage ou autre, ce n’est pas grave, on peut faire autrement.
Plus embêtant, on ne peut donc pas modifier supprimer ou modifier un lien hypertexte directement. 🙁
Je ne sais pas si possible
Existe-il un moyen d’inhiber cette macro (et seulement celle-ci) sans la supprimer 😕
Ou au contraire de la rendre active lorsque l’on a besoin de faire beaucoup de manipulations de liens hypertexte 😕
Si l'on veut aussi copier le texte de la cellule :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim a$, sa$, d$
If Target.Count = 1 Then
If Target.Hyperlinks.Count = 1 Then
a = Target.Hyperlinks(1).Address
sa = Target.Hyperlinks(1).SubAddress
d = Target
Application.EnableEvents = False
Application.Undo
Me.Hyperlinks.Add Target, a, sa, TextToDisplay:=d
Application.EnableEvents = True
End If
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Dim a$, sa$
If Target.Count = 1 Then
If Target.Hyperlinks.Count = 1 Then
a = Target.Hyperlinks(1).Address
sa = Target.Hyperlinks(1).SubAddress
Application.EnableEvents = False
Application.Undo
If a = "" Then Me.Hyperlinks.Add Target, a, sa _
Else Me.Hyperlinks.Add Target, a
Application.EnableEvents = True
End If
End If
End Sub
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim a$, sa$, d$
If Target.Count = 1 Then
If Target.Hyperlinks.Count = 1 Then
a = Target.Hyperlinks(1).Address
sa = Target.Hyperlinks(1).SubAddress
d = Target
Application.EnableEvents = False
Application.Undo
If a = "" Then Me.Hyperlinks.Add Target, a, sa, TextToDisplay:=d _
Else Me.Hyperlinks.Add Target, a, TextToDisplay:=d
Application.EnableEvents = True
End If
End If
End Sub
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD