Mise à jour de liens d'un fichier "maitre"

Bonjour,

J'ai un fichier excel qui cherche des données dans des dizaines d'autres fichiers excel.

Ces liens vers ces fichiers ont été mis en utilisant le chemin complet en dur dans les formules.

ex : c:\temp\[fichierExcel.xls]fev19'!$M$6

Aujourd'hui, nous réorganisons notre dossier de stockage et souhaitons déplacer le fichier maitre et tous les fichiers associés.

Il existe des milliers de référence explicites au chemin dans le fichier principal qui a été construit au fil des années.

Existe t-une méthode permettant d’éditer ces références de manières semi-automatisé ?

Exemple : remplacer tous les liens vers des fichiers dont la référence dans le fichier maitre est "c:\temp\*.xls" vers des liens vers "c:\temp2\*.xls".

Merci d'avance pour ceux qui pourraient me donner des infos.

Bonjour,

Une piste !

Le nom des classeurs ne changeant pas (normalement !), il suffit de modifier les chemins dans les formules. Afin d'éviter toutes ouvertures intempestives de la fenêtre de l'explorateur à la validation des formules, il est préférable que les classeurs se trouvent déjà dans le nouveau dossier. Le code ci-dessous est à mettre dans un module standard du classeur maître :

Sub Test()

    Dim Classeur As Workbook
    Dim Fe As Worksheet
    Dim Plage As Range
    Dim Cel As Range
    Dim AncChemin As String
    Dim NouvChemin As String

    'le classeur maître où doit se trouver cette procédure !
    Set Classeur = ThisWorkbook

    'ancien dossier
    AncChemin = "c:\temp\"

    'nouveau dossier
    NouvChemin = "c:\temp2\"

    For Each Fe In Classeur.Worksheets

        'défini la plage sur toute zone utilisée dans la feuille en cours
        Set Plage = DefPlage(Fe)

        'boucle sur les cellules contenant des formules et effectue le remplacement
        For Each Cel In Plage.SpecialCells(xlCellTypeFormulas)

            Cel.Formula = Replace(Cel.Formula, AncChemin, NouvChemin)

        Next Cel

    Next Fe

End Sub

Function DefPlage(Fe As Worksheet, Optional L As Long = 1, Optional C As Long = 1) As Range

    On Error GoTo Fin

    With Fe

        Set DefPlage = .Range(.Cells(L, C), _
                       .Cells(.Cells.Find("*", .[A1], -4123, , _
                       1, 2).Row, .Cells.Find("*", .[A1], -4123, , _
                       2, 2).Column))

    End With

    Exit Function

Fin:

    Set DefPlage = Nothing

End Function

Bonjour,

Essayer avec ce classeur que j'avais développé en son temps pour afficher et modifier toute liaison d'un fichier Office : Excel, Word, PowerPoint.

1- cliquer sur le bouton "Démarrer"

2- entrer le chemin du répertoire où se trouvent vos fichiers

3- tous les liens s'affichent

4- entrer la chaîne à remplacer et la chaîne à y substituer

merci pour ces réponses rapides.

Je vais essayer ces manipulations vendredi et je viendrai vous dire ce que cela a donné.

Rechercher des sujets similaires à "mise jour liens fichier maitre"