XL 2010 VBA pour modification de liens

desatan

XLDnaute Occasionnel
Bonjour,

Je viens de déplacer un très gros répertoire dans lequel j'ai des sous répertoires et fichiers Excel.
Le problème est que les liens entre mes fichiers pointent à l'ancien endroit du répertoire.
Existe t il une macro qui parcourrai chaque fichier excel du répertoire et sous répertoire et qui modifierai automatiquement l'ancien chemin C:\excel par D:\excel ?

Merci par avance
 

Dranreb

XLDnaute Barbatruc
Bonjour.
En général quand il existe le moyen d'une solution à un problème il existent aussi des macros qui l'exploitent, mais sans répondre à votre problème spécifique. Il vous faut écrire une nouvelle macro exploitant ThisWorlbook.LinkSources(xlExcelLinks) et ThisWorlbook.ChangeLink …, …, xlExcelLinks
 

Dranreb

XLDnaute Barbatruc
Quel est l'intérêt d'un forum d'entre aide pour des gens qu'ont aucune volonté de s'occuper eux même de leur problème, fusse avec le l'aide, jusqu'à ne même pas fournir le moindre classeur support d'éventuels bouts de codes rédigés à leur intention ?
En ce qui me concerne, ce n'est plus la peine de le faire: je vous mets immédiatement dans ma liste d'ignorés, et me désabonne de cette discussion :mad:
 

desatan

XLDnaute Occasionnel
je viens de tester ce code.
Aucun message d'erreur mais le lien ne change pas.
Quelqu'un peut me dire si le code est faux ?
Merci par avance

Sub sup_liens()
'
' sup_liens Macro
'
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 = "C:\excel"

NewStr = "D:\excel"


Application.Calculation = xlManual


Set Doc = Application.ActiveWorkbook


For Each Cell In Selection


'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



'Remplace l'ancienne chaine par la nouvelle

NewHp = Replace(OldHp, OldStr, NewStr)



'Supprime tous les liens hypertexte de la cellule

Cell.Hyperlinks.Delete



'Affecte le nouveau lien hypertexte

Doc.ActiveSheet.Hyperlinks.Add Anchor:=Cell, Address:=NewHp



End If


Next Cell


Application.Calculation = xlAutomatic


End Sub
 

desatan

XLDnaute Occasionnel
je cherche toujours...
je viens de tester ceci dans un fichier

Sub sup_liens()
'
' sup_liens Macro
'
'
Cells.Replace What:="'C:\excel", Replacement:= _
"'D:\excel", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:= _
False, SearchFormat:=False, ReplaceFormat:=False
End Sub

Cela fonctionne mais comment le généralisé à tous les fichiers excel du répertoir d:\excel et les sous répertoires ?

Merci par aavnce
 

desatan

XLDnaute Occasionnel
Re bonjour,

Y a t il quelqu'un pour m'aider, je ne m'en sors pas.

J'ai joint un répertoire avec 2 fichiers pour être peut être plus claire.

Dans le répertoire test, 2 fichiers Excel.
Dans le premier, il y a un lien ='C:\Desktop\test\[fichier2.xlsx]Feuil1'!$A$1

Je cherche une macro qui pourrait parcourir les uns après les autres tous les fichiers excel du répertoire test et des sous répertoires et changer le lien ='C:\Desktop\test\[fichier2.xlsx]Feuil1'!$A$1 en ='D:\test\[fichier2.xlsx]Feuil1'!$A$1

Dans mes fichiers Excel j'ai plusieurs feuilles donc il faudrait que la macro parcours tout le document Excel.

Cette macro ne serait pas directement incluse dans le fichier à modifier, idéalement, en exécutant la macro, je souhaiterai qu'elle me propose de choisir le répertoire où il faudrait modifier les fichiers excel

Merci par avance pour votre aide.
 

Pièces jointes

  • test.zip
    12 KB · Affichages: 34

Discussions similaires

Réponses
15
Affichages
846

Statistiques des forums

Discussions
312 202
Messages
2 086 175
Membres
103 152
dernier inscrit
Karibu