Lien hypertexte multiple

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
stéphane
Le #5242631
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" 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


Eric S
Le #5242521
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

stéphane
Le #5242491
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" 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



Eric S
Le #5242471
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

stéphane
Le #5242461
remplacer Target.Name par Target.TextToDisplay ça devrait aller

Stéphane


"Eric S" 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



Eric S
Le #5242401
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

Publicité
Poster une réponse
Anonyme