ludovicchudeau
Messages postés5Date d'inscriptiondimanche 5 octobre 2003StatutMembreDernière intervention17 juin 2005
-
10 juin 2005 à 13:48
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDerniè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.
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 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)
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 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)
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 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).
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 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.
Vous n’avez pas trouvé la réponse que vous recherchez ?