OVH Cloud OVH Cloud

Propiété privée

11 réponses
Avatar
Patrick
Bonjour,

Quand on crée une propriété, à quoi sert-il de la deéclarée comme privée
(Private) alors qu'ensuite on ne peut même pas l'appeler à l'intérieur du
module de l'objet ?

Si vous le savez, je serais très intéressé de comprendre.

Merci.

--
Patrick

10 réponses

1 2
Avatar
Fred
dans : news:,
Patrick écrivait :

Bonjour,



Bonjour,

Quand on crée une propriété, à quoi sert-il de la deéclarée comme
privée (Private) alors qu'ensuite on ne peut même pas l'appeler à
l'intérieur du module de l'objet ?



J'aurais pensé qu'on ne peut l'appeler qu'à l'intérieur du module de
l'objet ?

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT
Avatar
Patrick
Je l'ai essayé et il y a un erreur. D'où ma question...

--
Patrick


"Fred" wrote:

dans : news:,
Patrick écrivait :

> Bonjour,

Bonjour,

> Quand on crée une propriété, à quoi sert-il de la deéclarée comme
> privée (Private) alors qu'ensuite on ne peut même pas l'appeler à
> l'intérieur du module de l'objet ?

J'aurais pensé qu'on ne peut l'appeler qu'à l'intérieur du module de
l'objet ?

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT




Avatar
Fred
dans : news:,
Patrick écrivait :

Je l'ai essayé et il y a un erreur. D'où ma question...



Quelle erreur ? Je n'en vois pas !
Un exemple de code minimal à montrer ?


--
Fred
http://www.cerbermail.com/?3kA6ftaCvT
Avatar
Patrick
J'ai mis une propriété privée dans un UserForm :
Private Property Get Year() As Integer
Year = CInt(txtYear)
End Property

Private Property Let Year(ByVal iValue As Integer)
txtYear = CStr(iValue)
End Property

Je l'appelle dans une des procédures du UserForm :
Private Sub cmdOK_Click()
...
MaVariable.Year = Me.Year
...
End Sub

Au moment de la compilation, il y a le message d'erreur "Methode or data
member not found".

--
Patrick


"Fred" wrote:

dans : news:,
Patrick écrivait :

> Je l'ai essayé et il y a un erreur. D'où ma question...

Quelle erreur ? Je n'en vois pas !
Un exemple de code minimal à montrer ?


--
Fred
http://www.cerbermail.com/?3kA6ftaCvT




Avatar
Fred
dans : news:,
Patrick écrivait :

MaVariable.Year = Me.Year



Je pense que c'est le «Me» (bizarrement) qui pose problème. Enlève-le
pour voir ?
MaVariable.Year = Year

Par contre MaVariable possède bien une propriété publique Year ?

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT
Avatar
Gloops
Salut,

Le 15/08/2006 20:00, Fred a écrit :
dans : news:,
Patrick écrivait :

MaVariable.Year = Me.Year



Je pense que c'est le «Me» (bizarrement) qui pose problème. Enlève-le
pour voir ?
MaVariable.Year = Year

Par contre MaVariable possède bien une propriété publique Year ?



Stooop !!!

Year est un mot réservé, et un argument va être réclamé.
Par exemple MaVariable.Year = Year(Now())

C'est une mauvaise idée d'appeler Year une propriété, excellent du reste
pour se mélanger les pinceaux. J'ai supposé que MaVariable.Year allait
passer, mais je n'en suis pas plus sûr que ça.

En revanche on pourrait très bien dire :

MaVariable.intAnneeInscription = Me.txtAnnee
Avatar
Fred
dans : news:un06p%,
Gloops écrivait :

Salut,

Le 15/08/2006 20:00, Fred a écrit :
dans : news:,
Patrick écrivait :

MaVariable.Year = Me.Year



Je pense que c'est le «Me» (bizarrement) qui pose problème. Enlève-le
pour voir ?
MaVariable.Year = Year

Par contre MaVariable possède bien une propriété publique Year ?



Stooop !!!

Year est un mot réservé, et un argument va être réclamé.
Par exemple MaVariable.Year = Year(Now())



Oui, je ne l'ai pas vu passer celle ci.
Mais ton erreur arrivera avec mon code, pas avec celui de Patrick.
Et c'est son erreur qu'on essaie de résoudre ;-)

C'est une mauvaise idée d'appeler Year une propriété, excellent du
reste pour se mélanger les pinceaux.



Peut-être.
Je ne fais pas trop de classes en vb6, mais avec d'autres outils.
J'essaie toujours au contraire de rester conforme à ce qui existe. Sans
me mélanger les pinceaux puisque je préfixe toujours mes
méthodes/propriétés.
D'où, selon moi, la bizarrerie de devoir enlever le «Me» dans le code de
Patrick. Mais j'attends sa confirmation car je ne l'ai testé que très
rapidement avec vba.


--
Fred
http://www.cerbermail.com/?3kA6ftaCvT
Avatar
Gloops
Le 16/08/2006 07:33, Fred a écrit :
Par exemple MaVariable.Year = Year(Now())



Oui, je ne l'ai pas vu passer celle ci.
Mais ton erreur arrivera avec mon code, pas avec celui de Patrick.
Et c'est son erreur qu'on essaie de résoudre ;-)



ça ne ressemblerait pas à se défiler, ça ? ;)
Avatar
Fred
dans : news:,
Gloops écrivait :

Le 16/08/2006 07:33, Fred a écrit :
Par exemple MaVariable.Year = Year(Now())



Oui, je ne l'ai pas vu passer celle ci.
Mais ton erreur arrivera avec mon code, pas avec celui de Patrick.
Et c'est son erreur qu'on essaie de résoudre ;-)



ça ne ressemblerait pas à se défiler, ça ? ;)



Du tout :D

Comme je le disais, je n'ai pas vu que le fait de supprimer le Me
amenait une confusion avec un mot réservé.
Mais je crois que le problème de propriété privée de Patrick est
justement lié à l'utilisationdu Me qui ne semble pas accepté dans ce
contexte.
Pour résumer : il devrait essayer sans le Me et par conséquent, comme tu
l'as signalé, être amené à changer le nom de sa propriété pour qu'il
n'y ait pas cette confusion.
Enfin, le mieux, c'est d'essayer. Ce que j'ai fait mais avec un nom de
propriété autre que Year.


--
Fred
http://www.cerbermail.com/?3kA6ftaCvT
Avatar
Patrick
Bonjour Fred,

J'ai testé ta suggestion. Et en effet cela fonctionne en enlevant le "Me".

Merci beaucoup.

--
Patrick


"Fred" wrote:

dans : news:,
Patrick écrivait :

> MaVariable.Year = Me.Year

Je pense que c'est le «Me» (bizarrement) qui pose problème. Enlève-le
pour voir ?
MaVariable.Year = Year

Par contre MaVariable possède bien une propriété publique Year ?

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT




1 2