Rompre des liaisons dans plusieurs fichiers Excel

Résolu/Fermé
TaoQian Messages postés 10 Date d'inscription vendredi 4 janvier 2013 Statut Membre Dernière intervention 3 décembre 2014 - 2 déc. 2014 à 08:38
TaoQian Messages postés 10 Date d'inscription vendredi 4 janvier 2013 Statut Membre Dernière intervention 3 décembre 2014 - 3 déc. 2014 à 08:34
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
A voir également:

2 réponses

redaiwa Messages postés 351 Date d'inscription mardi 7 octobre 2008 Statut Membre Dernière intervention 25 janvier 2024 119
2 déc. 2014 à 12:05
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
TaoQian Messages postés 10 Date d'inscription vendredi 4 janvier 2013 Statut Membre Dernière intervention 3 décembre 2014
2 déc. 2014 à 16:53
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
TaoQian Messages postés 10 Date d'inscription vendredi 4 janvier 2013 Statut Membre Dernière intervention 3 décembre 2014
3 déc. 2014 à 08:34
Bonjour,

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

Merci
0