Récupérer un élément d'une classe

Résolu
cs_CharlEm Messages postés 39 Date d'inscription mercredi 8 décembre 2004 Statut Membre Dernière intervention 28 janvier 2009 - 24 juil. 2008 à 17:46
cs_CharlEm Messages postés 39 Date d'inscription mercredi 8 décembre 2004 Statut Membre Dernière intervention 28 janvier 2009 - 25 juil. 2008 à 13:40
Bonjour,

Comment-puis faire pour récupérer une valeur d'un champ d'un classe en lui passant le nom de mon champ en paramètre ?

Dans mon code principal j'appel et je construit deux collections de classes puis dans une seule et même fonction, j'aimerais pouvoir appeller n'importe quel élément d'une de mes classes pour faire des contrôles.

Private Sub Form_Load()
   Dim colProduit  As New Collection
   Dim eleProduit  As New produit <== une de mes classes
   Dim colRayon   As New Collection
   Dim eleRayon   As New rayon <== une de mes classes
...
   CheckProduits(eleProduit, colProduit, "prix")
   CheckRayons(eleRayon, colRayon,"taille")
...
End Sub

Public Function CheckItems(Element as object, Collection as collection, champ as string)
   For Each Element In Collection
      debug.print element.item("prix") ==> l'objet ne gère pas cette propriétée ou cette méthode
   Next Element
End Function

J'ai essayé element.item(1) => pareil ça marche pas

Par contre, si je fais :
debug.print element.prix ==> là c'est bon mais alors je perd le coté dynamique que je voulais.
Je ne peux pas non plus mettre Public Function CheckItems(Element as Produit,... sinon là aussi je perd le coté dynamique.

Quelqu'un a une idée pour avoir le PRIX de ELEMENT ?

Merci d'avance

2 réponses

cs_titicar Messages postés 181 Date d'inscription jeudi 30 mai 2002 Statut Membre Dernière intervention 19 août 2012
24 juil. 2008 à 23:39
Holà!

En lisant les premières lignes de ton message, j'ai cru comprendre le sens de ta question.
Mais en lisant ton extrait de code source, je n'y comprend plus grand chose.
Ca serait bien que tu cernes ton problème, mais en oubliant le contexte de ton programme et en donnant un code source plus exploitable.

Vu que je n'ai pas tout compris, je vais te donner le 1er truc qui m'ai passé par la tête en lisant le début de ton post (suis-je hors sujet?) :
La fonction CallByNameexécute une méthode d'un objet, ou définit ou renvoie une propriété d'un objet...une classe étant aussi un objet.

A part ça, quelque chose m'intrigue dans ton code : ta Function CheckItems(...) ne renvoit pas de résultat.
Généralement, on écrit :
Function MaFunction (Parametre As ...) As ...
Si ta fonction ne doit pas renvoyer de résultat, alors autant utiliser une Sub:
Sub MaSub (Parametre as ...)
... Sachant que Parametre peut renvoyer ou non une nouvelle valeur s'il est déclaré avec ByRef ou ByVal...

titicar
3
cs_CharlEm Messages postés 39 Date d'inscription mercredi 8 décembre 2004 Statut Membre Dernière intervention 28 janvier 2009
25 juil. 2008 à 13:40
Excellent ça fonctionne avec CallByName(Element,champ,VbGet).

De fait tu as raison c'est un Sub et pas une Function.

Un tout grand merci pour cette fonction interne que je ne connaissait pas.
0
Rejoignez-nous