Rompre des liaisons dans plusieurs fichiers Excel

Résolu
TaoQian Messages postés 10 Statut Membre -  
TaoQian Messages postés 10 Statut Membre -
Bonjour,

Chaque mois, je génère un lot d'une vingtaine de fichiers comportant des liaisons avec une base de données.
Je dois rompre ces liaisons avant de transmettre tous les fichiers. Je les ouvre donc 1 par 1, ce qui est assez fastidieux.
Comment faire une macro qui pourrait effectuer cette tâche à ma place ?

Merci si vous avez une bonne idée à me soumettre.

Bonne journée,

TaoQian

2 réponses

  1. redaiwa Messages postés 370 Statut Membre 119
     
    Salam TaoQian.

    Une solution (parmi d'autres?) consiste en ce qui suit (j'explique en détail pour ceux qui n'ont pas l'habitude du VBA):

    1- Crée un dossier dans lequel tu mettras uniquement tes fichiers cibles (qui contiennent les liens externes)

    2- Ouvre un nouveau classeur excel.

    3- Appuie sur ALT+F11 pour ouvrir l'éditeur VBA.

    4- Dans la fenêtre qui s'ouvre, tu vois s'afficher à gauche de l'écran le nom du nouveau fichier que tu viens d'ouvrir (par exemple Classeur1). Sous ce nom, il y a "ThisWorkbook", double-clique dessus.

    5- Dans la partie gauche de l'écran (grand espace vide), colle le code suivant :

    Private Sub Workbook_Open()
    Dim Rep As String, Fichier As String
    Dim wb As Workbook
    Rep = ThisWorkbook.Path & "\"
    Fichier = Dir(Rep)
    Do While Fichier <> "" And Fichier <> ThisWorkbook.Name
    Set wb = Workbooks.Open(Rep & Fichier)
    liens = wb.LinkSources
    If Not IsEmpty(liens) Then
    For i = 1 To UBound(liens)
    MsgBox liens(i)
    wb.BreakLink Name:=liens(i), Type:=xlExcelLinks
    Next i
    End If
    wb.UpdateLinks = xlUpdateLinksNever
    wb.Saved = True
    wb.Save
    wb.Close
    Fichier = Dir
    Loop
    End Sub

    6- Appuie sur ALT+F11 pour revenir au classeur.

    7- Enregistre le classeur en lui donnant comme nom "RompreLesLiens.xlsm".
    Peut importe le nom pourvu qu'il soit avec l'extension ".xlsm" qui prend en charge les macros. Mets-le dans le même dossier que les fichiers cibles.

    8- Ferme le classeur.

    Ces étapes sont à faire une seule fois pour toutes.

    Maintenant, à chaque fois que tu génères tes fichiers cibles contenant les liens, mets-les dans le dossier créé à l'étape 1, puis ouvre le fichier "RompreLiensExternes.xlsm" qui se chargera de rompre les liens de tous les classeurs du dossier.

    J'espère avoir été assez clair et surtout avoir répondu à ta question.

    :-D
    2
    1. TaoQian Messages postés 10 Statut Membre
       
      Bonjour Redaiwa,

      Merci pour cette réponse ; l'explication est effectivement claire.
      Seul soucis c'est que je travaille avec Excel 2003, et tu parles peut être d'une version plus récente.

      ;-)
      0
  2. TaoQian Messages postés 10 Statut Membre
     
    Bonjour,

    J'ai réessayé ce matin dans MSOffice 2010 et là ça marche.

    Merci
    0