Office VBA : Suppression Références manquantes

  • Initiateur de la discussion Initiateur de la discussion zenixNT
  • 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 !

zenixNT

XLDnaute Nouveau
Bonjour,

Je suis à la recherche d'une solution (pour changer) concernant un problème de gestion des références.
J'ai un document Word contenant des références, dont une est MANQUANTE. J'aimerai automatiser le traitement de suppression de cette référence qui ne sert à rien dans mon code (System Monitor Control) puisque je ne fais pas de monitoring sur ce genre de document.
J'ai trouvé beaucoup de solutions pour supprimer les réferences, notamment en utilisant le lien suivant, la boucle

Code:
For Each chkRef In vbProj.References
 
      ' If the reference is broken, send the name to the Immediate Window.
      If chkRef.IsBroken Then
         vbProj.References.Remove chkRef
      End If
 
   Next

Ce code ne fonctionne pas car la référence ne peut pas être "atteinte" car elle n'est pas renseignée dans le registre (effectivement le GUID est absent du registre)... Du coup impossible de supprimer cette référence du projet puisqu'elle est absente du registre...

Y a-t-il quelqu'un qui aurait une idée sur la méthode de suppression d'une référence absente du registre ?

Je vous remercie beaucoup pour votre réponse et vous souhaite une bonne journée!

zenixNT
 
Re : Office VBA : Suppression Références manquantes

Bonsoir à tous

Testé sur un *.doc avec la référence cochée (avec Word 2013)
Après exécution du code ci-dessous la référence n'est plus cochée.
Code:
Sub RemoveReference()
     Dim Reference As Object
     For Each Reference In ActiveDocument.VBProject.References
           If Reference.Description = "System Monitor Control" Then
                 ActiveDocument.VBProject.References.Remove Reference
           End If
     Next
End Sub

PS: Il faut que soit cochée cette référence:
Microsoft Visual Basic for Application Extensibility 5.3
et que dans Sécurité Macros ceci soit coché.
approuve.png
 
Re : Office VBA : Suppression Références manquantes

Bonjour Staple1600 et merci beaucoup pour ta réponse et le temps pris pour le test !

Je suis tout à fait d'accord que ce code fonctionne si la référence est initialement cochée et fonctionnelle. Cependant, le code que j'utilise et le tien, ne fonctionnent pas si la référence est notée comme MANQUANTE dans la liste des références. A ce moment, aucun moyen de la décocher puisqu'elle est absente du registre... C'est vraiment le fait qu'elle soit MANQUANTE qui m'empêche de supprimer la référence...
J'avoue que le cas de test est assez difficile à recréer, mais pour ceux qui en auront le courage, je vous remercie de votre aide !

Cordialement, et vous souhaitant beaucoup de courage et ténacité pour résoudre tous les problèmes,

zenixNT
 
Re : Office VBA : Suppression Références manquantes

Bonjour Staple1600 et merci beaucoup pour ta réponse et le temps pris pour le test !

Je suis tout à fait d'accord que ce code fonctionne si la référence est initialement cochée et fonctionnelle. Cependant, le code que j'utilise et le tien, ne fonctionnent pas si la référence est notée comme MANQUANTE dans la liste des références. A ce moment, aucun moyen de la décocher puisqu'elle est absente du registre... C'est vraiment le fait qu'elle soit MANQUANTE qui m'empêche de supprimer la référence...
J'avoue que le cas de test est assez difficile à recréer, mais pour ceux qui en auront le courage, je vous remercie de votre aide !

Cordialement, et vous souhaitant beaucoup de courage et ténacité pour résoudre tous les problèmes,

zenixNT
Bonjour

Je rencontre aujourd'hui le même problème.
Y a t il une solution en VBA sans utiliser la liaison retardée (Late Binding), peut-être en listant l'ensemble des références possibles par le registre, récupérer une information (par exemple GUID ou autre) puis effectuer une opération soit le registre ou dans VBE ?

Merci de ne pas insister sur la solution "Late Binding", je désire garder l'aide au développement avec l'affichage des méthodes et propriétés en ligne... ;-)

Merci d'avance.
Jean-Marie
 
Dernière édition:
bonjour,
le problème vient du fait que les librairies sont embarqué dans le projet vb, donc tes références sont attachés au classeur. rien a voir avec l'instenciation tardive.

ton fichier provient d'un autre système d'exploitation et/ou version excel.

soit c'est la première utilisation sur cette machine et accessoirement sur des ordinateurs de même facture, dans ce cas le plus simple est de décrocher un fois pour toutes les références manquantes.

soit ton application fait des alé retour et dans ce cas il faut utiliser l'instance qui est réellement instancié.

le plus souvent il s'agit de Visual Basic for application
par exemple tu as un erreur sur trim trim fait partie de la librairie VBA dans ce cas tu décline VBA.Trim.
 
Merci Barbatruc (plus facile à écrire...) ;-)

Je pense comprendre mais voici exactement le contexte...
Les plateformes de distribution de mon classeur sont les mêmes : Windows réel sur un PC (pas d'autre systèmes d'exploitation avec une émulation Windows ou Office), avec la même version Office (365).
L'ensemble des références "standards" Windows et Office ne posent pas de problème, ce sont les même chez moi et chez les autres. Je rencontre une difficulté avec 1 seul fichier personnel ".xlam" personnel.

J'ai développé différentes macros très "généralistes" dans un fichier ".xlam" utilisé par un lien indiqué par une référence.
Ce fichier peut évoluer et est mis dans le même dossier que le classeur suivant l'évolution des versions de mon classeur, mais ce dossier est différent suivant l'ordinateur des personnes à qui je distribue mon classeur.

Ce dossier étant différent, la référence devient "Manquante" lorsque la nouvelle version du classeur est copiée sur la plateforme cible.
J'essaie de développer une macro qui teste le bon référencement de ce fichier dans l'événement 'Open' du classeur. La référence étant indiquée "Manquante", je n'arrive pas à supprimer automatiquement cette mauvaise référence pour réaffecter le bon fichier situé sur le dossier du classeur.

Je ne sais pas si j'ai été clair...
Jean-Marie
 
- 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
Retour