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

Localiser cellule alimentée par liaison

  • Initiateur de la discussion Initiateur de la discussion Madjon6
  • Date de début Date de début

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 !

Madjon6

XLDnaute Occasionnel
Bonjour,

Je cherche un code vba me permettant de localiser les cellules qui sont alimentées par des fichiers en liaisons et par quel fichier.

En effet j'ai des fichiers avec trop de liaisons vers d'autres fichiers et je perds un temps fou à comprendre quelle liaison alimente quelle cellule.


Merci à vous
 
Re : Localiser cellule alimentée par liaison

Bonjour,

A adapter:

Code:
[COLOR=BLUE]Sub[/COLOR] AfficherLiens()
    [COLOR=BLUE]Dim[/COLOR] formulesLiens [COLOR=BLUE]As[/COLOR] Range, c [COLOR=BLUE]As[/COLOR] Range
    [COLOR=BLUE]Dim[/COLOR] sh [COLOR=BLUE]As[/COLOR] Worksheet
    [COLOR=BLUE]Dim[/COLOR] Adr [COLOR=BLUE]As[/COLOR] [COLOR=BLUE]String[/COLOR], Texte [COLOR=BLUE]As[/COLOR] [COLOR=BLUE]String[/COLOR]
    [COLOR=BLUE]For[/COLOR] [COLOR=BLUE]Each[/COLOR] sh [COLOR=BLUE]In[/COLOR] Worksheets
        [COLOR=BLUE]With[/COLOR] sh.UsedRange
            [COLOR=BLUE]Set[/COLOR] c = .Find([i]"*.xls"[/i], LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=[COLOR=BLUE]False[/COLOR])
            [COLOR=BLUE]If[/COLOR] [COLOR=BLUE]Not[/COLOR] c [COLOR=BLUE]Is[/COLOR] [COLOR=BLUE]Nothing[/COLOR] [COLOR=BLUE]Then[/COLOR]
                Adr = c.Address
                [COLOR=BLUE]Do[/COLOR]
                    Texte = Texte & [i]"'"[/i] & sh.Name & [i]"'!"[/i] & c.Address & [i]" -> "[/i] & c.Formula & Chr(10)
                    [COLOR=BLUE]Set[/COLOR] c = .FindNext(c)
                [COLOR=BLUE]Loop[/COLOR] [COLOR=BLUE]While[/COLOR] [COLOR=BLUE]Not[/COLOR] c [COLOR=BLUE]Is[/COLOR] [COLOR=BLUE]Nothing[/COLOR] [COLOR=BLUE]And[/COLOR] c.Address <> Adr
            [COLOR=BLUE]End[/COLOR] [COLOR=BLUE]If[/COLOR]
        [COLOR=BLUE]End[/COLOR] [COLOR=BLUE]With[/COLOR]
    [COLOR=BLUE]Next[/COLOR]
    [COLOR=BLUE]If[/COLOR] Len(Texte) > 0 [COLOR=BLUE]Then[/COLOR] MsgBox Texte
[COLOR=BLUE]End[/COLOR] [COLOR=BLUE]Sub[/COLOR]

A+
 
Re : Localiser cellule alimentée par liaison

Oui c'est à peu près ça mais le résultat n'est pas très lisible et comme je ne suis novice sur VBA je vais avoir du mal à lo'adapter pour rendre le résultat lisible. l'idéal serait que les cellule ayant pour source une liaison soit coloriée ....
 
Re : Localiser cellule alimentée par liaison

Bonjour,

Avec un bonjour ça passe mieux. Et tu pouvais pas préciser ta demande de coloration dès le départ.

Code:
[COLOR=BLUE]Sub[/COLOR] AfficherLiens()
    [COLOR=BLUE]Dim[/COLOR] formulesLiens [COLOR=BLUE]As[/COLOR] Range, c [COLOR=BLUE]As[/COLOR] Range
    [COLOR=BLUE]Dim[/COLOR] sh [COLOR=BLUE]As[/COLOR] Worksheet
    [COLOR=BLUE]Dim[/COLOR] Adr [COLOR=BLUE]As[/COLOR] [COLOR=BLUE]String[/COLOR]
    [COLOR=BLUE]For[/COLOR] [COLOR=BLUE]Each[/COLOR] sh [COLOR=BLUE]In[/COLOR] Worksheets
        [COLOR=BLUE]With[/COLOR] sh.UsedRange
            [COLOR=BLUE]Set[/COLOR] c = .Find([i]"*.xls"[/i], LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=[COLOR=BLUE]False[/COLOR])
            [COLOR=BLUE]If[/COLOR] [COLOR=BLUE]Not[/COLOR] c [COLOR=BLUE]Is[/COLOR] [COLOR=BLUE]Nothing[/COLOR] [COLOR=BLUE]Then[/COLOR]
                Adr = c.Address
                [COLOR=BLUE]Do[/COLOR]
                    c.Interior.ColorIndex = 44
                    [COLOR=BLUE]Set[/COLOR] c = .FindNext(c)
                [COLOR=BLUE]Loop[/COLOR] [COLOR=BLUE]While[/COLOR] [COLOR=BLUE]Not[/COLOR] c [COLOR=BLUE]Is[/COLOR] [COLOR=BLUE]Nothing[/COLOR] [COLOR=BLUE]And[/COLOR] c.Address <> Adr
            [COLOR=BLUE]End[/COLOR] [COLOR=BLUE]If[/COLOR]
        [COLOR=BLUE]End[/COLOR] [COLOR=BLUE]With[/COLOR]
    [COLOR=BLUE]Next[/COLOR]
[COLOR=BLUE]End[/COLOR] [COLOR=BLUE]Sub[/COLOR]

A+
 
Re : Localiser cellule alimentée par liaison

Bonjour Hasco désolé pour le désagrément.

Par contre serait ce possible d'avoir un supplément de code permettant d'enlever la couleur au besoin.

Merci encore
 
Dernière édition:
Re : Localiser cellule alimentée par liaison

Bonjour Majon6, salut Hasco 🙂

Si l'on change son fusil d'épaule à chaque post ça ne va pas être triste 🙄

S'il s'agit seulement de colorer les cellules avec liaison, on peut aussi plus simplement utiliser une MFC appliquée à toutes les cellules de chaque feuille.

1) Dans chaque feuille sélectionner toutes les cellules.

2) Menu Insertion-Nom et définir le nom F par la formule (en A1) :

Code:
=LIRE.FORMULE(Feuil1!A1)

3) Menu Format-Mise en forme conditionnelle => La formule est :

Code:
=CHERCHE("[";F)

qui fonctionne même si le document en liaison n'est pas enregistré.

Nota : LIRE.FORMULE est une fonction macro Excel 4.0.

A+
 
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

Réponses
3
Affichages
884
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…