Utiliser DLL C# en VBA

Reisors Messages postés 164 Statut Membre -  
ElementW Messages postés 5690 Statut Contributeur -
Bonjour,

Apres avoir écumé tous les liens google je m'en remet à vous

Je souhaite utiliser une DLL créé en C# dans ACCESS 2010

J'ai inscrit pour COM dans le projet C# , ajouté la référence de la DLL dans ACCESS

Problème : une erreur survient lors de la création de l'objet dans ACCESS
=> Un composant ActiveX ne peut pas créer d'objet

Je précise que je suis sur une plateforme 64bits

Merci de votre aide

3 réponses

  1. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Bonjour,
    Tu a inscrit ta dll dans le registre Windows ?
    A+
    0
  2. Reisors Messages postés 164 Statut Membre 14
     
    Bonjour,

    J'ai essayer :
    C:\Windows\SysWOW64\regsvr32.exe "C:\maDll.dll"
    ET
    regsvr32.exe "C:\maDll.dll"

    Mais j'ai une erreur :
    [..]à été chargé,mais le point d'entrée DllRegisterServeur est introuvable[...]
    0
  3. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Compris..
    Tu confond Dll genre API qui ont des points d'entrées mais qui ne peuvent être générée qu'en C, C++
    Celles qui sont faite à partir de C#, VB.6 etc.. doivent être ajoutée en entier.
    Sais pas comment expliquer ça mieux.
    Note que quand j'ai répondu j'avais un sérieux doute mais comme ont dit.. dans le doute abstient-toi. :-)
    Ta dll en C# n'est pas compatible avec Excel. Elle peu servir dans une appli en C#, Je fais des dll en VB6 et je m'en sert uniquement en VB6.
    A+

    0
    1. ElementW Messages postés 5690 Statut Contributeur 1 293
       
      VBA/VB6 n'est pas un langage .NET. Les DLL .NET ne peuvent être utilisées qu'avec un langage .NET, car elles définissent des points d'entrée en P/Invoke, et pas en exports C ou C++, donc on ne peut pas les utiliser en VBA/VB6. Une solution reste le C++.NET qui peut interfacer du C++ natif avec du C++.NET; mais il faut créer tous les bindings, association entre fonction native et managée .NET.
      0