Recuperer une propriété d'un élément de collection au travers d'un paramêtre de

Résolu
larsene67 Messages postés 18 Date d'inscription mardi 27 juin 2006 Statut Membre Dernière intervention 8 novembre 2006 - 7 juil. 2006 à 15:17
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 - 8 juil. 2006 à 09:47
Re-bonjour, voici une autre question à un de mes soucis.
Alors l'exemple n'est pas très clair quand à l'utilité, mais j'ai simplifié pour la question.
Cela aurais été trop long de tout expliquer, et inutile pour le cas.
En fait, j'essaie de recuperer une propriété d'un élément de collection au travers d'un paramêtre de fonction. L'idée étant de pouvoir faire un traitement commun sur des collection et propriétés différentes.
Enfin lisez l'exemple, ce sera plus clair.
En tout cas, je n'arrive pas à le faire marcher....
Une idée?

(Dans class1:)
Public nom, prénom, age

(dans module1:)
Public equipe As New Collection



Sub sub1()
Dim machin As New Class1



machin.nom = "CHRIST"
machin.prénom = "Jesus"
machin.age = "33 ans"
equipe.Add machin
Set machin = Nothing



machin.nom = "LUCAS"
machin.prénom = "GEORGES"
machin.age = "50 ans"
equipe.Add machin
Set machin = Nothing



machin.nom = "DES BATIGNOLES"
machin.prénom = "Marie-thérese"
machin.age = "75 ans"
equipe.Add machin
Set machin = Nothing



result = sub2(equipe, "nom")



End Sub



Private Function sub2(collec As Collection, qualif As String)
Dim r As New ScriptControl
r.Language = "vbscript"
For i = 1 To equipe.Count
    'MsgBox (collec(i).qualif) '<--propriété ou methode non gérée par cet objet
    'MsgBox (r.Eval("collec(" & i & ").qualif")) ' <-- type incompatible 'collec'
    'MsgBox (r.Eval(collec(i).qualif)) '<--propriété ou methode non gérée par cet objet
    'MsgBox (r.Eval(collec(i).qualif))  '<--propriété ou methode non gérée par cet objet
    '... pas d'autres idées :(
Next i



End Function

3 réponses

BasicInstinct Messages postés 1470 Date d'inscription mardi 5 février 2002 Statut Membre Dernière intervention 20 octobre 2014 12
7 juil. 2006 à 16:18
'lut

Je pense que ca doit repondre à ton probleme. Mais je n'ai pas testé en Vba

Private Function sub2(collec As Collection, qualif As String)
Dim r As New ScriptControl
   r.Language = "vbscript"
   For i = 1 To collec.Count
         Msgbox  CallByName(collec(I), qualif, VbGet)
   Next i
End Function

++

BasicInstinct
3
larsene67 Messages postés 18 Date d'inscription mardi 27 juin 2006 Statut Membre Dernière intervention 8 novembre 2006
7 juil. 2006 à 16:35
Ca, ca va m'allèger mon code ;)
Magnifique, merci beaucoup !!!!!
0
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
8 juil. 2006 à 09:47
Salut,

JE pense qu'il est inutile d'invoquer ScriptControl... Après vérification, la sub2 peut s'écrire uniquement par :



Private Function sub2(collec As Collection, Qualif As String)
   For i = 1 To collec.Count
         MsgBox CallByName(collec(i), Qualif, VbGet)
   Next i
End Function

cela évite de passer par le language VBScript, pour revenir à VBA...


Amicalement,


Us.
0
Rejoignez-nous