Linda a un document Word qui contient de nombreux (1 800+) hyperliens vers des ressources sur Internet. Elle doit convertir tous les hyperliens afin qu’ils ne soient pas absolus en URL sur le Web, mais qu’ils pointent vers un emplacement relatif sur une clé USB. Le nom du fichier HTML sera le même sur la clé USB que sur le Web, c’est juste l’emplacement de ce fichier HTML qui change. Linda s’interroge sur la meilleure façon de faire la conversion.

Le meilleur moyen est de faire les conversions à l’aide d’une macro. Chaque lien hypertexte de votre document est stocké dans la collection Hyperlinks qui est facilement accessible via VBA. Cela vous permet de parcourir la collection d’hyperliens, d’examiner les adresses de chacun d’eux, puis d’y apporter des modifications. Voici un exemple d’une telle macro:

Sub ConvertHyperlinks()

Dim sNewBase As String     Dim sFile As String     Dim sNewFile As String     Dim sChanged As String     Dim sNotChanged As String     Dim sTemp As String     Dim J As Integer     Dim h As Hyperlink

sNewBase = "c:\myplace\"

sChanged = ""

sNotChanged = ""



For Each h In ActiveDocument.Hyperlinks         sTemp = h.Address         If Left(sTemp, 5) = "https:" Then             sFile = ""

For J = Len(sTemp) To 2 Step -1                 If Mid(sTemp, J, 1) = "/" Then                     sFile = Right(sTemp, Len(sTemp) - J)

Exit For                 End If             Next J

If sFile > "" Then                 sNewFile = sNewBase & sFile                 h.Address = sNewFile                 sChanged = sChanged & sTemp & " (changed to " & _                   sNewFile & ")" & vbCrLf             Else                 sNotChanged = sNotChanged & sTemp & vbCrLf             End If         Else             sNotChanged = sNotChanged & sTemp & vbCrLf         End If     Next h

Documents.Add     Selection.TypeText "The following hyperlinks were modified:" & vbCrLf     Selection.TypeText sChanged & vbCrLf & vbCrLf     Selection.TypeText "The following hyperlinks were not modified:" & vbCrLf     Selection.TypeText sNotChanged & vbCrLf End Sub

La macro commence par parcourir la collection Hyperlinks. Chaque adresse est affectée à la variable sTemp, qui est ensuite vérifiée pour voir si elle commence par « https: ». Certains liens hypertexte, par exemple ceux pour les adresses e-mail ou vers des fichiers existants, ne commenceront pas par ces caractères.

Si une correspondance est trouvée, le code recule dans l’adresse pour trouver la dernière barre oblique dans cette adresse. Quand il est trouvé, alors sFile est mis à tout égal après cette dernière barre oblique, ce qui signifie qu’il sera égal au fichier HTML.

Une note latérale intéressante ici est que lorsque vous créez un lien hypertexte dans un document Word, Word effectue un peu de traitement sur ce que vous tapez par rapport à ce qui est réellement stocké dans le lien hypertexte. Par exemple, supposons que vous tapez ce qui suit dans un document:

www.Tips.net

Word le reconnaît automatiquement en tant que site Web et le convertit en lien hypertexte. (En supposant, bien sûr, que Word est configuré pour effectuer des conversions d’URL automatiques.) Si vous regardez l’adresse réellement stockée dans le lien hypertexte créé, vous verrez ce qui suit:

https://www.Tips.net/

Étant donné que cette adresse commence par « https: », la macro la considérera comme quelque chose de traitable. Cependant, la boucle qui recule dans l’adresse à la recherche du dernier caractère de barre oblique le trouvera à la toute fin. Cela signifie que sFile sera vide à cause de ce code:

sFile = Right(sTemp, Len(sTemp) - J)

La longueur de sTemp et J est exactement la même pour le dernier caractère de la chaîne, donc sFile finit par contenir les 0 caractères les plus à droite, ce qui signifie qu’il est vide. L’essentiel est qu’il ne contiendra pas de nom de fichier, donc l’URL d’origine n’est pas convertie en autre chose.

Pour que la macro fonctionne correctement sur votre système, vous souhaiterez modifier la chaîne sNewBase pour qu’elle contienne tout ce que vous souhaitez ajouter au début des adresses traitées. Notez que telle qu’elle est écrite, la chaîne par défaut ajoutée au début d’un fichier est « c: \ myplace \ ». Ainsi « ` link: / privacy « est changé en » c: \ myplace \ privacy « . Cette adresse convertie n’est pas, strictement, un lien hypertexte relatif. Un lien hypertexte relatif n’aurait pas les caractères c: \ au début, donc il finirait par être quelque chose comme « \ myplace \ privacy ». Encore une fois, vous pouvez modifier la valeur de sNewBase pour qu’elle soit tout ce que vous voulez afin que vos liens hypertexte convertis ressemblent exactement à ce que vous voulez.

Il ne faut pas longtemps pour exécuter la macro; il est très rapide, quel que soit le nombre d’hyperliens dans votre document. Lorsque la macro est terminée, elle crée un nouveau document qui montre les liens hypertexte modifiés et ceux non modifiés.

_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.

https: – wordribbon.tips.net-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 (12931) s’applique à Microsoft Word 2007, 2010, 2013, 2016, 2019 et Word dans Office 365.