Excel modification liaisons

Bonjour,
je travaille sous excel et je dispose d'un dossier qui s'appele "octobre" avec 12 sous-dossiers (un sous-dossier = a un nom de personne).
A le racine du dossier "octobre" j'ai 5 fichiers excel qui recapitule les infos des fichiers des sous-dossiers avec des liaisons.
Si je veux dupliquer mon dossier "Octobre" en "Novembre" toutes les liaisons sont a revoir.
Bref, Je dois changer 2000 liens a la main en modifiant le chemin du dossier octobre par novembre.

2 solutions sont possibles :
- faire un remplacer octobre par novembre mais ca me plante mon fichier
- ou editions liaisons a la main pour 2000 liens.

Avez-vous une solution svp?
merci d'avance pour votre aide
Configuration: Windows XP
Internet Explorer 6.0

4 réponses

  1. Bonjour,

    Suggestion :

    bien sur, il faut faudra adapter à votre situation !

    Sub MAJ_Liaisons()
    
        Const cteMoisCourant = "Octobre"
        Const cteMoisNouveau = "Novembre"
    
        Dim Liaisons As Variant, Num As Long, Valeur As String
        Dim Chemin As String, Position As Long
        Dim NomFichier As String, NouveauLien As String
    
        Liaisons = ThisWorkbook.LinkSources
    
        If Not IsEmpty(Liaisons) Then
            For Num = 1 To UBound(Liaisons)
                Valeur = Liaisons(Num)
                Chemin = Left(Valeur, InStrRev(Valeur, "\"))
                NomFichier = Mid(Valeur, Len(Chemin) + 1)
                Position = InStr(1, Valeur, cteMoisCourant, vbTextCompare)
                NouveauLien = Mid(Valeur, 1, (Position - 1))
                NouveauLien = NouveauLien & cteMoisNouveau
                NouveauLien = NouveauLien & Mid(Valeur, (Position + Len(cteMoisCourant)))
                ActiveWorkbook.ChangeLink Liaisons(Num), NouveauLien
            Next
        End If
        
    End Sub
    

    Lupin
    1. j'essayerai ta solution demain.
      Merci bcp.
      je te tiendrai au courant des évenements.
      1. re :

        J'avais 2 variables de trop !

        Sub MAJ_Liaisons()
        
            Const cteMoisCourant = "Octobre"
            Const cteMoisNouveau = "Novembre"
        
            Dim Liaisons As Variant
            Dim Num As Long, Position As Long
            Dim NouveauLien As String, Valeur As String
        
            Liaisons = ThisWorkbook.LinkSources
        
            If Not IsEmpty(Liaisons) Then
                For Num = 1 To UBound(Liaisons)
                    Valeur = Liaisons(Num)
                    Position = InStr(1, Valeur, cteMoisCourant, vbTextCompare)
                    NouveauLien = Mid(Valeur, 1, (Position - 1))
                    NouveauLien = NouveauLien & cteMoisNouveau
                    NouveauLien = NouveauLien & Mid(Valeur, (Position + Len(cteMoisCourant)))
                    ActiveWorkbook.ChangeLink Liaisons(Num), NouveauLien
                Next
            End If
            
        End Sub
        

        Lupin