Changer un grand nombre d’hyperliens (Microsoft Excel)
Wendy a une seule feuille de calcul Excel qui contient plus de 1 200 hyperliens vers des fichiers TIFF. (Ce sont des hyperliens, pas des liens réguliers.) Excel a eu un hoquet et a dû s’arrêter, alors Emily a utilisé les fichiers enregistrés automatiquement pour récupérer le fichier précédemment enregistré. Désormais, tous les liens hypertexte précédemment fonctionnels ne fonctionnent pas. Elle avait les hyperliens vers les images sur un lecteur réseau partagé, mais l’enregistrement automatique a modifié les hyperliens pour référencer le lecteur C :. Elle se demande s’il existe un moyen simple de les réparer sur le lecteur réseau partagé.
À première vue, il peut sembler que vous pourriez utiliser la fonction Rechercher et remplacer régulière d’Excel pour trouver la désignation du disque dur (comme dans file: // c 🙂 et le remplacer par un lecteur réseau (comme dans file: // shareddrive). Le problème est que cette approche ne résout qu’une partie du problème – elle ne modifie que la partie affichée du lien hypertexte, pas le lien hypertexte sous-jacent lui-même. La seule façon d’accéder au lien hypertexte lui-même est d’utiliser une macro.
En supposant que tous les hyperliens à modifier se trouvent sur la même feuille de calcul, vous pouvez utiliser la macro suivante:
Sub FixHyperlinks1() Dim wks As Worksheet Dim hl As Hyperlink Dim sOld As String Dim sNew As String Set wks = ActiveSheet sOld = "c:\" sNew = "S:\Network\" For Each hl In wks.Hyperlinks hl.Address = Replace(hl.Address, sOld, sNew) Next hl End Sub
Tout ce que vous avez à faire est de modifier les valeurs affectées aux variables sOld et sNew. Si vous obtenez une erreur lorsque vous essayez d’exécuter la macro – une erreur avec la ligne contenant la fonction Remplacer – c’est parce que la fonction Remplacer n’est pas disponible dans toutes les versions d’Excel. Dans ce cas, vous devez utiliser la macro suivante à la place:
Sub FixHyperlinks2() Dim wks As Worksheet Dim hl As Hyperlink Dim sOld As String Dim sNew As String Set wks = ActiveSheet sOld = "c:\" sNew = "S:\Network\" For Each hl In wks.Hyperlinks hl.Address = Application.WorksheetFunction. _ Substitute(hl.Address, sOld, sNew) Next hl End Sub
Notez que la seule différence est l’utilisation de la fonction de feuille de calcul de remplacement.
_Note: _
Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites ExcelTips), j’ai préparé une page spéciale qui comprend des informations utiles.
lien: / excelribbon-ExcelTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur]
.
ExcelTips est votre source pour une formation Microsoft Excel rentable.
Cette astuce (8622) s’applique à Microsoft Excel 97, 2000, 2002 et 2003. Vous pouvez trouver une version de cette astuce pour l’interface ruban d’Excel (Excel 2007 et versions ultérieures) ici:
link: / excelribbon-Changing_Huge_Numbers_of_Hyperlinks [Changer un grand nombre d’hyperliens]
.