FAQ ExcelConsultez toutes les FAQ

Nombre d'auteurs : 46, nombre de questions : 845, dernière mise à jour : 30 mars 2017 

 
OuvrirSommaireLes liens et liaisonsLes liens hypertextes

Ajoutez un signet dans le document Word, à l'emplacement souhaité, puis fermez le fichier.
Ensuite, lors de la création du lien hypertexte dans Excel, spécifiez le nom du signet à atteindre.
Exemple:
C:\Dossier\MonFichier.doc#NomDuSignet

Le document Word s'ouvrira directement à l'emplacement du signet lorsque vous cliquerez su le lien hypertexte.


La même opération, pour ouvrir un fichier Word par macro et atteindre un signet:

Vba
Sélectionnez

ThisWorkbook.FollowHyperlink "C:\Dossier\MonFichier.doc#NomDuSignet", , True
Créé le 10 juin 2007  par SilkyRoad

On peut ajouter un lien indifféremment à un objet ou à une plage.

Vba
Sélectionnez
 
Dim objLink As Hyperlink
 
Set objLink = ActiveSheet.Hyperlinks.Add(Range("F2"), "d:\user\tuto.xls")
With objLink
    .SubAddress = "A1:C10"
    .Follow NewWindow:=True
End With



Ce code crée le lien est ouvre une nouvelle fenêtre contenant la cible. Astuce : Lorsqu'on modifie la cible d'un lien existant on ne modifie pas le texte du lien. Pour que celui-ci change, il faut modifier la propriété value de la cellule contenant le lien :

Vba
Sélectionnez
 
objLink.Address = "d:\jmarc.xls"
objLink.Range.Value = "d:\jmarc.xls"
Créé le 14 février 2004  par Bidou
Vba
Sélectionnez

Sub Test()
    DeclencheLien Range("A1")
End Sub
 
 
Sub DeclencheLien(Cellule As Range)
'Vérifie si la cellule contient un lien
If Cellule.Hyperlinks.Count = 0 Then
    MsgBox "il n'y a pas de lien hypertexte dans la cellule " & Cellule.Address
    Else
    'Déclenche le lien
    Cellule.Hyperlinks(1).Follow NewWindow:=True
End If
End Sub
Créé le 10 juin 2007  par SilkyRoad

La procédure suivante extrait les liens hypertextes contenus dans la colonne A.
Les adresses s'inscrivent à coté, dans la colonne B.

Vba
Sélectionnez

Sub ExtractionLiensHypertextes()
    Dim Cell As Range
    Dim Ligne As Integer
 
    'Récupère le numéro de la dernière ligne non vide
    Ligne = Columns(1).SpecialCells(xlCellTypeLastCell).Row
 
    'Boucle sur les cellules de la colonne A
    For Each Cell In Range("A1:A" & Ligne)
        If Cell.Hyperlinks.Count > 0 Then _
            Cell.Offset(0, 1) = Cell.Hyperlinks(1).Address
    Next Cell
End Sub
Créé le 10 juin 2007  par SilkyRoad

Cette macro boucle sur les liens de la feuille active et ouvre le fichier lié s'il s'agit d'un classeur.
Chaque feuille de ce classeur est ensuite imprimée.

Vba
Sélectionnez

Sub imprimerPageActiveEt_Liensclasseurs()
Dim Lien As Hyperlink
Dim I As Byte
 
Application.ScreenUpdating = False
'Imprime la feuille active
ActiveSheet.PrintOut
 
'Boucle sur les liens de la feuille active
For Each Lien In ActiveSheet.Hyperlinks
    'Vérifie si le lien correspond à un classeur
    If Right(Range(Lien.Range.Address).Hyperlinks(1).Address, 4) = ".xls" Then
        'Déclenche le lien pour ouvrir le classeur
        Range(Lien.Range.Address).Hyperlinks(1).Follow NewWindow:=False
 
        'Imprime le classeur
        ActiveWorkbook.PrintOut
 
        'Referme le classeur
        ActiveWorkbook.Close
    End If
