Type perso dans module de classe [Résolu]

Signaler
Messages postés
1812
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
26 octobre 2010
-
Messages postés
1812
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
26 octobre 2010
-
Violent Ken

Salut, et désolé de demander de l'aide si souvent.... On va me traiter de flooder ^^

Enfin bon, j'ai une petite question : comment puis-je utiliser un type perso dans un module de classe ?
Mon but est de renvoyer grâce à Byref une variable d'un type perso.

En gros, j'aimerais faire çà :

Option Explicit


Public Type TYPE_PERSO
    ELEMENT1 As Long
End Type


Public Sub FONCTION_PUBLIQUE(ByRef VARIABLE As TYPE_PERSO)
    'sub qui renverra VARIABLE
End Sub

mais le type en public ne convient pas... tout comme le type perso dans une sub publique ?

Merci, @+

7 réponses

Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
42
salut,
pas de type public dans un module de classe (sauf projet activex il me semble)

solution : passer par une classe

'= -=-=-=-=-
' Form1.frm
'=-=-=-=-=-
'
Option Explicit 
Private cClass As New MaClasse 
'
Private Sub Form_Load() 
    Dim Structure As New TYPE_PERSO 
    Structure.ELEMENT1 = 90 
    Call cClass.FONCTION_PUBLIQUE(Structure) 
    MsgBox Structure.ELEMENT1 & vbCrLf & _ 
           Structure.ELEMENT2 & vbCrLf & _ 
           Structure.ELEMENT3 

    Set Structure = Nothing 
    Unload Me 
End Sub 
'
Private Sub Form_Unload(Cancel As Integer) 
    Set cClass = Nothing 
End Sub 

'=-=-=-=-=-=-=
' MaClasse.cls
'=-=-=-=-=-=-=
'
Option Explicit 
Public Sub FONCTION_PUBLIQUE(ByRef VARIABLE As TYPE_PERSO) 
    'sub qui renverra VARIABLE
    With VARIABLE 
        .ELEMENT2 = CLng(Date) 
        .ELEMENT3 = .ELEMENT1 + .ELEMENT2 
    End With 
End Sub 

'=-=-=-=-=-=-=-=
' TYPE_PERSO.cls
'=-=-=-=-=-=-=-=
'
Option Explicit 
Public ELEMENT1 As Long 
Public ELEMENT2 As Long 
Public ELEMENT3 As Long

<small> Coloration
syntaxique automatique [AFCK] </small>
       

++
PCPT   [AFCK]
<hr size ="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
56
Salut,


Type_Perso est un autre module de classe que tu dois ajouter a ton projet






@+,   Ju£i?n
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
42
beh çà marche chez moi...
TYPE_PERSO est déclarée par la Form : Dim Structure As New TYPE_PERSO

et TYPE_PERSO est un module de classe
<hr size="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
56
Salut,

Je sais que cela n'est pas tres propre mais tu peux peu etre passer par un variant qui representera en fait Ton TYpe

@+,   Ju£i?n
Messages postés
1812
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
26 octobre 2010
1
Violent Ken

Non, çà ne marche pas, "un objet est requis" à la ligne VARIABLE.Rem1=...

Public Sub FONCTION_PUBLIQUE(ByRef VARIABLE As Variant)
    'sub qui renverra VARIABLE
    VARIABLE.rem1 = "ok"
End Sub

@+
Messages postés
1812
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
26 octobre 2010
1
Violent Ken

D'accord, mais ou dois-je déclarer TYPE_PERSO ?

Car il y a un problème à la ligne :
Public Sub FONCTION_PUBLIQUE(ByRef VARIABLE As TYPE_PERSO) 

(type définit par l'utilisateur non défini)
Merci, @+
Messages postés
1812
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
26 octobre 2010
1
Violent Ken

Erf, autant pour moi, désolé pour cette seconde question inutile -_-

Encore une fois : MERCI PCPT, tu me sauves la vie ;)

Merci encore, merci jrivet aussi pour tes réponse.

@+