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

VBA + Collections

2 réponses
Avatar
Patrick
Bonjour,

J'ai créé une classe qui contient une collection d'une autre classe. Comment
puis-je faire pour que la sous-classe puisse accéder à certaines propriétés
de sa classe-mère sans lui transmettre comme paramètres ou sans utiliser des
variables publiques ?

Merci.

--
Patrick

2 réponses

Avatar
tissot.emmanuel
Bonjour,

Lorsque tu as besoin d'une nouvelle instance de la classe fille au lieu de
l'instancier directement tu passe par la méthode Add de la classe mère.
Au besoin tu peux ajouter des paramètres à la méthode Add et t'en servir
pour initialiser les propriétés de la classe fille.

Dans un module standard:

Dim x As NomClasseMere, z As NomClasseFille

Sub Test()
Set x = New NomClasseMere
Set z = x.Add
MsgBox z.NomGamin
MsgBox z.Parent.NbGamins
End Sub

Dans la classe mere:

Dim LesGamins As Collection

Private Sub Class_Initialize()
Set LesGamins = New Collection
End Sub

Public Function Add() As NomClasseFille
Dim Gamin As NomClasseFille
Set Gamin = New NomClasseFille
LesGamins.Add Gamin
Set Gamin.Parent = Me
Set Add = Gamin
End Function

Property Get NbGamins() As Long
NbGamins = LesGamins.Count
End Property

Dans la classe fille:

Dim clsNomGamin As String, clsParent As NomClasseMere

Private Sub Class_Initialize()
clsNomGamin = "Raoul ou Barnabé?"
End Sub

Property Get NomGamin() As String
NomGamin = clsNomGamin
End Property
Property Let NomGamin(Bapteme As String)
clsNomGamin = Bapteme
End Property

Property Set Parent(Maman As NomClasseMere)
Set clsParent = Maman
End Property
Property Get Parent() As NomClasseMere
Set Parent = clsParent
End Property


Cordialement,

Manu/
"Patrick" a écrit dans le message de
news:
Bonjour,

J'ai créé une classe qui contient une collection d'une autre classe.
Comment
puis-je faire pour que la sous-classe puisse accéder à certaines
propriétés
de sa classe-mère sans lui transmettre comme paramètres ou sans utiliser
des
variables publiques ?

Merci.

--
Patrick


Avatar
Patrick
Merci beaucoup pour toutes ces explications. C'est exactement ce dont j'avais
besoin.

--
Patrick


"tissot.emmanuel" wrote:

Bonjour,

Lorsque tu as besoin d'une nouvelle instance de la classe fille au lieu de
l'instancier directement tu passe par la méthode Add de la classe mère.
Au besoin tu peux ajouter des paramètres à la méthode Add et t'en servir
pour initialiser les propriétés de la classe fille.

Dans un module standard:

Dim x As NomClasseMere, z As NomClasseFille

Sub Test()
Set x = New NomClasseMere
Set z = x.Add
MsgBox z.NomGamin
MsgBox z.Parent.NbGamins
End Sub

Dans la classe mere:

Dim LesGamins As Collection

Private Sub Class_Initialize()
Set LesGamins = New Collection
End Sub

Public Function Add() As NomClasseFille
Dim Gamin As NomClasseFille
Set Gamin = New NomClasseFille
LesGamins.Add Gamin
Set Gamin.Parent = Me
Set Add = Gamin
End Function

Property Get NbGamins() As Long
NbGamins = LesGamins.Count
End Property

Dans la classe fille:

Dim clsNomGamin As String, clsParent As NomClasseMere

Private Sub Class_Initialize()
clsNomGamin = "Raoul ou Barnabé?"
End Sub

Property Get NomGamin() As String
NomGamin = clsNomGamin
End Property
Property Let NomGamin(Bapteme As String)
clsNomGamin = Bapteme
End Property

Property Set Parent(Maman As NomClasseMere)
Set clsParent = Maman
End Property
Property Get Parent() As NomClasseMere
Set Parent = clsParent
End Property


Cordialement,

Manu/
"Patrick" a écrit dans le message de
news:
Bonjour,

J'ai créé une classe qui contient une collection d'une autre classe.
Comment
puis-je faire pour que la sous-classe puisse accéder à certaines
propriétés
de sa classe-mère sans lui transmettre comme paramètres ou sans utiliser
des
variables publiques ?

Merci.

--
Patrick