Recherche classeurs faisant référence à mon classeur

Bonjour,

J'ai vu que de nombreux sujets traitaient de liaisons entre classeurs Excel. Cependant je n'ai pas réussi à trouver la réponse à ma question :

J'ai un classeur excel nommé ESSAI. J'aimerais le supprimer, mais je ne sait pas si un autre classeur excel fait référence à des formules/cellules de ce classeur ESSAI. A moins d'ouvrir les autres classeurs un par un, je ne sais pas si je peux supprimer ce fichier ...

Y aurait-il un moyen de savoir si des classeurs font référence à mon classeur ESSAI ?

J'espère qu'il y a une solution, ça m'arrangerait vraiment ! sinon je vous remercie d'avance de me dire si c'est possible ou non

Merci !

Bonjour,

Un code à essayer en adaptant les paramètres de fichier et aussi en prenant des précautions avant de supprimer (en Msgbox laissant les options de supprimer ou non). En tout état de cause, c'est un piste à creuser.

Sub liaisonsExternes()
    Workbooks.Open Filename:="C:\Users\nomUtilisateur\Documents\essai.xlsx"
    liaison = ActiveWorkbook.LinkSources(xlExcelLinks)
     If IsEmpty(liaison) Then
          If (Réponse = MsgBox("Aucune liaisons externes. Le fichier ESSAI peut être supprimé. Voulez-vous ? ", vbYesNo) = vbYes) Then
            ActiveWorkbook.Close savechanges:=False
            Kill "C:\Users\nomUtilisateur\Documents\essai.xlsx"
            MsgBox "C:\Users\nomUtilisateur\Documents\essai.xlsx" & " est supprimé"
        Else
            ActiveWorkbook.Close savechanges:=False
            MsgBox "C:\Users\nomUtilisateur\Documents\essai.xlsx" & " n'est pas supprimé"
        End If
    Else
          MsgBox "Liaisons externes existent. Le fichier ESSAI ne peut être supprimé"
          ActiveWorkbook.Close savechanges:=False
     End If
End Sub

Bonjour Bruno, tu as raison. C'est moi qui ai mal compris. Je laisse le code, on ne sait jamais

Bonjour le Fil

Raja, il me semble que tu n'as pas compris la question

Ce n'est pas le fait de savoir si une liaison existe dans le classeur Essai

c'est de savoir si un autre fichier est lié au classeur Essai

Enfin c'est ce que j'ai compris

Bonjour,

Bruno a raison, je cherche à savoir si un autre fichier est lié au classeur Essai. Merci quand même pour le code Raja, je le garde pour voir s'il peut me servir

Du coup vous ne savez pas si c'est possible ou non pour ma question ?

Salut,

Le fichier ci-joint est un peu du bricolage, basé sur un autre fichier. Si c’est un point de départ, on pourra voir comment l’améliorer.

Tu places ce fichier dans le dossier qui comporte tous les fichiers et sous-dossiers à passer en revue. Lorsque tu lances la macro à l’aide du bouton en place, tu dois indiquer un mot-clef suffisamment précis afin de définir le fichier que tu veux supprimer et auquel des formules dans les autres fichiers pourraient faire référence. Dans ton exemple, tu devrais donc indiquer « ESSAI ».

Comme ce fichier était prévu pour un autre travail, le fichier « Essai » lui-même sera probablement répertorié sur la Feuil1 en fin de macro. A la limite tu peux placer les 3 premières macros du fichier ci-joint ainsi que sa Feuil1 dans ton propre fichier et lancer la macro depuis là.

Les fichiers répertoriés sur la Feuil1 sont ceux ayant une liaison avec le fichier indiqué par mot-clé.

Cordialement.

31base-bis.zip (19.56 Ko)

Bonjour,

Merci pour cette macro, c'est exactement ce que je cherchais ! Si j'ai mis un peu de temps à répondre c'est que j'essayais le fichier sur plusieurs exemples.

Le seul souci c'est que sur tous les exemples que j'ai testés, le fichier "base bis" ne m'affiche que QUELQUES classeurs Excel faisant référence à mon classeur ESSAI. Certains classeurs Excel "échappent" à ce test VBA (bien qu'ils ne soient pas des fichiers "à problèmes").

Sauriez-vous si c'est une erreur de ma part ou si c'est le code VBA qui ne prend pas en compte tous les fichiers ?

Déjà merci beaucoup pour le code VB actuel !

Salut,

Mon code devrait traiter TOUS les fichiers Excel (mais que les fichiers Excel), pour autant qu'ils soient placés dans ton arborescence dans le même dossier que celui dans lequel est placé le fichier comportant ma macro (ou dans l’un de ses sous-dossiers ou sous-sous-dossiers, etc.). Peux-tu déjà bien contrôler où sont placés les fichiers qui ne sont pas pris en compte ?

Ensuite, s’ils sont bien placés correctement, pourrais-tu me fournir un fichier qui n’est pas pris en compte alors qu’il devrait l’être et me dire avec quel mot-clé tu as effectué ta recherche ?

Les fichiers que j'ai indiqué comme "Fichiers à problèmes" n'en créeraient que lors du déroulement de ma macro mais n'empêcherait pas sa bonne finalisation ; par exemple si un code demande à l'ouverture d'un fichier "visité" de confirmer quoi que ce soit à son ouverture, tu vas devoir confirmer cette chose au milieu de ma macro afin qu'elle puisse tout d'abord visiter ce ficheir puis continuer à visiter les autres fichiers.

A te relire.

Par exemple, j'ai créé un classeur "chapeau" auquel 3 classeurs font référence

15chapeau.xlsx (22.14 Ko)

