VBA - Lister l'ensemble des classeurs liés

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Arnaud81

XLDnaute Junior
Bonjour,

J'ai un classeur "A" avec des liaisons vers une dizaine d'autres classeurs.

Je souhaiterai avoir une macro qui me liste sur la feuille "liaison" du classeur "A" l'ensembles des classeurs liés avec les chemins d'accès à ces fichiers.

Merci d'avance
 
Re : VBA - Lister l'ensemble des classeurs liés

Bonsoir.
Voir méthode LinkSources de l'objet Workbook.
Cette méthode renvoie un tableau de liaisons dans le classeur. Les noms contenus dans le tableau sont ceux des documents, éditions ou serveurs DDE ou OLE liés. Cette méthode renvoie la valeur Empty s'il n'existe aucune liaison.
Cordialement.
 
Re : VBA - Lister l'ensemble des classeurs liés

Bonsoir Dranreb,

J'ai trouvé ceci mais cela ne fonctionne pas vraiment...

Sub ExtraitDocumentLies()
Dim TabLiaisons As Variant
Dim x As Integer

'Renvoie un tableau de TabLiaisons
TabLiaisons = ThisWorkbook.LinkSources

'Vérifie si le tableau est vide
If Not IsEmpty(TabLiaisons) Then
'Boucle sur le tableau
For x = 1 To UBound(TabLiaisons)
Debug.Print TabLiaisons(x)
If Dir(TabLiaisons(x)) = "" Then _
MsgBox "La liaison est erronée:" & vbCrLf & _
"'" & TabLiaisons(x) & "'"
Next x
End If
End Sub
 
Re : VBA - Lister l'ensemble des classeurs liés

Si, la façon de récupérer les liaisons est bonne.
Une variante pour le classeur actif:
VB:
Sub ExtraitDocumentLies()
Dim TabLiaisons() As Variant, X As Integer
TabLiaisons = ActiveWorkbook.LinkSources
If IsEmpty(TabLiaisons) Then
   MsgBox "Il n'y a aucune liaison dans le classeur actif"
Else
   For X = 1 To UBound(TabLiaisons)
      MsgBox "Liaison '" & TabLiaisons(X) & "': " & IIf(Dir(TabLiaisons(X)) = "", "erronée", "Ok !")
      Next X
   End If
End Sub
Il ne vous reste plus qu'à les inscrire dans des cellules au lieu de les affichier en MsgBox.
VB:
Sub ListerDocumentLies()
Dim TabLiaisons() As Variant, X As Integer
On Error Resume Next
TabLiaisons = ActiveWorkbook.LinkSources
ActiveSheet.[A2:A21].ClearContents
ActiveSheet.[A2].Resize(UBound(TabLiaisons)).Value = WorksheetFunction.Transpose(TabLiaisons)
End Sub
Cordialement.
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Autres Code VBA
Réponses
11
Affichages
469
Réponses
7
Affichages
262
Réponses
5
Affichages
401
  • Question Question
Réponses
7
Affichages
343
Retour