Peut-on avoir un type personnalisé dans un module de classe ?

Valentin_Loupe

XLDnaute Occasionnel
Bonjour le forum,

Je souhaiterais savoir si il est possible sous VBA d'avoir des variables de type personnalisé au sein d'un module de classe ? L'idée serait donc d'avoir une classe reprenant différentes propriétés dont l'une serait un type personnalisé.

J'ai pensé à créer une classe de classe, ce que je réussis à faire mais ma classe principale contient une 30aine de propriétés dont seules 1 ou 2 sont à décomposer en 2 sous propriétés. C'est pour cela que le type me paraissait être une bonne solution...

Exemple, sous un module de classe :

Code:
Private Type A_MonTypePerso
VariableA As Byte
VariableB As Long
End Type

Property Let MonTypePerso(Valeurs as A_MonTypePerso)
A_MonTypePerso = Valeurs
End Property

Property Get MonTypePerso() as A_MonTypePerso
MonTypePerso = A_MonTypePerso
End Property

Merci par avance,

Valentin
 

Dranreb

XLDnaute Barbatruc
Re : Peut-on avoir un type personnalisé dans un module de classe ?

Bonjour.

Non, il fallait s'y attendre, le type perso doit être déclaré Public dans un module ordinaire.
De plus même à cette condition vous ne pourriez déclarer une telle variable comme membre Public d'un module de classe. Mais avec une paire de procédures Property pour attaquer une variable Private de ce type là, ça à l'air de passer. Mais je ne suis pas sûr que ce soit la solution à votre souci, que vous ne détaillez pas suffisamment pour que je le comprenne.
 
Dernière édition:

Valentin_Loupe

XLDnaute Occasionnel
Re : Peut-on avoir un type personnalisé dans un module de classe ?

Bonjour Dranreb, le forum,

Merci pour votre réponse. Je charge un classeur en PJ pour essayer d'être plus clair sur la demande.
En fait, sous le Module 1, lorsque le code est lancé, il s'arrête sur Stop.
A ce moment là, si on se rend dans les variables locales, j'aurais souhaité que l'on puisse voir :
- Sous la Classe "Classe" :
- La propriété "PropriétéStandard" et son homologue privée "P_PropriétéStandard".
- Le type MonTypePerso lui même pouvant être ouvert et contenir :
- La variable VariableA
- La variable VariableB

Du-coup, est-ce possible de faire quelque chose pour obtenir cela ?
Et sinon une autre question, le moyen le plus "professionnel" pour ce genre d'opération est-il la création de classes imbriquées ?

Merci encore,

Valentin
 

Pièces jointes

  • ClasseurTest.xlsm
    15.1 KB · Affichages: 46
  • ClasseurTest.xlsm
    15.1 KB · Affichages: 33
  • ClasseurTest.xlsm
    15.1 KB · Affichages: 46

Dranreb

XLDnaute Barbatruc
Re : Peut-on avoir un type personnalisé dans un module de classe ?

Personnellement j'aurais peut être fait comme ça :
VB:
Option Explicit

Public PropriétéStandard As Byte
Private MTP As A_MonTypePerso

Property Let MonTypePerso(Valeurs As A_MonTypePerso)
MTP = Valeurs
End Property

Property Get MonTypePerso() As A_MonTypePerso
MonTypePerso = MTP
End Property
Ou bien comme ça :
VB:
Option Explicit

Public PropriétéStandard As Byte
Private VarA As Byte, VarB As Long

Property Let MonTypePerso(Valeurs As A_MonTypePerso)
VarA = Valeurs.VariableA
VarB = Valeurs.VariableB
End Property

Property Get MonTypePerso() As A_MonTypePerso
MonTypePerso.VariableA = VarA
MonTypePerso.VariableB = VarB
End Property
 
Dernière édition:

Valentin_Loupe

XLDnaute Occasionnel
Re : Peut-on avoir un type personnalisé dans un module de classe ?

Bonjour Dranreb, le forum,

Merci pour ces détails.
Je vais regarder celà d'un peu plus près.
Il semble que ce ne soit pas fait pour fonctionner ainsi mais :
- soit on remplit une variable de type "A_MonTypePerso" entièrement et on l'envoie dans le module de classe via un seul Get/Let (et là les valeurs sont bien transmises, contrairement au code développé jusqu'ici)
- soit on définit n propriétés dans la classe que l'on a d'éléments dans le type personnalisé (que l'on alimente via n éléments Get/Let).

Merci encore,

Valentin
 

Dranreb

XLDnaute Barbatruc
Re : Peut-on avoir un type personnalisé dans un module de classe ?

Ah votre souci c'est d'initialiser vos type perso d'un coup par une liste de valeurs, ou de les récupérer ?
Pourquoi des méthodes classique à plusieurs paramètres n'iraient pas ?
 

Discussions similaires

Statistiques des forums

Discussions
312 503
Messages
2 089 059
Membres
104 014
dernier inscrit
Aurélie MONTEIL