Créer un lien hypertexte stable
Nous avons vu récemment la difficulté – on pourrait même dire l’impossibilité – rencontrée quand on crée un lien hypertexte et que l’on désire par exemple que les chemins identifiant les classeurs s’actualisent pour les liens vers le classeur lui-même, et ne s’actualisent pas pour les liens vers d’autres classeurs.
Avec le réglage que nous avons vu dans la commande Outils – Options – Général, bouton « Options Web », case « Mettre à jour les liens lors de l’enregistrement », on a des liens qui soit s’actualisent toujours, soit ne s’actualisent jamais, lors du déplacement du classeur contenant les liens. Il est donc impossible de demander que seuls les liens « internes » soient actualisés lors du déplacement du classeur.
Le remède consiste à utiliser une fonction peu connue d’Excel, la fonction Lien.Hypertexte() :
Avec les formules présentées ci-dessus sous la forme de commentaires, nous avons enfin ce que nous voulions. En effet, les liens internes (tel celui de la cellule A3) font référence au classeur dans le répertoire actif, quel qu’il soit. Les liens externes (tel celui de la cellule B1) font référence à un classeur précis logé à un endroit précis sur un disque précis, et ne seront donc pas actualisés.
Remarque 1 – Seul problème potentiel : si l’on renomme le classeur, actuellement Hyper2.xls, cela ne modifiera pas son nom dans la formule de la cellule A3 puisque cet argument se trouve sous la forme de texte. Il faudrait donc, idéalement, remplacer ce nom par la référence à une cellule du classeur qui afficherait – de façon dynamique – le nom courant du classeur.
Avec le réglage que nous avons vu dans la commande Outils – Options – Général, bouton « Options Web », case « Mettre à jour les liens lors de l’enregistrement », on a des liens qui soit s’actualisent toujours, soit ne s’actualisent jamais, lors du déplacement du classeur contenant les liens. Il est donc impossible de demander que seuls les liens « internes » soient actualisés lors du déplacement du classeur.
Le remède consiste à utiliser une fonction peu connue d’Excel, la fonction Lien.Hypertexte() :
Avec les formules présentées ci-dessus sous la forme de commentaires, nous avons enfin ce que nous voulions. En effet, les liens internes (tel celui de la cellule A3) font référence au classeur dans le répertoire actif, quel qu’il soit. Les liens externes (tel celui de la cellule B1) font référence à un classeur précis logé à un endroit précis sur un disque précis, et ne seront donc pas actualisés.
Remarque 1 – Seul problème potentiel : si l’on renomme le classeur, actuellement Hyper2.xls, cela ne modifiera pas son nom dans la formule de la cellule A3 puisque cet argument se trouve sous la forme de texte. Il faudrait donc, idéalement, remplacer ce nom par la référence à une cellule du classeur qui afficherait – de façon dynamique – le nom courant du classeur.
Remarque 2 – Il semblerait que cela ne marche pas quand le nom du classeur et ou de la feuille comporte au moins un espace, auquel cas la référence classeur-feuille est encadrée d'apostrophes. Exemple : =lien.hypertexte("'[LE nov-déc 2006.xls]Hyper 2'!$D$1","Aller en D1").
5 Commentaire(s):
et si la formule ne fonctionne pas (bonne syntaxe) : d'où peut venir le problème ?
By Anonyme, sur 3:03 PM
Pour que je puisse en juger, il faudrait me mailer un fichier où cela ne marche pas...
By Hervé Thiriez, sur 9:46 AM
Existe-t-il une fonction, une formule pour détecter les liens hypertexte sous Excel?
By Montessori à petits pas, sur 4:13 PM
Vous pouvez utiliser la commande Hyperlinkls en VBA. Ainsi :
MsgBox ActiveSheet.Hyperlinks.Count
affiche le nombre de liens hypertexte de la feuille active.
By Hervé Thiriez, sur 7:37 PM
ok très bien mais si dans le [ xxx.xls] je veux spécifier un chemin (genre le classeur est pas ouvert)... comment faire ?? il semble qu'on peut accéder aux infos d'un classeur fermé depuis vba, sans l'ouvrir, est ce que c'est possible depuis excel.. ? peut être pas ?
By Anonyme, sur 5:36 PM
Enregistrer un commentaire
<< Accueil