Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Ouvrir tous les fichiers en liens

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 !

maxwellou

XLDnaute Occasionnel
Bonjour à tous,

Tout d'abord je vous souhaite à tous une excellente année 2020.

Je dois régulièrement mettre à jour un tableau excel qui a d'autre fichier excel en source (liens via formule dans les cellules), et ces mêmes fichiers sources ont aussi d'autre liens. A l'image de poupées russes.

Je souhaiterais pouvoir ouvrir tous les fichiers (sources et sources de source) via une macro.

La macro ci-joint ne peut ouvrir que les liens du 1er fichier excel que j'ai ouvert. Ainsi, je souhaiterais que la macro ci-dessous se "relance" dès qu'un nouveau excel s'ouvre avec de nouveau lien.

L'autre souci, c'est que si un fichier est déjà ouvert, la macro bug, il faudrait qu'elle puisse continuer à tourner en ignorant le fichier déjà ouvert.

Merci de votre aide.


Sub Ouvrir_Liens()
Dim F As Worksheet, a, i&
Set F = ActiveSheet
a = ThisWorkbook.LinkSources
If Not IsArray(a) Then Exit Sub
For i = 1 To UBound(a)
Workbooks.Open a(i)
Next
Application.Goto F.[A1]
End Sub
 
Bonjour,
Utilise la récursivité de la fonction. Un truc du genre (non testé !):
VB:
Sub Ouvrir_Liens()
    Call Ouvrir_Liens_Classeur(ThisWorkbook)
End Sub

Sub Ouvrir_Liens_Classeur(WB As Workbook)
    Dim aLinks As Variant
    Dim WB2 As Workbook
    Dim i As Integer
    
    aLinks = WB.LinkSources
    If Not IsEmpty(aLinks) Then
        For i = 1 To UBound(aLinks)
            Workbooks.Open aLinks(i)
            Set WB2 = ActiveWorkbook
            Call Ouvrir_Liens_Classeur(WB2)
        Next i
    End If
End Sub
 
Et si des liens identiques sont mentionnés plusieurs fois à différents endroits:
Code:
Sub Ouvrir_Liens()
    Call Ouvrir_Liens_Classeur(ThisWorkbook)
End Sub

Sub Ouvrir_Liens_Classeur(WB As Workbook)
    Dim aLinks As Variant
    Dim i As Integer
    Dim j As Integer
  
    aLinks = WB.LinkSources
    If Not IsEmpty(aLinks) Then
        For i = 1 To UBound(aLinks)
            For j = 1 To Application.Workbooks.Count
                If Application.Workbooks(j).FullName = aLinks(i) Then Exit For
            Next j
          
            If j > Application.Workbooks.Count Then
                Workbooks.Open aLinks(i)
                Call Ouvrir_Liens_Classeur(ActiveWorkbook)
            End If
        Next i
    End If
End Sub
 
Dernière édition:
Merci beaucoup 🙂

Pourriez-vous aussi m'aider en cas de fichier (lien) inexistant, comment faire continuer à tourner la macro.
En fait, la macro ci-dessus, s’arrête de tourner dès qu'elle ne retrouve pas un fichier.

Merci
 
- 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
Microsoft 365 XLOOKUP
Réponses
8
Affichages
722
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…