Probleme d'appel d'un "Form" DLL.NET depuis VBA

Résolu
cs_Pijay Messages postés 21 Date d'inscription mardi 6 mars 2007 Statut Membre Dernière intervention 12 juillet 2007 - 9 mars 2007 à 12:47
cs_Pijay Messages postés 21 Date d'inscription mardi 6 mars 2007 Statut Membre Dernière intervention 12 juillet 2007 - 31 mai 2007 à 18:39
Bonjour a tous,

Mon probleme est le suivant:

J'ai developpé une DLL .NET (bibliothèque de classe) dans laquelle se présente une méthode (pour concatener deux chaines) et un composant "Form" (IHM).

Je souhaite appeler les composants de ma DLL depuis VBA (Excel en particulier).

J'ai référencé ma DLL (ou plutot le fichier *.tlb) correctement et ma méthode de concatenation fonctionne tres bien.

En ce qui concerne ma Form, lorque je l'appel tout se passe bien. Ma feuille contient un bouton (cmd_IHM) qui appel ma form de la DLL au moment du clique.

Voici de quelle maniere j'instancie ma Form :

Private Sub cmd_IHM_Click()
On Error GoTo ErrHandler





    Dim my_form As Object
    Set my_form = CreateObject("Lib_2003.Form1")
    
    my_form.Visible = True








Exit Sub
ErrHandler:
    MsgBox Err.Number & " : " & Err.Description
End Sub





LE PROBLEME, se présente lorsque je la ferme. En effet, que ca soit avec la croix de fermeture ou à partir d'un bouton (implemeté avec Dispose() ou Close()) un message d'avertissement intervient :
                  

Lorque je clique "Continue", un message d'erreur s'affiche:
                  

Est-ce que quelqu'un aurait une idée au sujet de cette erreur. En effet mon application Excel "plante" et se ferme  a la suite de ce messages.... et je comprend pas poukoi? Est-ce due a conflit lors de la destruction du composant Form?

Informations supplementaires: Ma DLL à été développé en VB.NET (Visual Studio 2003)

Merci d'avance. Pijay.

3 réponses

cs_Pijay Messages postés 21 Date d'inscription mardi 6 mars 2007 Statut Membre Dernière intervention 12 juillet 2007
31 mai 2007 à 18:39
J'ai trouvé d'ou vient le probleme, je pense que ca peut aider certain.

Quelques notions:
En effet, les composant .Net sont géré par le CAS(Code Acces Security). En fonction de la stratégie de sécurité, les composants .Net n'ont pas le meme statut en fonction de l'endroit ou ils se trouvent. Par exemple, une DLL.Net n'a pas les memes droits en local que sur l'Intranet d'une entreprise. En effet, par defaut la politique de sécurité du .Net considere les composants d'un intranet (ou d'internet) comme des composants à confiance partielle ("Partially Trust").

Ce qu'il faut savoir, c'est que implicitement les applications ou librairies .Net font appel à des composants installés en local comme mscorlib.dll (GAC ou System32/). Ces composant (mscorlib.dll ou mscoree.dll par exemple) exigent d'etre appelé par des composants de confiance totale ("Full Trust"). Ce qui n'est pas le cas d'un composant placé sur le réseau (Intranet ou Internet).

Pour déployé une librairie.Net sur un réseau (d'entreprise par exemple), il faut obligatoirement avoir les droits d'administration sur les machines clients pour modifier la politique de sécurité du .Net Framework (utilisation du .Net Configuration Tool > voir méthode sur le net, il y en a plein)

Si vous ne posseder pas les droits d'administration (mon cas), vous etes obligé d'installer votre compsant.Net (dll) en local (pour qu'il soit considéré comme un composant "Full Trust").

Revenons a mon probleme :
En effet le probleme intervient avec ma form car elle fait appel a des dll (mscorelib.dll entre autres) pour se fermer. Les controles .Net sont régis par les dll installé en local (c:/ par ex.) et appel différentes méthodes utilisé dans les form.Net (fermeture d'un interface dans mon cas). Dans mon cas cela génere bien une exception de sécurité (Securtiy Exception) car ma dll.Net ne possede pas les droits (elle n'est pas "Full Trust" quand elle est sur le réseau).

Le probleme ne se pose pas avec la méthode de concatenation car c'est une fonction simple, ne faisant intervenir aucune librairie exterieures.

Donc voila, un petit résumé de plusieurs jours de recherche. Je sais pas si ca peut aider quelqu'un, mais vu la difficulté que j'ai eu à trouver des informations concretes sur le déploiement de DLL.Net, je prefere laisser ce post.

Merci à tous. Bye.
3
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
9 mars 2007 à 13:24
Salut,


T'es le deuxième que je croise qui éssaie de faire mumuse avec du dotnet à partir du COM.


Ca a pas l'air vachement drôle.


Deux articles sur le problème : 1 et 2
Le trhead.


Bon courage.
0
cs_Pijay Messages postés 21 Date d'inscription mardi 6 mars 2007 Statut Membre Dernière intervention 12 juillet 2007
9 mars 2007 à 13:41
Je vais y jeter un oeil..... ou meme deux.....

Merci de ton aide.
0
Rejoignez-nous