OVH Cloud OVH Cloud

Accès aux références

14 réponses
Avatar
Rinette Tahiti
Bonjour,

J'ai une application ACCESS avec des modules VisualBasic. Cette application
fonctionne normalement sur mon PC mais ne fonctionne pas sur un autre PC
ayant la même configuraton Windows et la même version d'ACCESS. Nous avons pu
déterminer qu'il s'agit d'une DLL manquante dans la bibliothèque de
références, mais nous ne pouvons pas accéder aux références sur le Pc en
défaut car l'option est grisée.

Quelqu'un pourrait-il me dire comment rendre cette option disponible sur le
PC en question afin de savoir quelle est la DLL qui pose problème ?

Merci d'avance,

Corinne

4 réponses

1 2
Avatar
Jacques93
Bonjour Rinette Tahiti,
Rinette Tahiti a écrit :
Bonjour Jacques,

J'ai essayé d'appliquer le code que tu m'avais donné. Je l'ai d'abord essayé
sur un Pc avec lequel l'application fonctionne pour voir ce que cela donnait,
puis nous l'avons appliqué sur le PC en erreur. Le problème avec le PC en
erreur c'est qu'il ne me donne pas le nom des bibliothèques qui manquent !!
Lorqu'une référence est manquante j'ai un blanc à la place du nom !! Par
déduction avec le Pc qui fonctionne je peux en déduire les bibliothèques qui
manquent mais, une fois de plus, je suis coincée car je peux peux pas accéder
aux références dans VisualBasic et donc je ne peux pas refaire les liens avec
les bibliothèques.

Comment accéder à ces maudites références ?




Juste pour information, bien que cela ne règle pas le problème, on peut
remonter au fichier posant problème à partir du GUID : Il pointe sur le
TypeLib de la référence dans :

HKCRTypeLib{GUID}MajVersion.MinVersionnWin32

Par exemple pour Excel 2003 :

HKCRTypeLib{00020813-0000-0000-C000-000000000046}1.51Win32

Valeur par défaut :

C:Program FilesMicrosoft OfficeOFFICE11EXCEL.EXE

Le code qui suit fait cette manip.

NB : Les numéros de version Majeure et Mineure de la référence sont
renvoyés en décimal par Ref.Major et Ref.Minor, par contre dans le
registre, elle sont en Hexadécimal, Il faut donc les convertir, mais
sans utiliser la fonction Hex, sous peine de planter comme avec Left,
Right, etc...
' --------------------------------------------------------

Private Sub CheckRef()
Dim Ref As Reference
Dim Ver As String, TliName As String
Dim wsh As Object
Dim i As Integer

Set wsh = CreateObject("WScript.Shell")

On Error Resume Next
For Each Ref In References
Ver = Dec2Hex(Ref.Major) & "." & Dec2Hex(Ref.Minor)
i = 0
Do
TliName = wsh.RegRead("HKCRTypelib" & Ref.Guid & "" & _
Ver & "" & i & "Win32")
i = i + 1
Loop While Len(TliName) = 0
If Ref.IsBroken Then
MsgBox "??????" & vbCrLf & Ref.Guid & vbCrLf & _
"Version : " & Ver & vbCrLf & _
"Manquant : " & Ref.IsBroken & vbCrLf & _
"Typelib : " & TliName
Else
MsgBox Ref.Name & vbCrLf & Ref.Guid & vbCrLf & _
"Version : " & Ver & vbCrLf & _
"Manquant : " & Ref.IsBroken & vbCrLf & _
"Typelib : " & TliName
End If
Next
End Sub


Private Function Dec2Hex(Nb As Integer) As String
Dim s As String

Do
If Nb Mod 16 < 10 Then
s = Nb Mod 16 & s
Else
Select Case Nb Mod 16
Case 10
s = "A" & s
Case 11
s = "B" & s
Case 12
s = "C" & s
Case 13
s = "D" & s
Case 14
s = "E" & s
Case 15
s = "F" & s
End Select
End If
Nb = Int(Nb / 16)
Loop Until Nb = 1 Or Nb = 0
If Nb = 1 Then s = Nb & s
Dec2Hex = s
End Function
' --------------------------------------------------------

