Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
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 !
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.
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.
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
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
- 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