Plantage d'excel à cause d'un appel DLL en vba

alpha35

XLDnaute Nouveau
Bonjour,

Je rencontre un problème difficile sous excel 2003/windows XP :
Je fais un appel à une fonction d'une dll dans une subroutine vba.
J'utilise donc la déclaration Private Declare Function maFonction Lib "c:\madll.dll" dans l'entête du module vba.
Lorsque j'appelle ma subroutine vba, tout marche parfaitement et excel me rend la main.
Le seul hic, c'est que lorsque je ferme le classeur ou Excel, j'ai un message Microsoft Office Excel a rencontré un problème et doit être fermé. Nous vous prions de nous excuser blablabla...:

Signature de l'erreur :
AppName: excel.exe AppVer: 11.0.6560.0 AppStamp:4296b6f2
ModName: ntdll.dll ModVer: 5.1.2600.2180 ModStamp:41109627
fDebug: 0 Offset: 0000eae0


Cette erreur arrive aussi de manière aléatoire avant de fermer le classeur.

Tout d'abord, j'ai cru que c'était un pb dans la dll, mais ce n'est pas le cas : si je fait un appel à GetSystemMetrics dans user32.dll, c'est pareil : ci-joint le source du vba qui me pose problème (c:\u32.dll est le même fichier que c:\windows\system32\user32.dll".

Private Declare Function GetSystemMetrics Lib "c:\u32.dll" (ByVal nIndex As Long) As Long
Sub AfficherResolution()
Largeur = GetSystemMetrics(0)
Hauteur = GetSystemMetrics(1)
MsgBox "La résolution de votre écran est de " & Largeur & " par " & Hauteur
Exit Sub
End Sub


Petits points supplémentaires :
- lorsque je vire c:\ dans c:\user32.dll, tout se passe bien.
- quand je mets u32.dll dans c:\windows\system32 et que je retire le c:\ devant u32.dll dans le source, le pb est tjs là.
- après lancement de la subroutine (qui appelle c:\u32.dll) et avant fermeture d'excel, le fichier c:\u32.dll ne peut pas être supprimé (accès refusé) : il est tjs ouvert.

Est-ce que quelqu'un a une idée ?

Merci pour votre aide.

Ma config : excel 2003 sp2, windows XP Pro SP2.
 

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 319
Membres
103 177
dernier inscrit
grizly