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

Signaler
Messages postés
18
Date d'inscription
mardi 27 juin 2006
Statut
Membre
Dernière intervention
8 novembre 2006
-
Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
-
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

Messages postés
1471
Date d'inscription
mardi 5 février 2002
Statut
Membre
Dernière intervention
20 octobre 2014
10
'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
Messages postés
18
Date d'inscription
mardi 27 juin 2006
Statut
Membre
Dernière intervention
8 novembre 2006

Ca, ca va m'allèger mon code ;)
Magnifique, merci beaucoup !!!!!
Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
10
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.