Récupérer noms de feuilles & Plage utilisant données de classeur externe

Hello Forum,

J'ai fait une procédure qui parcourt toutes les feuilles (plus de 70 feuilles) d'un classeur. Chaque feuille contient une plage non contigue (il peut y avoir des lignes et colonnes ou cellules entièrement vides dans la plage). La plage est elle aussi variable selon la feuille, bien entendu.

Pour décrire le contexte, je dois boucler:

1. sur toutes les cellules non-vides d'une plage non-contigue d'une feuille donnée.

2. Puis, sur toutes les feuilles d'un classeur donné.

3. Ensuite sur tous les fichiers d'un dossier.

4. Et encore, boucler sur tous les dossier de dossiers

5. Boucler enfin sur tous les dossiers d'un répertoire...

Je m'intéresse dans mon code, uniquement aux cellules qui utilisent des données externes liée, provenant d'un autre classeur que le classeur actif.

Une idée serait d'identifier immédiatement, les noms de feuilles qui en contiennt et de boucler les plages de ces feuilles en question.

J'ai pu faire les étapes 1 à 3 sans difficulté. Le code fonctionne bien, mais il est trop lent parce que je parcours TOUTES les feuilles (en sachant que peu, disons moins de 15, utilisent des données externes) au lieu de cibler les feuilles pertinente.

Mes questions:

1. Quelqu'un saurait-il comment donc, renvoyer le nom des feuilles qui contiennent des données externes (liées donc) d'un autre classeur excel ?

2. Y aurait-il un moyen d'identifier, dans la même idée, les cellules d'une plage qui contiennent des liens externes?

3. Je me doute que celle-ci sera la plus improbable, identifier si un classeur est lié à un autre qu'on ne connait pas forcément.

L'objectif étant d'optimiser les délais d'exécution.

En vous remerciant d'avance vos potentielles contributions pertinentes,

Bien à vous,

Y.

Bonjour,

Un début de réponse avec un classeur et un lien.

Copie la procédure dans un classeur dont tu auras fait une copie (ne pas travailler sur un original).

Exécute la procédure!...

A te relire, car pas testé !...

Cdlt.

Bonsoir Jean-Eric,

Merci beaucoup de votre retour rapide. Je vais tester votre proposition et vous fais un retour au plus tôt.

C'est du "lourd" votre code à ce que je vois , j'espère qu'il fonctionnera parfaitement. A très vite!

Re- bonjour Jean-Eric,

Une erreur d'exécution: "Run-time error 13: Type mismatch ". Un problème d'incompatibilité de type sur la partie du code:

Private Function linkStatusDescr(statusCode)
    Select Case statusCode
        Case xlLinkStatusCopiedValues
            linkStatusDescr = "Copied values"

Je vais creuser un peu voir ce que je peux trouver comme solution de mon côté.

A tantôt!

error error1

L'eereur semble venir de la variable StatusCode mise en argument de la fonction linkStatusDescr.

L'erreur affichée sur statusCode : "Error 2015"

Le problème viendrait probablement de InstrRev ?

J'ai à un moment donné:

dans le code,

For j = LBound(aLinks) To UBound(aLinks)
                            filepath = aLinks(j)   'LinkSrouces returns full file path with file name
                            filename = Right(filepath, Len(filepath) - InStrRev(filepath, "\"))   'extract just the file name
                            filepath2 = Left(aLinks(j), InStrRev(aLinks(j), "\")) & "[" & filename & "]"  'file path with brackets

Pour i=1 to 5

filepath= " ata!$B$31 " au lieu de " Data!$B$31 " (Un problème de lecture du nom de classeur ?)

aLinks(j)= < Subcript out of range >

Je continue la recherche.

Il semble que le code tienne compte aussi des liens de feuille à feuille (à l'intérieur d"un même classeur).

Le code beugge lors de son premier affichage. il a identifié une cellule contenant une formule utilisant des liens vers une autre cellule.

Je cherche encore.

Re,

Pour ton information, ce n'est pas ma procédure !...

J'ai mis le lien vers le site pour un complément d'informations.

Cdlt.

Bonjour Jean-Eric,

Merci pour l'information. Je suis allé sur le site. J'ai pu voir que je ne suis pas le seul à avoir rencontré ces problèmes en question en parcourant les commentaires du site: http://access-excel.tips/find-external-links-broken-links/

Certains ont noté comme moi que le code afficherait aussi des liens entre feuilles du même classeur (ce qui n'était pas le but)

D'autres ont eu le problème du chemin " Filepath " qui au lieu d'afficher le chemin intégral du classeur lié, affiche plutôt le nom de ce classeur (Un nom coupé d'un caractère dans mon cas).

Moi j'ai rencontré les deux situations à la fois. Il doit certainement y avoir des adaptations à faire pour le rendre plus générique à tous les usages.

En tout cas, merci de cette formidable proposition. Cela m'aide à avancer, il "suffira" de le corriger et le tour sera joué.

Je vais continuer de chercher des améliorations, dès que je trouverai un peu de temps.

Bonne journée à vous,

Y.

Bonjour,

Je n'ai pas vraiment regardé la procédure dans le détail (le pourquoi du lien et pas simplement une copie).

J'ai cependant appris certaines choses tout comme toi, qui a fait un effort pour comprendre la chose.

Effort que je salue !...

Il faut maintenant comme tu le dis, l'adapter à ses propres besoins.

Bonne continuation.

Cdlt.

Rechercher des sujets similaires à "recuperer noms feuilles plage utilisant donnees classeur externe"