Excel modification liaisons

zouzou -  
 Utilisateur anonyme -
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
A voir également:

4 réponses

zouzou
 
quelqu'un aurait-il une idée.
aidez-moi svp
0
Utilisateur anonyme
 
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
0
zouzou
 
j'essayerai ta solution demain.
Merci bcp.
je te tiendrai au courant des évenements.
0
Utilisateur anonyme
 
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
0