Macro rechercher remplacer liens hypertexte EXCEL 2010

Macro rechercher remplacer liens hypertexte EXCEL 2010 - VB/VBA/VBS - Programmation

Marsh Posté le 16-10-2015 à 17:45:37    

Bonjour,
 
Je souhaite modifier des liens hypertextes de classeurs excel (sous excel 2010) en masse(à cause d'un changement de serveur).  
En fait ce serait du coup seulement le début du lien à modifier
 
exemple :
remplacer \\serveur1\dossier 2\
 
par \\serveur4\partage\dossier 2\
 
Je ne sais pas si le file:/// avant l'adresse doit être pris en compte.
J'ai trouvé au moins 3 macros différentes sur le net mais aucune ne fonctionne. :heink:  :heink:  
Pas de message d'erreur
 
Voici les macros en question:
 
MACRO1:

Code :
  1. Sub Modifier_lien()
  2. Dim Doc As Workbook
  3. Dim Cell As Range
  4. Dim OldStr As String
  5. Dim NewStr As String
  6. Dim OldHp As String
  7. Dim NewHp As String
  8. 'Chemin à modifier
  9. OldStr = "\\serveur1\dossier 2\"
  10. NewStr = "\\serveur4\partage\dossier 2\"
  11. Application.Calculation = xlManual
  12. Set Doc = Application.ActiveWorkbook
  13. For Each Cell In Selection
  14. 'Verifie si la cellule contient des liens hypertexte
  15. If Cell.Hyperlinks.Count > 0 Then
  16. 'Recupère l'adresse du lien sous forme de chaine
  17. OldHp = Cell.Hyperlinks(1).Address
  18. 'Remplace l'ancienne chaine par la nouvelle
  19. NewHp = Replace(OldHp, OldStr, NewStr)
  20. 'Supprime tous les liens hypertexte de la cellule
  21. Cell.Hyperlinks.Delete
  22. 'Affecte le nouveau lien hypertexte
  23. Doc.ActiveSheet.Hyperlinks.Add Anchor:=Cell, Address:=NewHp
  24. End If
  25. Next Cell
  26. Application.Calculation = xlAutomatic
  27. End Sub


 
MACRO2
 

Code :
  1. Sub FixHyperlinks()
  2.     Dim hl As Hyperlink
  3.     For Each hl In ActiveSheet.Hyperlinks
  4.         hl.Address = Replace(hl.Address, "\\serveur1\dossier 2\", "\\serveur4\partage\dossier 2\" )
  5.     Next hl
  6. End Sub


 
MACRO3
 

Code :
  1. Sub FindReplaceHLinks(sFind As String, sReplace As String, _
  2.     Optional lStart As Long = 1, Optional lCount As Long = -1)
  3.     Dim rCell As Range
  4.     Dim hl As Hyperlink
  5.     For Each rCell In ActiveSheet.UsedRange.Cells
  6.         If rCell.Hyperlinks.Count > 0 Then
  7.             For Each hl In rCell.Hyperlinks
  8.                 hl.Address = Replace(hl.Address, sFind, sReplace, lStart, lCount, vbTextCompare)
  9.             Next hl
  10.         End If
  11.     Next rCell
  12. End Sub
  13. Sub Doit()
  14.     FindReplaceHLinks "\\serveur1\dossier 2\", "\\serveur4\partage\dossier 2\"
  15. End Sub


 
Merci aux éventuelles personnes susceptibles de m'aider  :jap:  :jap:

Reply

Marsh Posté le 16-10-2015 à 17:45:37   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed