Pb avec property set

Max -  
lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

J'essaie de déclarer des objets et si j'arive à peu près à m'en sortir de pour les instancier avec des attributs simples je n'arrive pas à leur donner des attributs plus complexes. Notamment :

Impossible de donner à une instance un attribut autre que les long/single etc. dès qu'il s'agit d'une instance de classe, en particulier la classe que je suis en train de définir, il me renvoie une erreur, même avec Set au lieu de Let et je n'arrive pas non plus à me dépatouiller avec des attributs comme des collections:

Dim rang As Integer
Dim bestMarge As Long
Private bestEtatS As Etat
Private etatNext As Collection
Private etatBefore As Collection

'----------------------------------------
' Rang
'----------------------------------------

Public Property Get arang() As Integer
arang = rang
End Property

Public Property Let arang(valeur As Integer)
rang = valeur
End Property

'----------------------------------------
' bestMarge
'----------------------------------------

Public Property Get abestMarge() As Long
abestMarge = bestMarge
End Property

Public Property Let abestMarge(valeur As Long)
bestMarge = valeur
End Property

'----------------------------------------
' bestEtatS
'----------------------------------------

Public Property Get aBestEtatS() As Etat
aBestEtatS = bestEtatS
End Property

Public Property Set aBestEtatS(ByVal valeur As Etat)
Set bestEtatS = New Etat
Set bestEtatS = valeur
End Property


'----------------------------------------
' etatNext
'----------------------------------------

Public Property Get aetatNext()
aetatNext = etatNext
End Property

Public Function iniEtatNext()

Set etatNext = New Collection

End Function


////////////////////////////////////////////////////////////////////////////

sub prog

Set test = New Etat
Set test2 = New Etat

test.arang = 3
test2.arang = 5

test.aBestEtatS = test2
MsgBox test.aBestEtatS.arang

test.iniEtatNext
test.addEtatNext (test2)

End Sub


sur les deux blocs d'instruction de fin il me répond :
"Variable objet ou variable de bloc With non définie"

Merci beaucoup pour votre aide!!

3 réponses

lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191
 
Bonjour,
Quel VB tu emploi ?
A+
0
Max
 
Bonjour,

j'emploie du VBA (de excel 2007)
0
lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191
 
OK, c'était pas clair au vu du code que tu montre.
Pour te "dépatouillé" avec les collections voir cette démo ou encore celle-ci

Pour les propriétés dans une classe.
Tu devrais prendre l'habitude de créer tes variables locales avec le même nom que la propriété en la précédant par exemple de "m" et aussi de mettre au moins une majuscule, pourquoi ? quand tu l'écrit ailleur (que tu y fais appel) tu l'écrit en minuscule et s'il n'y a pas de faute de syntaxe la majuscule s'inscrit comme par magie.. C'est une habitude à prendre mais ça sert souvent.


Private mRang As Integer    
Public Property Get Rang() As Integer    
    Rang = mRang    
End Property    

Public Property Let Rang(NouvRang As Integer)    
    mRang = NouvRang    
End Property

Quand tu regarde ce code.. t'a de suite compris, faut pas aller voir un peu partout le pourquoi du comment :-(:


Concernant les collections je vois pas ce que tu veux faire.
Ont peu passer beaucoup de choses mais certainement pas des collections.
Les collections s'appelle directement par le VBA.

Éventuellement explique un peu plus ce que tu veux faire.
A+
EDIT : Pour tes arang.. T'a oublier le H :D
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
0