Excel 2013 Refs.Remove ne fonctionne pas

Le
rmill...
Bonjour,

Il semble qu'avec Excel 2013 le code ci-dessous ne fonctionne pas. Je sais =
que ceci a déjà fait l'objet de discussions mais je ne trouve rie=
n en tant que solution.

Je place ce code dans l'évènement Open.

Sauriez-vous pourquoi et quoi faire?

Merci à l'avance.

*************
Dim Refs As Object, Ref As Object
On Error Resume Next
With ThisWorkbook
Set Refs = .VBProject.References
For Each Ref In Refs
If Ref.IsBroken Then
Refs.Remove Ref.Name
End If
Next
End With
  • Partager ce contenu :
Vos réponses
Trier par : date / pertinence
MichD
Le #26553789
Le 01/09/20 à 14:00, a écrit :
Dim Refs As Object, Ref As Object
On Error Resume Next
With ThisWorkbook
Set Refs = .VBProject.References
For Each Ref In Refs
If Ref.IsBroken Then
Refs.Remove Ref.Name
End If
Next
End With


Bonjour,
Je ne peux pas effectuer de test, je n'ai aucun classeur ayant une
référence brisée. Si tu as un tel fichier, supprime toutes les données
et publie-le en utilisant Cjoint.com. Tu nous retournes l'adresse
obtenue ici.
Ceci étant dit, essaie comme ceci :
'--------------------------------------
Sub test()
Dim Refs As Object, Ref As Object
On Error Resume Next
With ThisWorkbook
Set Refs = .VBProject.References
For Each Ref In Refs
If Ref.IsBroken Then
Refs.Remove Refs.Item(Ref.Name)
End If
Next
End With
End Sub
'--------------------------------------
MichD
rmill...
Le #26553795
Merci. Je vais tester et revenir.


Le 01/09/20 à 14:00, a écrit :
Dim Refs As Object, Ref As Object
On Error Resume Next
With ThisWorkbook
Set Refs = .VBProject.References
For Each Ref In Refs
If Ref.IsBroken Then
Refs.Remove Ref.Name
End If
Next
End With

Bonjour,
Je ne peux pas effectuer de test, je n'ai aucun classeur ayant une
référence brisée. Si tu as un tel fichier, supprime toutes les données
et publie-le en utilisant Cjoint.com. Tu nous retournes l'adresse
obtenue ici.
Ceci étant dit, essaie comme ceci :
'--------------------------------------
Sub test()
Dim Refs As Object, Ref As Object
On Error Resume Next
With ThisWorkbook
Set Refs = .VBProject.References
For Each Ref In Refs
If Ref.IsBroken Then
Refs.Remove Refs.Item(Ref.Name)
End If
Next
End With
End Sub
'--------------------------------------
MichD
rmill...
Le #26554327
Le mardi 1 septembre 2020 à 17 h 25 min 05 s UTC-4, a écrit :
Merci. Je vais tester et reven
Le 01/09/20 à 14:00, a écrit :
> Dim Refs As Object, Ref As Object
> On Error Resume Next
> With ThisWorkbook
> Set Refs = .VBProject.References
> For Each Ref In Refs
> If Ref.IsBroken Then
> Refs.Remove Ref.Name
> End If
> Next
> End With
Bonjour,
Je ne peux pas effectuer de test, je n'ai aucun classeur ayant une
référence brisée. Si tu as un tel fichier, supprime tout es les données
et publie-le en utilisant Cjoint.com. Tu nous retournes l'adresse
obtenue ici.
Ceci étant dit, essaie comme ceci :
'--------------------------------------
Sub test()
Dim Refs As Object, Ref As Object
On Error Resume Next
With ThisWorkbook
Set Refs = .VBProject.References
For Each Ref In Refs
If Ref.IsBroken Then
Refs.Remove Refs.Item(Ref.Name)
End If
Next
End With
End Sub
'--------------------------------------
MichD
rmill...
Le #26554330
Bonjour,
J'ai testé et Excel gèle. Je dois faire un control alt delete.
Le Excel était 2013.
MichD
Le #26554331
Le 10/09/20 à 16:20, a écrit :
Bonjour,
J'ai testé et Excel gèle. Je dois faire un control alt delete.
Le Excel était 2013.


