Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Lien hypertexte multiple

6 réponses
Avatar
Eric S
Bonjour,

Je cherche à créer dans une case un lien hypertexte qui ferait des
recherches à plusieurs endroits.

Exemple :
- la cellule contient "pingoin"
- la cellule apparaît comme ayant un lien hypertexte
- quand on clique sur la cellule, on essaie dans l'ordre :

A - ouvrir le document présent sur l'ordinateur "/animaux/pingoin.pdf".
S'il n'existe pas, on passe au cas suivant :

B - ouvrir le document présent sur le réseau local
"//serveur/animaux/pingoin.pdf". S'il n'existe pas, on passe au cas
suivant :

C - d'ouvrir le lien web : "http://www.lesanimaux.fr/pingoin"

Je ne vois pas trop comment procéder. Et ultime raffinement, pour les
cas A et B, il faut enlever les éventuels caractères spéciaux présents
dans le texte de la cellule.

J'écoute vos suggestions...

Éric

6 réponses

Avatar
stéphane
Bonjour,

la solution suivante devrait convenir:

1/ il faut faire un lien hypertexte sur ta cellule contenant pingoin (au
fait l'orthographe exacte est pingouin ) qui pointe sur lui même
(emplacement dans le document)


2/ Ajouter le code ci-dessous sur ta feuille excel

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
Dim CheminLocal As String, CheminReseau As String, CheminWeb As String
Dim CheminValide As String

CheminLocal = "animaux" :CheminReseau = "serveuranimaux" :
CheminWeb="http://www.lesanimaux.fr/"


Set fs = CreateObject("Scripting.filesystemobject")


If fs.fileexists(CheminLocal & Target.Name & ".pdf") Then
CheminValide = CheminLocal
ElseIf fs.fileexists(CheminReseau & Target.Name & ".pdf") Then
CheminValide = CheminReseau
Else
CheminValide = CheminWeb
End If

ActiveWorkbook.FollowHyperlink Address:=CheminValide & Target.Name & ".pdf"

End Sub


l'adresse web n'est pas vérifiée

Stéphane



"Eric S" a écrit dans le message de news:
47bc7575$0$22230$
Bonjour,

Je cherche à créer dans une case un lien hypertexte qui ferait des
recherches à plusieurs endroits.

Exemple :
- la cellule contient "pingoin"
- la cellule apparaît comme ayant un lien hypertexte
- quand on clique sur la cellule, on essaie dans l'ordre :

A - ouvrir le document présent sur l'ordinateur "/animaux/pingoin.pdf".
S'il n'existe pas, on passe au cas suivant :

B - ouvrir le document présent sur le réseau local
"//serveur/animaux/pingoin.pdf". S'il n'existe pas, on passe au cas
suivant :

C - d'ouvrir le lien web : "http://www.lesanimaux.fr/pingoin"

Je ne vois pas trop comment procéder. Et ultime raffinement, pour les cas
A et B, il faut enlever les éventuels caractères spéciaux présents dans le
texte de la cellule.

J'écoute vos suggestions...

Éric


Avatar
Eric S
Bonjour,

la solution suivante devrait convenir:


Oui, ça convient pas mal. J'ai juste eu un problème de chemin relatif
d'où la transformation :

If fs.fileexists(ActiveWorkbook.Path & CheminLocal & Target.Name &
".pdf") Then

Et puis il m'a fallu un moment pour comprendre où mettre le code ;-)

1/ il faut faire un lien hypertexte sur ta cellule contenant pingoin (au
fait l'orthographe exacte est pingouin )


Ça, c'est pour ne pas rameuter les moteurs de recherche :-p

l'adresse web n'est pas vérifiée


Normalement, elle est toujours valide. Mais c'est vrai que dans le cas
fortement improbable où elle ne le serait pas (style faute de frappe sur
le pingoin), le message d'erreur avec ouverture de VBA risque d'affoler
les utilisateurs. Je vais me pencher dessus.

En tous cas, merci bien pour l'aide.

Eric

Avatar
stéphane
pour traiter le message d'erreur VBA (avec le lien http inexistant)

on peut utiliser le traitement d'erreur.

'Placer juste en dessous déclaration de variable
On Error Goto TraiterErreur


'Puis placer à la fin de la procèdure

Exit Sub
TraiterErreur:

If Err.Number = -2146697210 Then Resume Next


End Sub


Tu peux mettre un msgbox avant le Resume Next.



Stéphane


"Eric S" a écrit dans le message de news:
47bd8109$0$5217$
Bonjour,

la solution suivante devrait convenir:


Oui, ça convient pas mal. J'ai juste eu un problème de chemin relatif d'où
la transformation :

If fs.fileexists(ActiveWorkbook.Path & CheminLocal & Target.Name & ".pdf")
Then

Et puis il m'a fallu un moment pour comprendre où mettre le code ;-)

1/ il faut faire un lien hypertexte sur ta cellule contenant pingoin (au
fait l'orthographe exacte est pingouin )


Ça, c'est pour ne pas rameuter les moteurs de recherche :-p

l'adresse web n'est pas vérifiée


Normalement, elle est toujours valide. Mais c'est vrai que dans le cas
fortement improbable où elle ne le serait pas (style faute de frappe sur
le pingoin), le message d'erreur avec ouverture de VBA risque d'affoler
les utilisateurs. Je vais me pencher dessus.

En tous cas, merci bien pour l'aide.

Eric



Avatar
Eric S
Il me reste une question subsidiaire :

1/ il faut faire un lien hypertexte sur ta cellule contenant pingoin (au
fait l'orthographe exacte est pingouin ) qui pointe sur lui même
(emplacement dans le document)


Comment faire ça par macro? J'ai essayé :

ActiveCell.Hyperlinks.Add Anchor:=Selection, Address:="", _
SubAddress:¬tiveCell.AddressLocal

mais je me retrouve avec le numéro de la cellule $K$25 dans Target.Name.

(Si j'édite manuellement le lien hypertexte et que je le valide sans
modification, ça devient bon...)

Eric

Avatar
stéphane
remplacer Target.Name par Target.TextToDisplay ça devrait aller

Stéphane


"Eric S" a écrit dans le message de news:
47bd8d85$0$4067$
Il me reste une question subsidiaire :

1/ il faut faire un lien hypertexte sur ta cellule contenant pingoin (au
fait l'orthographe exacte est pingouin ) qui pointe sur lui même
(emplacement dans le document)


Comment faire ça par macro? J'ai essayé :

ActiveCell.Hyperlinks.Add Anchor:=Selection, Address:="", _
SubAddress:¬tiveCell.AddressLocal

mais je me retrouve avec le numéro de la cellule $K$25 dans Target.Name.

(Si j'édite manuellement le lien hypertexte et que je le valide sans
modification, ça devient bon...)

Eric



Avatar
Eric S
remplacer Target.Name par Target.TextToDisplay ça devrait aller


Ah oui, joli contournement du problème ;-)

Et pour le traitement d'erreur, en fait, le site cible renvoie toujours
une réponse même quand il y a un problème donc pas besoin de traitement
au niveau d'excel.

Au final, tout fonctionne. Encore une fois merci.

Eric