Si je ne me trompe tu utilises une version Access 2000, je crois que tu
ne peux donc pas ajouter de référence de manière dynamique avec :

Reference.AddFromGuid

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbaac11/html/acmthCreateFromGUID_HV05186716.asp

Le problème est donc bien d'activer le choix 'Références...' dans VBA ?
Peux tu quand même indiquer la/les référence(s) posant problèmes ?
Cordialement,

Jacques.
Avatar
Jacques93
Bonjour Rinette Tahiti,
Rinette Tahiti a écrit :
Bonjour Jacques,

J'ai essayé d'appliquer le code que tu m'avais donné. Je l'ai d'abord essayé
sur un Pc avec lequel l'application fonctionne pour voir ce que cela donnait,
puis nous l'avons appliqué sur le PC en erreur. Le problème avec le PC en
erreur c'est qu'il ne me donne pas le nom des bibliothèques qui manquent !!
Lorqu'une référence est manquante j'ai un blanc à la place du nom !! Par
déduction avec le Pc qui fonctionne je peux en déduire les bibliothèques qui
manquent mais, une fois de plus, je suis coincée car je peux peux pas accéder
aux références dans VisualBasic et donc je ne peux pas refaire les liens avec
les bibliothèques.




Question toute bête : lorsque tu as le message 'projet ou bibliothèque
introuvable' et que tu te retrouve sur la ligne de code ou se trouve
l'instruction Left, arrêtes tu le code (Exécution => Réinitialiser)
avant d'aller dans Outils => Références... ?

Tant que le code est 'actif' en pas à pas ou en pause, les références ne
sont pas accessibles (grisées).

--
Cordialement,

Jacques.
Avatar
Rinette Tahiti
Bonjour Jacques,

C'était en effet la question bête que j'avais oublié de poser !! Mon
utilisateur étant dans les îles je fais du dépannage par téléphone, ce qui
n'est pas toujours évident. En désespoir de cause, l'utilisateur est venu à
Tahiti avec son ordinateur et j'ai pu tout de suite accéder aux références en
arrêtant l'éxécution, ce que lui ne faisait pas. J'ai donc pu simplement
refaire les liens avec les bibliothèques manquantes.

Je te remercie en tous cas de t'être penché sur mon problème et de m'avoir
aidé à trouver la solution.

Merci encore et bonne journée,

Corinne

"Jacques93" a écrit :

Bonjour Rinette Tahiti,

Question toute bête : lorsque tu as le message 'projet ou bibliothèque
introuvable' et que tu te retrouve sur la ligne de code ou se trouve
l'instruction Left, arrêtes tu le code (Exécution => Réinitialiser)
avant d'aller dans Outils => Références... ?

Tant que le code est 'actif' en pas à pas ou en pause, les références ne
sont pas accessibles (grisées).

--
Cordialement,

Jacques.



Avatar
Jacques93
Bonjour Rinette Tahiti,
Rinette Tahiti a écrit :
Bonjour Jacques,

C'était en effet la question bête que j'avais oublié de poser !! Mon
utilisateur étant dans les îles je fais du dépannage par téléphone, ce qui
n'est pas toujours évident. En désespoir de cause, l'utilisateur est venu à
Tahiti avec son ordinateur



Euh... tout frais payé ? Même si on est en métropole.. je ne vais pas
tarder à avoir un souci, me semble t-il ... ;-)

et j'ai pu tout de suite accéder aux références en
arrêtant l'éxécution, ce que lui ne faisait pas. J'ai donc pu simplement
refaire les liens avec les bibliothèques manquantes.



Donc mystère résolu,

Je te remercie en tous cas de t'être penché sur mon problème et de m'avoir
aidé à trouver la solution.

Merci encore et bonne journée,




De même, et merci du retour :-)

--
Cordialement,

Jacques.
1 2