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
Configuration: Windows XP
Internet Explorer 6.0

4 réponses

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