Creer une Sous-Collection dans une DLL ActiveX

Résolu
cs_andrebernard Messages postés 406 Date d'inscription lundi 9 juin 2003 Statut Membre Dernière intervention 4 septembre 2013 - 6 avril 2011 à 18:45
NHenry Messages postés 15039 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 7 février 2023 - 8 avril 2011 à 20:08
Bonjour à tous

Grace au simple mais non moins excelent exemple de Max12 EXEMPLE DE DLL ET EXE
J'ai à peu pres compris comment faire.

Mais j'ai néanmoins une question.

Dans son exemple Max12 créé un module de classe "ClsStart.cls" dans lequel il ecrit
Public Function Coucou()
MsgBox "coucou"
End Function

Il compile dans une DLL nommée "DLL_TEST.dll"

Pour appeller cette fonction il ecrit
Set DLLTest = CreateObject("DLL_TEST.ClsStart")

Donc CreateObject(NomDeLaDLL.NomDeLaClasse)
Puis une fois l'objet DLLTest créé, il appelle la fonction comme ceci :
DLLTest.coucou

Ca marche tres bien
Mais si je voulais creer une sous collection, du style :
DLLTest.coucou.bonjour

Comment faut il que je m'y prenne ??

Bonne journée

19 réponses

NHenry Messages postés 15039 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 7 février 2023 156
7 avril 2011 à 22:44
Et si tu ajoutes le Set à cette ligne ?
RetourneClasse = MonAttributClasse2

Set RetourneClasse = MonAttributClasse2

ça produit toujours la même erreur ?

Mon site
3
NHenry Messages postés 15039 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 7 février 2023 156
6 avril 2011 à 19:23
Bonjour,

Il faut que
DLLTest.coucou
Soit de type objet et que cet objet possède un membre qui s'appelle
bonjour

Mon site
0
cs_andrebernard Messages postés 406 Date d'inscription lundi 9 juin 2003 Statut Membre Dernière intervention 4 septembre 2013 1
7 avril 2011 à 09:54
Bonjour NHENRY,

D'accord mais concrètement, comment je fait pour créer un objet ??
La classe "ClsStart" c'est un objet ???
Il faut que je créé des Classes, les unes après les autres, et que je les appellent en les imbriquant, c'est ça ???

Si tu connaissais un petit lien ou y'a un exemple tout simple, car c'est ce que je comprend le mieux
C'est vrai que ça m'éclairerait bien plus que les mots.
Au moins avec l'exemple de Max12 tout simple, j'ai compris en 5 minutes, et tu peut me croire, c'est un exploit pour moi
Il me faudrait le même exemple, mais avec une arborescence de collections mais qui fait pas "Whatmilles" lignes, car parfois je trouve des codes tellement complet que je comprend pas mieux
0
NHenry Messages postés 15039 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 7 février 2023 156
7 avril 2011 à 13:09
Bonjour,

Classe 1 :

Public Function RetourneClasse as Classe2
RetourneClasse=MonAttributClasse2
End Function


Classe 2 :

Public Sub AfficheMessageBox()
MsgBox "ça marche"
End Sub


Ensuite :
MonObjetClasse1.RetourneClasse.AfficheMessageBox

Mon site
0

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

Posez votre question
cs_andrebernard Messages postés 406 Date d'inscription lundi 9 juin 2003 Statut Membre Dernière intervention 4 septembre 2013 1
7 avril 2011 à 13:42
Merci NHENRY

Bon bah l'exemple que tu m'as donné doit être trop simple
J'ai pas compris ce qu'était "MonAttributClasse2 "

J'ai commis ça....mais ça marche pas

Private Sub Command1_Click()
    Dim MonObjetClasse1 As Object
    Set MonObjetClasse1 = CreateObject("DLL_TEST.Classe1")
    MonObjetClasse1.RetourneClasse.AfficheMessageBox
    Set MonObjetClasse1 = Nothing
End Sub


Classe1.cls
Public Function RetourneClasse() As Classe2
 RetourneClasse = AfficheMessageBox
End Function


Classe2.cls
Public Sub AfficheMessageBox()
 MsgBox "ça marche"
End Sub
0
NHenry Messages postés 15039 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 7 février 2023 156
7 avril 2011 à 18:59
Bonjour,

Tu n'a pas compris :
Public Function RetourneClasse as Classe2
RetourneClasse=MonAttributClasse2
End Function

n'est pas :

Public Function RetourneClasse() As Classe2
RetourneClasse = AfficheMessageBox
End Function

MonAttributClasse2 est une variable objet instanciée de type Classe2

Mon site
0
cs_andrebernard Messages postés 406 Date d'inscription lundi 9 juin 2003 Statut Membre Dernière intervention 4 septembre 2013 1
7 avril 2011 à 20:02
MonAttributClasse2 est une variable objet instanciée de type Classe2