Next
 
Application.ScreenUpdating = True
End Sub
Créé le 14 mai 2007  par SilkyRoad

Saisissez l'adresse de messagerie dans une cellule et appuyez sur la touche Entrée.
Le lien est créé automatiquement.

Si ce n'est pas le cas, faites un clic droit dans la cellule.
Sélectionnez l'option "Lien hypertexte" dans le menu contextuel.
Saisissez le mail dans le champ Adresse.
Cliquez sur le bouton OK pour valider.
(Le texte mailto: s'ajoute automatiquement lorsque vous saisissez le symbole @.)


La même action par macro:

Vba
Sélectionnez

Sub CreationLienMail()
    With ActiveSheet
    .Range("A1") = "La description"
    .Hyperlinks.Add .Range("A1"), Address:="mailto:mimi@mail.fr"
    End With
End Sub
Créé le 10 juin 2007  par SilkyRoad
Vba
Sélectionnez

Sub Test()
    'Vérifie si le lien hypertexte contenu dans la cellule A1
    'correspond à un fichier existant sur le PC.
    'Renvoie Vrai ou Faux.
    MsgBox VerifHyperlink(Range("A1"))
End Sub
 
 
Function VerifHyperlink(Cellule As Range) As Boolean
    Dim Cible As String
 
    'Vérifie si la cellule contient un lien hypertexte
    If Cellule.Hyperlinks.Count = 0 Then
        VerifHyperlink = False
        Exit Function
    End If
 
    'Extrait l'adresse du lien
    Cible = Cellule.Hyperlinks(1).Address
 
    'Vérifie si le fichier existe.
    '(Ne fonctionne pas pour les liens web).
    If Dir(Cible) <> "" And Cible <> "" Then
        VerifHyperlink = True
        Else
        VerifHyperlink = False
    End If
End Function
Créé le 2 octobre 2007  par SilkyRoad

Placez cette formule dans la cellule de votre choix.
Le classeur doit être préalablement sauvegardé pour que ça fonctionne.

=LIEN_HYPERTEXTE(GAUCHE(CELLULE("filename");CHERCHE("[";CELLULE("filename");1)-2);"Lien vers le répertoire")

Créé le 2 octobre 2007  par SilkyRoad

Lorsque vous saisissez des liens html ou des adresses mail dans une cellule, ils sont par défaut automatiquement transformés en lien cliquable.

Pour qu'Excel ne formate pas les cellules comme des liens web:
Utilisez le menu outils.
Options de correction automatique.

Pour la version Excel2007:
Cliquez sur le bouton "Office", puis sur le bouton "Options Excel".
Menu "Vérification".
Cliquez sur le bouton "Options de vérification automatique".

La boîte de dialogue "Correction automatique" s'affiche à l'écran.
Dans l'onglet "Mise en forme automatique au cours de la frappe", décochez l'option "Adresse internet et réseau avec des liens hypertexte".
Cliquez sur le bouton OK pour valider. Désormais, les liens html et les adresses mails sont considérés comme de simples textes.

Créé le 2 octobre 2007  par SilkyRoad

Ce n'est pas possible directement car une feuille graphique ne contient pas de cellule à lier.
Une solution de substitution consiste à créer le lien vers une cellule d'un autre onglet et cette cellule contiendra le nom de la feuille graphique. Ensuite, dans le module objet de l'onglet contenant la cellule de destination, ajoutez cette macro évènementielle:

Vba
Sélectionnez
 
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim Ch As Chart
 
    If Not Intersect(Target, Range("A1")) Is Nothing Then
       On Error Resume Next
       Set Ch = Charts(Target.Value)
       On Error GoTo 0
 
       'Active le feuille graphique si elle existe.
       If Not Ch Is Nothing Then Charts(Target.Value).Activate
    End If
End Sub



Le lien va atteindre la cellule et l'évènement SelectionChange redirige automatiquement vers le graphique, dont le nom est saisi dans la cellule. Ici, le lien doit pointer vers la cellule A1.

Créé le 5 décembre 2007  par SilkyRoad

Cette fonction permet d'ouvrir un autre fichier et/ou d'atteindre un emplacement particulier.
=LIEN_HYPERTEXTE("C:\dossier\test.pdf";"Cliquez ici !")
=LIEN_HYPERTEXTE("C:\dossier\NomClasseur.xls";"Cliquez ici !")
=LIEN_HYPERTEXTE("http://www.developpez.com/";"Cliquez ici !")

Vous pouvez indiquer un nom de serveur UNC:
=HYPERLINK("\\NomServeur\dossier\NomClasseur.xls";"Cliquez ici !")

Pour ouvrir un classeur et atteindre une cellule particulière:
=LIEN_HYPERTEXTE("C:\dossier\NomClasseur.xls#'Feuil1'!G50";"Cliquez ici !")

Pour atteindre une cellule ou une plage nommée:
=LIEN_HYPERTEXTE("[C:\dossier\NomClasseur.xls]NomTest";"Cliquez ici !")

Si vous souhaitez créer un lien hypertexte vers un emplacement précis dans un document Microsoft Word, utilisez un signet pour définir cet emplacement. L'exemple suivant crée un lien hypertexte vers le signet "Signet1" dans le document nommé monFichier.doc
=LIEN_HYPERTEXTE("C:\monFichier.doc#Signet1";"Cliquez ici")

Accéder à la cellule D10 dans la Feuil2, du même classeur:
=LIEN_HYPERTEXTE("[monClasseur]Feuil2!D10";"Mon lien hypertexte")

3 Remarques:
Même si vous restez dans le même classeur, précisez son nom.

Si le nom de la feuille contient un espace , le nom doit être encadré par des apostrophes:
=LIEN_HYPERTEXTE("[monClasseur.xls]'ma feuille'!D10";"Mon lien hypertexte")

Si le nom du classeur est amené à changer dans le temps vous pouvez utiliser:
=LIEN_HYPERTEXTE("["&STXT(CELLULE("nomfichier"); TROUVE("["; CELLULE("nomfichier"))+1;TROUVE("]"; CELLULE("nomfichier"))- TROUVE("["; CELLULE("nomfichier"))-1)&"]'ma feuille'!D10";"Mon lien hypertexte")

Créé le 19 février 2008  par SilkyRoad

Ce code remplace le terme ".fr" par ".com" dans tous les liens hypertextes de la Feuil1.

Vba
Sélectionnez

Dim Hpk As Hyperlink
Dim strLien As String
 
For Each Hpk In Worksheets("Feuil1").Hyperlinks
    strLien = Hpk.Address
    Hpk.Address = Replace(strLien, ".fr", ".com")
Next Hpk
Créé le 26 mai 2008  par SilkyRoad

Lorsqu'un lien renvoie vers un emplacement d'une autre feuille du classeur, la cellule de destination apparait en général en bas de la page. Ajoutez cette procédure dans le module objet ThisWorkbook pour forcer l'affichage en haut de la page.

Vba
Sélectionnez

Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)
    On Error Resume Next
    If IsObject(Range(Target.SubAddress)) Then _
        Application.Goto Reference:=Range(Target.SubAddress), Scroll:=True
End Sub
Créé le 26 mai 2008  par SilkyRoad

Vous pouvez utiliser la propriété TextToDisplay.
Cet exemple vérifie si la cellule A1 contient un lien hypertexte et change le texte qui s'affiche dans la cellule, sans modifier le lien.

Vba
Sélectionnez

If Range("A1").Hyperlinks.Count > 0 Then _
    Range("A1").Hyperlinks(1).TextToDisplay = "Nouveau texte"
Créé le 20 août 2007  par SilkyRoad
  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2009 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.