Rompre des liaisons dans plusieurs fichiers Excel [Résolu/Fermé]

Messages postés
10
Date d'inscription
vendredi 4 janvier 2013
Statut
Membre
Dernière intervention
3 décembre 2014
- - Dernière réponse : 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
Afficher la suite 

2 réponses

Meilleure réponse
Messages postés
347
Date d'inscription
mardi 7 octobre 2008
Statut
Membre
Dernière intervention
2 juin 2015
88
2
Merci
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

Dire « Merci » 2

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 71216 internautes nous ont dit merci ce mois-ci

TaoQian
Messages postés
10
Date d'inscription
vendredi 4 janvier 2013
Statut
Membre
Dernière intervention
3 décembre 2014
-
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.

;-)
Messages postés
10
Date d'inscription
vendredi 4 janvier 2013
Statut
Membre
Dernière intervention
3 décembre 2014
0
Merci
Bonjour,

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

Merci