Quelqu'un pour tester ?
Le
Joel
Bonjour,
Oui, je sais, si je pose des questions et que personne ne répond, c'est que
:
Ou bien ma question est incompréhensible pour le commun des contributeurs,
Ou bien elle est trop compliquée !
Ou bien je ne suis pas assez poli (ou joli ?)
Ou bien encore, c'est moi qui suis à côté de la plaque ! LOL
Mais je tente une troisième (et dernière c'est promis!) fois (on ne sait
jamais !!!)
Il arrive qu'un application se ballade d'un environnement à un autre, et
qu'à un moment donné, VB ne parvienne plus à "retrouver" une bibliothèque
déclarée (cela arrive surtout avec la référence Microsoft Word xx.x Object
Library dans mon cas.
Il y a des procédures décrites sur Disciplus (merci Misange et Frédéric
Sigonneau), mais elles semblent ne pas fonctionner ! comme ci celles-ci
n'étaient basées que sur la théorie, mais pas testées en réalité.
En voici une (notée à tester d'ailleurs !) :
'==
Sub AddMissingRefs()
'examine les références d'un projet, repère celles qui
'sont déclarées manquantes et essaye de les réinstaller
'à tester
Dim LesRefs As Object, i&, Msg$, Cpt&, Rep&, Mnq&, Chemin$, Nom$
Set LesRefs = ThisWorkbook.VBProject.References
For i = 1 To LesRefs.Count
With LesRefs(i)
If .IsBroken Then
Mnq = Mnq + 1: Chemin = .FullPath: Nom = .Name
LesRefs.Remove LesRefs.Item(.Name)
If Dir(Chemin) = "" Then
Msg = "La librairie " & Nom & " est manquante et le fichier" &
vbLf
Msg = Msg & "'" & Chemin & "'" & vbLf
Msg = Msg & "ne peut être trouvé pour l'installer."
MsgBox Msg, vbCritical
Cpt = Cpt + 1
Else
LesRefs.AddFromFile Chemin
Rep = Rep + 1
End If
End If
End With
Next i
If Mnq > 0 Then
If Cpt > 0 Then Msg = Cpt & " référence(s) toujours manquante(s)"
If Rep > 0 Then Msg = Msg & Rep & "référence(s) réinstallée(s)"
End If
End Sub
Frédéric Sigonneau, (N°1118) '=Or,
quand une référence est manquante, il est impossible de lire les propriétés
"FullPath" et "Name"Par ailleurs la méthode Remove ne fonctionne pasCe qui
serait sympa, c'est que quelqu'un ayant testé ce phénomène puisse au moins
me dire si la procédure fonctionne chez lui.Pour rendre une bibliothèque
manquante après l'avoir cochée, il suffit de renommer le fichier en .bak par
exemple dans son dossier.En espérant un retourPar avance Merci !-- Bien
cordialement,
Joël GARBE
www.joelgarbe.fr
Oui, je sais, si je pose des questions et que personne ne répond, c'est que
:
Ou bien ma question est incompréhensible pour le commun des contributeurs,
Ou bien elle est trop compliquée !
Ou bien je ne suis pas assez poli (ou joli ?)
Ou bien encore, c'est moi qui suis à côté de la plaque ! LOL
Mais je tente une troisième (et dernière c'est promis!) fois (on ne sait
jamais !!!)
Il arrive qu'un application se ballade d'un environnement à un autre, et
qu'à un moment donné, VB ne parvienne plus à "retrouver" une bibliothèque
déclarée (cela arrive surtout avec la référence Microsoft Word xx.x Object
Library dans mon cas.
Il y a des procédures décrites sur Disciplus (merci Misange et Frédéric
Sigonneau), mais elles semblent ne pas fonctionner ! comme ci celles-ci
n'étaient basées que sur la théorie, mais pas testées en réalité.
En voici une (notée à tester d'ailleurs !) :
'==
Sub AddMissingRefs()
'examine les références d'un projet, repère celles qui
'sont déclarées manquantes et essaye de les réinstaller
'à tester
Dim LesRefs As Object, i&, Msg$, Cpt&, Rep&, Mnq&, Chemin$, Nom$
Set LesRefs = ThisWorkbook.VBProject.References
For i = 1 To LesRefs.Count
With LesRefs(i)
If .IsBroken Then
Mnq = Mnq + 1: Chemin = .FullPath: Nom = .Name
LesRefs.Remove LesRefs.Item(.Name)
If Dir(Chemin) = "" Then
Msg = "La librairie " & Nom & " est manquante et le fichier" &
vbLf
Msg = Msg & "'" & Chemin & "'" & vbLf
Msg = Msg & "ne peut être trouvé pour l'installer."
MsgBox Msg, vbCritical
Cpt = Cpt + 1
Else
LesRefs.AddFromFile Chemin
Rep = Rep + 1
End If
End If
End With
Next i
If Mnq > 0 Then
If Cpt > 0 Then Msg = Cpt & " référence(s) toujours manquante(s)"
If Rep > 0 Then Msg = Msg & Rep & "référence(s) réinstallée(s)"
End If
End Sub
Frédéric Sigonneau, (N°1118) '=Or,
quand une référence est manquante, il est impossible de lire les propriétés
"FullPath" et "Name"Par ailleurs la méthode Remove ne fonctionne pasCe qui
serait sympa, c'est que quelqu'un ayant testé ce phénomène puisse au moins
me dire si la procédure fonctionne chez lui.Pour rendre une bibliothèque
manquante après l'avoir cochée, il suffit de renommer le fichier en .bak par
exemple dans son dossier.En espérant un retourPar avance Merci !-- Bien
cordialement,
Joël GARBE
www.joelgarbe.fr

Poser une question


XL2K FR sur Win98SE. La macro a fonctionné sur un test avec
c:xla-xllcalltree97calltree97.xla
Tellement bien fonctionné qu'elle n'apparait plus dans la liste, je vais
devoir la réinstaller :o)
@+
FxM
On 24/07/04 10:18, Joel wrote:
Je ne vois pas comment ta DLL a pu disparaître, car comment peut-elle
disparaître si elle n'existe pas ? Si la référence est indiquée manquante
dans la liste du menu Outils Références..., c'est qu'elle n'est plus à
l'endroit indiqué. La méthode remove ne retire pas du disque la DLL, mais se
contente de la "Décocher".
Il y aurait encore quelquechose que je n'aurais pas compris ?
A défaut de pouvoir décocher par VBA une référence manquante, je me suis
orienté vers une autre méthode, qui m'a été inspirée de l'échange avec
Michel PIERRON (Merci à lui !)
Trop long à développer ici, mais décrite depuis sur mon site (Lien VBA
Excel...)
--
Bien cordialement,
Joël GARBE
www.joelgarbe.fr
"FxM" news: