Word vous permet d’établir des liens dans un document vers un document externe ou vers d’autres emplacements dans le document actuel. Peter cherche un moyen de ne compter que les liens internes dans un document et se demande s’il existe un moyen de le faire.

La seule façon de procéder consiste à utiliser une macro pour parcourir chaque lien hypertexte de votre document. Heureusement, cela se fait facilement en examinant les éléments de la collection Hyperlinks. Chaque objet Hyperlink a une variété de propriétés qui peuvent être définies, en fonction des caractéristiques du lien. Les propriétés Address et SubAddress sont particulièrement importantes.

La propriété Address (comme son nom l’indique) est l’adresse cible du lien. Normalement, c’est quelque chose comme une URL (comme dans /), mais cela pourrait aussi être le nom d’un fichier sur un lecteur accessible depuis votre système ou une adresse e-mail (comme dans mailto: [email protected]). Étant donné que la propriété Address peut avoir plusieurs objectifs, vous ne pouvez pas vérifier spécifiquement l’existence de caractères révélateurs, tels que le préfixe «http». Si le préfixe est manquant, le lien peut toujours être externe au document actuel car il peut faire référence à un fichier différent sur votre système.

Il existe cependant des cas où le champ Adresse sera vide, si le lien est vers un signet dans le document actuel. S’il est vide, la propriété SubAddress sera définie sur le nom du signet référencé dans le lien. Bien sûr, si le lien est vers un signet spécifique dans un document différent, les propriétés Address et SubAddress seront définies.

Pour avoir une idée des informations stockées avec chaque objet Hyperlink, jetez un œil à la courte macro suivante. Il parcourt chaque lien et affiche des informations sur chacun.

Sub LinkInfo()

Dim h As Hyperlink     Dim sTemp As String

For Each h In ActiveDocument.Hyperlinks         sTemp = h.TextToDisplay & vbCrLf         sTemp = sTemp & h.Address & vbCrLf         sTemp = sTemp & h.SubAddress         MsgBox sTemp     Next h End Sub

Ainsi, la méthode la plus simple pour déterminer le nombre de liens internes dans un document (en d’autres termes, des liens vers des signets dans le document actuel) consiste à examiner la propriété Address de chaque objet Hyperlink.

Si la propriété est vide, vous pouvez supposer en toute sécurité que le lien est interne.

Sub InternalLinks1()

Dim h As Hyperlink     Dim lInternal As Long

lInternal = 0     If ActiveDocument.Hyperlinks.Count > 0 Then         For Each h In ActiveDocument.Hyperlinks             If h.Address = "" Then lInternal = lInternal + 1         Next hp     End If     MsgBox lInternal & " hyperlinks are internal" _       & " out of a total of " & ActiveDocument.Hyperlinks.Count End Sub

Si vous vouliez rassembler une liste des cibles réelles pour les liens internes, ce serait un ajout facile à la macro de rechercher, dans la boucle For Each, chaque propriété SubAddress et de l’ajouter à ce que vous avez affiché à la fin la macro.

Bien entendu, les hyperliens ne se limitent pas à apparaître uniquement dans le corps du document. Vous pouvez également avoir des liens hypertexte dans d’autres éléments de document, tels que des en-têtes, des pieds de page, des notes de fin et des zones de texte. La variante suivante de la macro compte tous les liens qu’elle trouve dans l’une de ces zones (StoryRanges) du document.

Sub InternalLinks2()

Dim h As Hyperlink     Dim lInternal As Long     Dim lTotal As Long     Dim aStory As Range

lTotal = 0     lInternal = 0     For Each aStory In ActiveDocument.StoryRanges         lTotal = lTotal + aStory.Hyperlinks.Count         If aStory.Hyperlinks.Count > 0 Then             For Each h In aStory.Hyperlinks                 If h.Address = "" Then lInternal = lInternal + 1             Next h         End If     Next aStory     MsgBox lInternal & " hyperlinks are internal" _       & " out of a total of " & lTotal End Sub

_Note: _

Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites WordTips), j’ai préparé une page spéciale qui comprend des informations utiles.

lien: / wordribbon-WordTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur].

WordTips est votre source pour une formation Microsoft Word rentable.

(Microsoft Word est le logiciel de traitement de texte le plus populaire au monde.) Cette astuce (12814) s’applique à Microsoft Word 2007, 2010 et 2013.