Pas mieux....ça veut dire quoi ça en bon français
0
NHenry Messages postés 15039 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 7 février 2023 156
7 avril 2011 à 20:24
Bonjour,

Dans Classe 1 :

Private MonAttributClasse2 As Classe2 =new Classe2

ou un dérivé.

Mon site
0
cs_andrebernard Messages postés 406 Date d'inscription lundi 9 juin 2003 Statut Membre Dernière intervention 4 septembre 2013 1
7 avril 2011 à 20:40
Bon, j'ai pas de chance ce soir.
Alors maintenant j'ai un message "Variable non definie" a l'appel de
 MonObjetClasse1.RetourneClasse.AfficheMessageBox


Voici tous le code:

Private Sub Command1_Click()

    Dim MonObjetClasse1 As Object
    Set MonObjetClasse1 = CreateObject("DLL_TEST.Classe1")
    MonObjetClasse1.RetourneClasse.AfficheMessageBox
    Set MonObjetClasse1 = Nothing
    
End Sub


Classe1.cls
Private MonAttributClasse2 As Classe2

Public Function RetourneClasse() As Classe2
 RetourneClasse = MonAttributClasse2
End Function


Classe2.cls
Public Sub AfficheMessageBox()
 MsgBox "ça marche"
End Sub
0
NHenry Messages postés 15039 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 7 février 2023 156
7 avril 2011 à 20:50
Bonjour,

Sur quelle ligne ?
Sinon, où est instancié MonAttributClasse2 ?

Mon site
0
cs_andrebernard Messages postés 406 Date d'inscription lundi 9 juin 2003 Statut Membre Dernière intervention 4 septembre 2013 1
7 avril 2011 à 20:58
Sur quelle ligne ?
J'ai un message "Variable non definie" a l'appel de "MonObjetClasse1.RetourneClasse.AfficheMessageBox"

Sinon, où est instancié MonAttributClasse2 ?
Je sais pas...en fait j'sais pas ce que ça veut dire instancier

Moi, j'ai écrit tout ce que je viens de te mettre au dessus
Tu m'as dit de rajouter "Private MonAttributClasse2 As Classe2" dans classe1 alors c'est ce que j'ai fait.
J'ai Mis en référence dans l'exe la DLL "Test_DLL.dll" et c'est tout ce que j'ai fait.
0
NHenry Messages postés 15039 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 7 février 2023 156
7 avril 2011 à 21:03
Bonjour,

Tu as oublié le "New" de la classe2 ...

Mon site
0
cs_andrebernard Messages postés 406 Date d'inscription lundi 9 juin 2003 Statut Membre Dernière intervention 4 septembre 2013 1
7 avril 2011 à 21:12
Oui, parce que ça me donnait une erreur quand je tapait la ligne que tu m'avais donné, alors j'ai enlevé le NEW
Private MonAttributClasse2 As Classe2 =new Classe2


Donc maintenant j'ai tout comme avant mais j'ai changé la ligne
Private MonAttributClasse2 As Classe2

par
Private MonAttributClasse2 As New Classe2


Et ça marche pas mieux
0
NHenry Messages postés 15039 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 7 février 2023 156
7 avril 2011 à 21:19
Bonjour,

As-tu vérifier la valeur des différentes expressions ?
MonObjetClasse1
MonObjetClasse1.RetourneClasse
Pour voir si tout va bien.
Ensuite, essayes dans la fenêtre de débogage (Ctrl+G).


Mon site
0
cs_andrebernard Messages postés 406 Date d'inscription lundi 9 juin 2003 Statut Membre Dernière intervention 4 septembre 2013 1
7 avril 2011 à 22:17
Bah quand je fais dans CTRL+G :

? MonObjetClasse1
? MonObjetClasse1.RetourneClasse

Il me repond que l'objet ne gere pas cette propriete ou cette methode
C'est pas bon signe a mon avis
0
NHenry Messages postés 15039 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 7 février 2023 156
7 avril 2011 à 22:26
Bonjour,

Tu peux remettre tout ton code, stp, histoire de bien se comprendre ?

Mon site
0
cs_andrebernard Messages postés 406 Date d'inscription lundi 9 juin 2003 Statut Membre Dernière intervention 4 septembre 2013 1
7 avril 2011 à 22:33
0
cs_andrebernard Messages postés 406 Date d'inscription lundi 9 juin 2003 Statut Membre Dernière intervention 4 septembre 2013 1
8 avril 2011 à 15:10
T'es trop fort NHenry..cette fois ça marche

J'ai mis un msgbox dans chaque classe, et je vois les deux.

Je te remercie mille fois de ta patience et de ta competence

Bonne journée
0
NHenry Messages postés 15039 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 7 février 2023 156
8 avril 2011 à 20:08
Bonjour,

Merci, de rien, on est aussi là pour ça :)

Mon site
0
Rejoignez-nous