Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Peut etre hs: XL-VBA-VC++, "tuer un objet"

3 réponses
Avatar
Antoine
Bonjour,

peut etre que je ne poste pas sur le bon forum mais comme mon probleme est
relatif a excel je me permets de vous en faire part.

J'ai cree une dll (toto.dll par ex)en VC++ et je l'ai referencee sous VBA
avec Outils\References.
J'ai acces aux functions de cette dll sans probleme. J'ai un objet COM dont
je peux en creer une intsance par ex :
Dim MonObjet as New TotoObjet

Mon probleme est le suivant : il me semble que cette instance n'est pas
"tuee" a la fin de ma macro-fonction. J'ai bien essaye un truc du genre set
MonObjet = Nothing au debut et a la fin de mon code mais rien n'y fait!

Connaissez-vous un moyen de tuer cet objet depuis VBA-Excel?

Merci d'avance,

Antoine

3 réponses

Avatar
MiB
Bonjour,

Je ne suis pas expert en VC++, mais j'ai récamment
suivi un cours à l'université Laval et je puis vous
dire ceci :

L'instance ainsi créé, devrait être détruit par
le destructeur de la classe de l'objet.

Cordialement

Michel
-----Message d'origine-----
Bonjour,

peut etre que je ne poste pas sur le bon forum mais comme
mon probleme est

relatif a excel je me permets de vous en faire part.

J'ai cree une dll (toto.dll par ex)en VC++ et je l'ai
referencee sous VBA

avec OutilsReferences.
J'ai acces aux functions de cette dll sans probleme. J'ai
un objet COM dont

je peux en creer une intsance par ex :
Dim MonObjet as New TotoObjet

Mon probleme est le suivant : il me semble que cette
instance n'est pas

"tuee" a la fin de ma macro-fonction. J'ai bien essaye un
truc du genre set

MonObjet = Nothing au debut et a la fin de mon code mais
rien n'y fait!


Connaissez-vous un moyen de tuer cet objet depuis VBA-
Excel?


Merci d'avance,

Antoine




.



Avatar
Antoine
Certes mais il y a quelques nuances quand on travaille avec ATL COM sur des
pointeurs de classe (ce qui est mon cas ici)... je dis ca mais j'en connais
pas enormement non plus :(

j'utilise set MonObjet= Nothing pour liberer la memoire...et MonObjet n'est
efface pire il conserve les memes donnees...


"MiB" wrote in message
news:18ba01c37307$66bdb5a0$
Bonjour,

Je ne suis pas expert en VC++, mais j'ai récamment
suivi un cours à l'université Laval et je puis vous
dire ceci :

L'instance ainsi créé, devrait être détruit par
le destructeur de la classe de l'objet.

Cordialement

Michel
-----Message d'origine-----
Bonjour,

peut etre que je ne poste pas sur le bon forum mais comme
mon probleme est

relatif a excel je me permets de vous en faire part.

J'ai cree une dll (toto.dll par ex)en VC++ et je l'ai
referencee sous VBA

avec OutilsReferences.
J'ai acces aux functions de cette dll sans probleme. J'ai
un objet COM dont

je peux en creer une intsance par ex :
Dim MonObjet as New TotoObjet

Mon probleme est le suivant : il me semble que cette
instance n'est pas

"tuee" a la fin de ma macro-fonction. J'ai bien essaye un
truc du genre set

MonObjet = Nothing au debut et a la fin de mon code mais
rien n'y fait!


Connaissez-vous un moyen de tuer cet objet depuis VBA-
Excel?


Merci d'avance,

Antoine




.



Avatar
Antonio
Salut,

Je t'invite à regarder du coté de COleDispatchDriver,
la méthode ReleaseDispatch a appeler dans le destructeur
de ton objt COM. En fait, peut être que VBA fait bien
son travail (appel du destructeur effectué) mais pas ton
code C++ qui ne libère rien du tout.

A+


-----Message d'origine-----
Bonjour,

peut etre que je ne poste pas sur le bon forum mais
comme mon probleme est

relatif a excel je me permets de vous en faire part.

J'ai cree une dll (toto.dll par ex)en VC++ et je l'ai
referencee sous VBA

avec OutilsReferences.
J'ai acces aux functions de cette dll sans probleme.
J'ai un objet COM dont

je peux en creer une intsance par ex :
Dim MonObjet as New TotoObjet

Mon probleme est le suivant : il me semble que cette
instance n'est pas

"tuee" a la fin de ma macro-fonction. J'ai bien essaye
un truc du genre set

MonObjet = Nothing au debut et a la fin de mon code mais
rien n'y fait!


Connaissez-vous un moyen de tuer cet objet depuis VBA-
Excel?


Merci d'avance,

Antoine




.