Changement d'une partie de milliers de liens hypertextes/Macro

alexver

XLDnaute Nouveau
Bonjour à tous,

Je vous remercie de lire ce message, et j'espère que vous aurez une réponse à ma question.

Je viens de créer un fichier excel sous Microsoft Office Excel 2007, et j'y ai inséré environ 7 000 liens hypertextes.

Chaque liens hypertexte à été renommé sous différentes dénominations, mais ils mènent tous à un même ficher (contenant une sous arborification) selon un chemin de type:

file:///\\bod\fichier1\fichier2\fichier3\fichier4

J'aimerais changer mon tableau excel de place dans un répertoire commun, mais aussi changer de place mon fichier 3 qui sera introduit dans le 2 par exemple. Mais sous un nouveau nom par exemple fichier 5.

Alors le nouveau lien sera par exemple

file:///\\bod\fichier1\fichier5\fichier4

Donc c'est vraiment une partie du lien qui doit être modifié. Je rappel que c'est liens sont renommé sinon j'aurais utilisé la fonction remplacer par. Mais ici cela ne marche pas.

J'ai fais déjà des recherche sur internet et j'avais pensé à faire afficher le lien hypertexte et faire remplacer par.

La macro utilisé avait été:

Sub test()
Dim c As Range
For Each c In Selection
c = c.Hyperlinks(1).Address
Next c
End Sub

Sauf que cela m'a affiché
..\..\..\Fichier4 => impossible pour moi de faire remplacer par n'ayant pas le lien exact, de plus je devrais ensuite refaire renommé mes 7000 liens hypertexte, ce qui peut être long.

Je cherche donc une marco qui pourrait rechercher un texte dans un lien hypertexte et le remplacer par ce que je mettrais.

J'espère avoir choisis la bonne partie pour poster ce message et avoir été le plus précis possible pour que cela sois rapide à la personne ayant la solution.


Je n'ai pas de large connaissance informatique, j'ai utilisé ma première macro aujourd'hui, pour vous donner mon niveau à ce niveau là.

Merci d'avance pour vos réponses

Ps: J'ai nommé les fichiers 1 2 3 4 car étant salarié en entreprise la confidentialité est de rigueur.
 

adel53

XLDnaute Occasionnel
Re : Changement d'une partie de milliers de liens hypertextes/Macro

Bonjour

Personnellement pour réaliser ce type d’exercice j'utilise asap utilities qui possède une fonction de création de liens qu'on peut utiliser avec des formules tel que concaténer.

Cordialement
 

john

XLDnaute Impliqué
Re : Changement d'une partie de milliers de liens hypertextes/Macro

Bonjour,

Sinon tu peux faire comme ceci avec excel...

Sub Modifier_lien()


Dim Doc As Workbook
Dim Cell As Range
Dim OldStr As String
Dim NewStr As String
Dim OldHp As String
Dim NewHp As String


'Chemin à modifier

OldStr = "\\bod\fichier1\fichier2\fichier3\fichier4"
NewStr = "\\bod\fichier1\fichier5\fichier4"

Application.Calculation = xlManual

Set Doc = Application.ActiveWorkbook

For Each Cell In Range("data")
'Verifie si la cellule contient des liens hypertexte
If Cell.Hyperlinks.Count > 0 Then
'Recupère l'adresse du lien sous forme de chaine
OldHp = Cell.Hyperlinks(1).Address
If OldHp = OldStr Then 'pour ne changer que les liens bien précis... et pas tous !!!!
'Remplace l'ancienne chaine par la nouvelle
NewHp = Replace(OldHp, OldStr, NewStr)

'Affecte le nouveau lien hypertexte
Doc.ActiveSheet.Hyperlinks.Add Anchor:=Cell, Address:=NewHp
End If
End If
Next Cell
Application.Calculation = xlAutomatic
End Sub

BàT.

John
 

alexver

XLDnaute Nouveau
Re : Changement d'une partie de milliers de liens hypertextes/Macro

Adel merci pour votre astuce,

Mais cela ne m'affiche pas la totalité du lien. Entre autre la partie que je souhaite modifier. Cela vient peut-être du fait que j'ai inséré un tableau sous excel.

Bonjour john,

Merci pour votre réponse: je suis sur un tableau de cette forme ci (http://cjoint.com/?3GboujLuWmi )

J'ai excuté la macro et cela m'a affiché une fenêtre avec:

Erreur d'exécution 1004
La méthode 'Range' de l'objet' _global' a échoué

( avec fin débogage et aide)

j'ai cliqué sur débogage et j'ai eu "For Each Cell In Range("data") " affiché en jaune.

Auriez-vous une solution à cet imprévu?


Je vous remercie tout deux pour vos réponses si rapide,

Cordialement

Alex
 

john

XLDnaute Impliqué
Re : Changement d'une partie de milliers de liens hypertextes/Macro

Oui en fait j'ai sélectionné la colonne où se trouve les liens hypertexte et j'ai nommé la plage "data". Voilà pourquoi il y a une erreur dans ton fichier car à mon avis tu n'as pas nommé la plage.

Avant de nommer la plage, ne pas oublier de sélectionner toute la/les colonne(s) où se trouvent les liens hypertexte....

BàT
 

Pièces jointes

  • Capture_data.JPG
    Capture_data.JPG
    35.2 KB · Affichages: 56
Dernière édition:

john

XLDnaute Impliqué
Re : Changement d'une partie de milliers de liens hypertextes/Macro

Plage de données = sélection de plusieurs cellules et lui donner un seul nom pour le tout

Donc plutôt de dire je sélectionne la cellule A1 à A500 (par ex), je sélectionne A1 à A500, je lui donne un nom (data par ex) et quand je veux faire une rechercher ou une sélection, à la place de toujours donner la référence A1:A500 je lui donne la plage "data".

C'est bcps plus facile et plus simple pour s'y retrouver...

BàT.

John
 

Discussions similaires

Réponses
3
Affichages
460

Statistiques des forums

Discussions
312 231
Messages
2 086 441
Membres
103 210
dernier inscrit
Bay onais