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