Bonjour,
Vide les feuilles de calcul de leur contenu, tu peux même effacer tout
ton code, et publie ce classeur en utilisant l'adresse Cjoint.com. Tu
nous retournes l'adresse obtenue ici.
Pour effectuer quelques tests, j'ai seulement besoin que la bibliothèque
marquée "MANQUANTE" dans la liste des références soit toujours là.
Est-ce que tu as une de ces références marquées "MANQUANTE"? SI oui quel
est son nom?
MichD
MichD
Le #26554332
Le 10/09/20 à 16:41, MichD a écrit :
Le 10/09/20 à 16:20, a écrit :
Bonjour,
J'ai testé et Excel gèle. Je dois faire un control alt delete.
Le Excel était 2013.

Bonjour,
Vide les feuilles de calcul de leur contenu, tu peux même effacer tout
ton code, et publie ce classeur en utilisant l'adresse Cjoint.com. Tu
nous retournes l'adresse obtenue ici.
Pour effectuer quelques tests, j'ai seulement besoin que la bibliothèque
marquée "MANQUANTE" dans la liste des références soit toujours là.
Est-ce que tu as une de ces références marquées "MANQUANTE"? SI oui quel
est son nom?
MichD

Dans la fenêtre de l'éditeur de code (VBA), appuie sur la touche F2.
Dans la liste déroulante du haut, choisis la bibliothèque marquée
manquante et dans le bas de la fenêtre, tu as le chemin et le nom du
fichier associés à cette bibliothèque. Est-ce que ce fichier est présent
sur ton ordinateur?
MichD
MichD
Le #26554336
Bonjour,
Vide les feuilles de calcul de leur contenu, tu peux même effacer tout
ton code, et publie ce classeur en utilisant l'adresse Cjoint.com. Tu
nous retournes l'adresse obtenue ici.
Pour effectuer quelques tests, j'ai seulement besoin que la
bibliothèque marquée "MANQUANTE" dans la liste des références soit
toujours là.
Est-ce que tu as une de ces références marquées "MANQUANTE"? SI oui
quel est son nom?
MichD

Dans la fenêtre de l'éditeur de code (VBA), appuie sur la touche F2.
Dans la liste déroulante du haut, choisis la bibliothèque marquée
manquante et dans le bas de la fenêtre, tu as le chemin et le nom du
fichier associés à cette bibliothèque. Est-ce que ce fichier est présent
sur ton ordinateur?
MichD

Regarde ce site web de Microsoft (en anglais), il arrive à la même
conclusion que moi.
https://support.microsoft.com/en-us/help/308340/how-to-check-and-remove-incorrect-project-references-in-the-visual-bas
Ceci, je te réitère l'offre de publier ton classeur.
MichD
MichD
Le #26554337
Le site Web charge la référence suivante :
Microsoft Visual Basic for Applications Extensibility 5.3
Cela permet d'utiliser de définir le type des variables différemment.
On appelle cela "Liaison précoce", la procédure présentée utilisait une
relation tardive. Je pensais que cela ne faisait pas une différence.
Je t'ai donné une procédure "Ajouter_Une_Référence" que tu exécutes en
premier pour charger la procédure et dans un second temps, la procédure
"CheckReference", il y a seulement la déclaration des variables qui diffère.
Je ne connais pas un autre moyen de le faire par code. L'alternative est
de décocher manuellement la (les) référence marquée "MANQUANTE".
Dernière chance ;-))
'---------------------------------------------
Sub Ajouter_Une_Référence()
'Cette procédure ajoute la référence suivannte :
'"Microsoft Visual Basic for Applications Extensibility 5.3"
'Cela modifie la manière dont on peut déclarer les variables.
On Error Resume Next
ThisWorkbook.VBProject.References.AddFromGuid _
GUID:="{0002E157-0000-0000-C000-000000000046}", Major:=5, Minor:=3
End Sub
'---------------------------------------------
Sub CheckReference()
Dim vbProj As VBProject
Dim chkRef As Reference
' Refer to the activedocument's VBA project.
Set vbProj = ThisWorkbook.VBProject
' Check through the selected references in the References dialog box.
For Each chkRef In vbProj.References
' If the reference is broken, send the name to the Immediate Window.
If chkRef.IsBroken Then
Refs.Remove Refs.Item(chkRef.Name)
End If
Next
End Sub
'---------------------------------------------
MichD
Poster une réponse
Anonyme