DLL

ludovicchudeau Messages postés 5 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 17 juin 2005 - 10 juin 2005 à 13:48
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 - 20 juin 2005 à 16:47
J'ai créé un fichier DLL, qui contient un ensemble de fonctions développé en C#.

Je souhaite utiliser ces fonctions depuis un fichier Excel en utilisant VB.

Voilà le code que j'ai écris pour l'instant :

Shell "regsvr32 /s salesImport.dll"
Dim obj As Object
obj = CreateObject("SalesImport.SalesImport")

J'ai une erreur du type : erreure 429: Le composant ActiveX ne peut créer l'objet.

Un autre topic sur ce forum à traité du même sujet, mais je n'ai pas trouvé de solution mon problème.

Merci de vote aide, si vous pouvez me guider.

6 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
10 juin 2005 à 15:48
Salut
Je ne suis pas sûr que les DLL en C aient besoin d'être Registered.

Essaye cette technique (VB6) :
Dans le menu Projet, PRéférences, tu ajoutes ta DLL
Ensuite, dans la partie déclaration d'un module, tu déclares ta DLL :
Dim monObjet As New SalesImport
Quand tu veux utiliser un e de ces fonctions, il te suffit de faire : monObjet suivi d'un point et normalement, il doit te lister les fonctions et sub disponibles.
De plus, le fait d'avoir ajouté ta DLL aux préférences, les définitions de la DLL sont disponibles dans le visualisateur = touche F2 de l'IDE de VB6.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
14 juin 2005 à 17:19
Salut tout le monde.

Désolé, je n'ai pas VB à porté de main, je balance donc mes réponses un peu au hasard...

ludovicchudeau, première remarque sur ton bout de code: Je suis sûre à 95% que ton regsvr32 n'aura pas le temps de terminer son execution avant que ton application ne passe à la ligne suivante. (vb c'est lent, mais quand même). Bref, à mon avis, il est normal que la première fois que tu executes l'application sur un PC ne possédant pas la dll, ton prog plante car il n'aura pas le temps de l'installer.

Deuxième remarque, déclares ta variable objet public dans toutes ton application. (C'est sûrement pas obligé, mais si elle est private à ta procédure, je sais pas si ça marche).

Troisième remarque, es tu sûres que la dll contient la classe SalesImport.

Par contre, je suis pas d'accord avec jack. (Oups, t'es admin)

A ma connaissance, référencer n'a jamais permis de ne pas registrer.

Par contre je pense aussi que référencer les dlls est dans certains cas, (comme celui-ci), une très bonne idée. (Je ne référence pas mes dlls, car une dll recompilée fait crasher les application où elle était référencée)

Mon prof nous vire de la salle, désolé......
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
16 juin 2005 à 13:44
Je suis trops con. (ça doit être pour ça que je n'ai eu qu'une réponse de ma vie sur ce site. Au moins, là, je me répond a moi même)

Tu as oublié le set..........

set obj = CreateObject("SalesImport.SalesImport")

Je m'excuse de ne pas l'avoir vut tout de suite.

jake, si tu veux vérifier l'utilité de registrer...

1 Compile une dll (VB la registre automatiquement lors de la compilation)

2 Référence le et utilise le dans un executable que tu compiles.
(Pas obligé, mais bon....)

3 regsvr32 /U sur ta dll

4 Relance l'exe, et je suis quasi sûre qu'il plante.

Les entrées dans la base de regitre contiennent notemment le chemin d'accès à la dll. (en plus du CLSID du TypLib.....)

Je crois que Microsoft a basé la reconnaissance des fichiers partagés sur leurs numéros CLSID. (Ca permet a deux personnes de compiler des dlls de mêmes noms).

A plus
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
16 juin 2005 à 13:51
Je me répond encore. (Cool, ça me fait donc trois réponse sur ce site.)
Désolé (50ème), j'ai foiré la taille du texte. (La connerie ça ce soigne pas).

Que l'on ne me fasse pas dire ce que je n'ai pas dit : certaines dll n'ont pas besion d'être registré. En VB c'est obligatoir (Un gonz qui taquine essaye quand même, il en parle sur ce site).

C'est le cas des API bien sûre.

C'te fois je me réponds plus, et je vais me soigner.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ludovicchudeau Messages postés 5 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 17 juin 2005
16 juin 2005 à 14:39
Bon merci pour toute vos réponse.

J'ai réussi à régler le pb.

Je n'ai effectivement pas de Shell "regsvr32 /s salesImport.dll"

Voilà les commande que j'ai fait pour utiliser mon dll :

CD C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322
regasm /codebase "<chemin de salesImport.dll>\salesImport.dll" /tlb:salesImport.tlb

puis :
gacutil /i "<chemin de salesImport.dll>\salesImport.dll"

Voilà est ensuite j'ai pu l'utiliser.

Merci beaucouppour réponse.
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
20 juin 2005 à 16:47
Arf, tu me parles Chinois, mais je suis content si tu as trouvé.
0
Rejoignez-nous