. Ces 3 classeurs sont bien placés dans des sous-dossiers où se trouve la "base bis" (j'ai vérifié plusieurs fois !).

La macro permet de trouver les 2 premiers, mais pas le 3ème (qui a été enregistré dans le même format que les deux autres en "Classeur Excel"). Ci-joint ce fichier ("essai3") non trouvé par la macro

23essai3.xlsx (10.95 Ko)

. (Je ne pense que cela ait un impact mais dans le dossier où est placé ce 3ème classeur, il n'y a que des fichiers pdf).

Tous mes sous-dossiers sont pareils (pas de dossiers cachés ou autre), rien qui ne puisse créer de biais (à mon avis !).

J'essaye de regarder ce qui va pas de mon côté, mais je vous avouerai que mes compétences n'excellent pas beaucoup ... merci de m'aider en tout cas

C’est vraiment bizarre, car chez moi ça fonctionne.

J’ai placé mon fichier « Base bis » dans un dossier « Soso86 » et ton fichier « Essai3 » dans un sous-dossier « Fdfdfd », au milieu de 4 fichiers .PDF et ma macro trouve ton fichier « Essai3 » alors que je n'y ai rien changé.

Sais-tu faire passer une macro au pas-à-pas ? Ce serait peut-être la solution afin de voir où le bât blesse.

Cordialement.

04 06 bis 04 06

Je viens d'essayer de différentes combinaisons pour voir d'où vient le problème, mais je ne trouve pas. Selon le dossier (ou le sous-dossier) où je place mon classeur "essai3", la macro le trouve ou non.

Je n'ai pas réussi à trouver de correspondance entre les endroits où la macro ne trouve pas "essai3". En tout cas c'est bien un problème d'emplacement de fichier.

J'ai regardé la macro pas-à-pas mais je n'arrive pas à trouver d'où cela peut bien venir :s

Je ne sais pas si vous pourriez savoir d'où cela vient : dans tous les cas je vous remercie d'avoir regardé !

Si tu mets un point d'arrêt sur la ligne "Workbooks.Open Chemin & Fichier_traité", tu peux déjà voir si le fichier concerné est ouvert ou non. Après avoir placé ton point d'arrêt du clique F5 et tu arrives sur le point d'arrêt, tu cliques F8 et tu peux voir quel est le nouveau fichier visité. Tu cliques à nouveau sur F5 + F8 et tu vois le prochain fichier visité, etc. Tu comprends ce que je veux dire ?

Si ton fichier Essai 3 est correctement ouvert, on essayera de voir par la suite pourquoi il n'est pas inscrit dans la liste finale.

J'ai fait la méthode pas à pas et en fait mon fichier n'avait effectivement pas été traité : la boucle s'est arrêtée lors d'un bug de macro d'un autre fichier. J'avais le choix entre "Fin" ou "Débogage". Quand je choisissais "Débogage" il fallait que je trouve une solution à cette macro que je ne connaissais pas donc je mettais "Fin" et la macro de "Base bis" s'arrêtait et ne traitait pas les fichiers restants.

Est-ce qu'il y aurait une solution dans ce cas-là ? (autre que supprimer le fichier problématique)

Si je peux abuser, j'ai encore une petite question : j'ai des dizaines (voire centaines) de fichiers liés dans mes dossiers donc quand je lance la macro de "Base bis", je dois cocher "Ne pas mettre à jour" dès qu'un fichier est ouvert. Y aurait-il moyen d'intégrer dans la macro une commande pour automatiser la NON mise à jour des fichiers lors de l'exécution de la macro ?

Normalement c'étaient mes dernières questions !

soso86 a écrit :

Est-ce qu'il y aurait une solution dans ce cas-là ? (autre que supprimer le fichier problématique)

La seule autre solution que je vois est de corriger cette autre macro créant problème ou de la neutraliser (par effacement ou en la mettant en commentaire).
soso86 a écrit :

j'ai des dizaines (voire centaines) de fichiers liés dans mes dossiers donc quand je lance la macro de "Base bis", je dois cocher "Ne pas mettre à jour" dès qu'un fichier est ouvert. Y aurait-il moyen d'intégrer dans la macro une commande pour automatiser la NON mise à jour des fichiers lors de l'exécution de la macro ?

Je n’ai pas trouvé cette solution. J’ai bien essayé d’écrire la ligne de code Application.DisplayAlerts = False, mais ça ne sert à rien pour ces cas là (comme je n'ai indiqué sous forme de commentaire directement dans la macro ).

Faudrait-il placer une nouvelle demande uniquement pour ce problème sur un autre fil ??? Dans tous les cas, si une solution est trouvée, je serais preneur

Amicalement.

OK d'accord. J'avoue que j'avais pas trop regardé le code (c'est d'ailleurs pas sûr que je l'aurais compris...). Merci pour toutes ces réponses, au moins j'aurais réussi à caler au même niveau qu'Yvouille et ça c'est une petite victoire !

Je doute que quelqu'un d'autre ne réponde (pour les fichiers avec liaisons) puisque je n'ai reçu d'autre réponse positive à ma question de départ.

Bonne continuation et à une prochaine sur le forum

Solène

A tout hasard j'ai essayé de placer une demande au sujet de ces messages "Mettre à jour".

Voir mon autre fil https://forum.excel-pratique.com/excel/vba-eviter-le-message-mettre-a-jour-les-liaisons-t40337.html

Cordialement.

Bonjour Solène,

Je ne sais pas si tu as suivi la discussion que je t'ai proposée, mais Banzai m'y a apporté la solution à ton problème

Je l'ai incluse dans le fichier ci-joint.

Amicalement.

17base-ter.zip (16.28 Ko)

Bonjour Yves,

Merci beaucoup pour la solution : c'est génial ça vaut vraiment le coup maintenant d'utiliser la macro ! Même si j'ai encore des bugs (car je fais des recherches dans des dossiers en commun avec d'autres personnes, donc il y a souvent des fichiers "à problèmes").

A très bientôt sur le forum ! et encroe merci

Rechercher des sujets similaires à "recherche classeurs faisant reference mon classeur"