Bonjour à tous !

Comme le sujet l'indique, je suis confronté à un problème de POO en VBA. Vous allez dire: mais pourquoi voudrai-je faire de la POO alors que le VBA n'est pas vraiment destiné à ça ? Et bien figurez vous que j'en ai besoin

Le soucis c'est que, dans mon module de classe, je déclare mes attributs en private et je les récupère grâce aux Proterty Let/Get.
Mais de base, elles sont publiques, donc dans n'importe quel module (classique) on peut venir modifier les champs de mon objet. Mais j'ai pas envie qu'un utilisateur puisse venir modifier ou accéder aux champs comme il le souhaite.

Du coup j'ai pensé à déclarer mes Proterty en private (pour qu'elles ne soient accessibles que dans le module de classe) et de créer mes propres fonctions qui permettent ou non d’accéder aux property.

Voici un exemple de code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 
'module de classe: voiture
 
Private couleur As String
Private marque As String
 
 
 
Private Property Let LetCouleur(pCouleur As String)
    couleur = LCase(pCouleur)
End Property
 
Private Property Let LetMarque(pMarque As String)
    marque = LCase(pMarque)
End Property
 
 
Private Property Get GetCouleur()
    GetCouleur = couleur
End Property
Private Property Get GetMarque()
    GetMarque = marque
End Property
 
' fonction que je veux definir pour pas que l'utilisateur fasse ce qu'il veut !
Public Function afficherVoiture() As String
    afficherVoiture = "marque: " & Me.GetMarque() & " / couleur: " & Me.GetCouleur
End Function

Là, dans l'exemple, je veux définir la manière donc l'utilisateur pour récupérer la valeur des attributs d'un objet voiture.
Mais en passant par Private Property, la fonction afficherVoiture n'a plus accès aux Property ! Alors qu'elle est dans le même module (de classe).
(PS: si je laisse Property en public ça marche, mais c'est aussi accessible dans n'importe quel autre module)

Savez-vous comment je peux faire pour déclarer mes Property en Private dans mon module de classe et CONTINUER d'y avoir accès en RESTANT dans le module de classe ?

Merci !
Slooby.