Localiser cellule alimentée par liaison

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
 
G

Guest

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

Madjon6

XLDnaute Occasionnel
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 ....
 
G

Guest

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

Madjon6

XLDnaute Occasionnel
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:

job75

XLDnaute Barbatruc
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 :rolleyes:

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:

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 276
Messages
2 086 714
Membres
103 377
dernier inscrit
fredy45