Pb avec property set
Max
-
lermite222 Messages postés 9042 Statut Contributeur -
lermite222 Messages postés 9042 Statut Contributeur -
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!!
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!!
A voir également:
- Property set vba
- Set-top box - Accueil - Box & Connexion Internet
- Excel compter cellule couleur sans vba - Guide
- Find vba - Astuces et Solutions
- Time of day not set please run setup program ✓ - Forum Debian
- Incompatibilité de type vba ✓ - Forum VB / VBA
3 réponses
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.
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.
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.