OVH Cloud OVH Cloud

récursivité ... dans un module de classe

4 réponses
Avatar
Bismark Prods
hello,

Selon vous est-il possible d'utiliser un module de classe avec lui meme ?

Merci

4 réponses

Avatar
François Picalausa
Bonjour/soir,

A priori, oui.
Ce code fonctionne bien:

'Dans une feuille Form1
Option Explicit

Private Sub Command1_Click()
Dim objMyClass As Class1
Set objMyClass = New Class1

objMyClass.Test False

Set objMyClass = Nothing
End Sub

'Dans un module de classe Class1
Option Explicit

Sub Test(StopRec As Boolean)
If StopRec = False Then
Dim myClass As Class1
Set myClass = New Class1

myClass.Test True

Set myClass = Nothing
Else
Debug.Print "Test"
End If
End Sub

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com


Bismark Prods wrote:
hello,

Selon vous est-il possible d'utiliser un module de classe avec lui
meme ?

Merci


Avatar
ThunderMusic
Bien sur, sinon, comment faire une structure en arbre? En fait, j'en ai fait
plusieurs fois et ça fonctionne à merveille.

"Bismark Prods" wrote in message
news:eRtp%
hello,

Selon vous est-il possible d'utiliser un module de classe avec lui meme ?

Merci





Avatar
Bismark Prods
Merci beaucoup à vous deux ! cela me sera d'une grande utilité...


"ThunderMusic" a écrit dans le message de
news:
Bien sur, sinon, comment faire une structure en arbre? En fait, j'en ai


fait
plusieurs fois et ça fonctionne à merveille.

"Bismark Prods" wrote in message
news:eRtp%
> hello,
>
> Selon vous est-il possible d'utiliser un module de classe avec lui meme


?
>
> Merci
>
>
>




Avatar
Zoury
Salut tous le monde!!! :O)

: Bien sur, sinon, comment faire une structure en arbre? En fait, j'en ai fait
: plusieurs fois et ça fonctionne à merveille.

C'est aussi très utile pour implementer un fonction Clone()

Exemple :
'***
' Module1
Option Explicit

Private Sub Main()

Dim p As CPersonne
Dim p2 As CPersonne

Set p = New CPersonne
p.DateNaissance = Now
p.Nom = "Stapelton"
p.Prenom = "Grabbett"

Set p2 = p.Clone
Debug.Print p2.DateNaissance
Debug.Print p2.Nom
Debug.Print p2.Prenom

End Sub

'---

'CPersonne
Option Explicit

Private m_sNom As String
Private m_sPrenom As String
Private m_dtNaissance As Date
Private m_lID As Long ' Read-Only -> clé de la BD

Public Property Get Nom() As String
Nom = m_sNom
End Property

Public Property Let Nom(ByRef sNom As String)
m_sNom = sNom
End Property

Public Property Get Prenom() As String
Prenom = m_sPrenom
End Property

Public Property Let Prenom(ByRef sPrenom As String)
m_sPrenom = sPrenom
End Property

Public Property Get DateNaissance() As Date
DateNaissance = m_dtNaissance
End Property

Public Property Let DateNaissance(ByRef dtNaissance As Date)
m_dtNaissance = dtNaissance
End Property

Friend Property Get ID() As Long
ID = m_lID
End Property

Friend Property Let ID(ByRef lID As Long)
m_lID = lID
End Property

Public Function Clone() As CPersonne

Dim p As CPersonne
Set p = New CPersonne

With p
.DateNaissance = m_dtNaissance
.ID = m_lID
.Nom = m_sNom
.Prenom = m_sPrenom
End With

Set Clone = p

End Function

Private Sub Class_Initialize()
m_lID = 32 ' supposons que la clé vaut 32
End Sub
'***


--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/