IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

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


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 9
    Par défaut Plantage d'excel à cause d'un appel DLL en vba
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Declare Function maFonction Lib "c:\u32.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".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    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.

  2. #2
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Dans un Module Standard
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Private Declare Function GetSystemMetrics Lib "user32.dll" (ByVal nIndex As Long) As Long
    Const SM_CXSCREEN = 0
    Const SM_CYSCREEN = 1
     
    Sub Tst
    Dim DefinitionX as long ,DefinitionY as long
    	DefinitionX = GetSystemMetrics(SM_CXSCREEN)
    	DefinitionY = GetSystemMetrics(SM_CYSCREEN)
    	Debug.print DefinitionX,DefinitionY
    End Sub

Discussions similaires

  1. appel de dll depuis VBA
    Par darkman10 dans le forum Windows
    Réponses: 3
    Dernier message: 10/05/2006, 15h03
  2. [WinService][C#] Comment appeler dll C/C++ ?
    Par avrama dans le forum Windows Forms
    Réponses: 5
    Dernier message: 27/01/2006, 12h05
  3. Appel Dll Ecrite en C++
    Par scelines dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 26/07/2005, 11h58
  4. appel DLL C++ en Delphi (pb avec type)
    Par fkerbourch dans le forum Langage
    Réponses: 7
    Dernier message: 11/07/2005, 17h31
  5. [MFC]ActiveX + appel DLL
    Par Xeron dans le forum MFC
    Réponses: 4
    Dernier message: 22/06/2005, 16h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo