VB - Appel dynamique d'attributs d'un(e) classe/module

Signaler
Messages postés
1
Date d'inscription
mercredi 28 mai 2008
Statut
Membre
Dernière intervention
28 mai 2008
-
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
-
Yop.

Alors ok j'ai deja trouve pas mal de site qui traitent de pres ou de loin ce sujet (notamment les concepts de collection), mais je n'ai pas reussi a repondre a ma question in fine.
Je la fais simple:
- En VBA
- Un module:
      GenericModule (ou un class module, mais a vrai dire je m'en tape d'utiliser un class module)
- N Attributs (dans cet exemple 3, mais j'en ai une 60aine ds mon code):
      Public Name(10, 5000) as string
      Public StartDate(10, 5000) as Date
      Public Notional(10, 5000) as Double
- J'ai cree un modele generique de lecture de fichiers source via excel configurable qui me permet de mapper les lignes souhaitees sur les trois attributs ci-dessus.
(e.g. 10 fichiers source qui ont 5000 lignes max)


Comme en realite j'ai une platree d'attributs a mapper, ca me blase pas mal d'hardcoder les appels de tous les attributs ds ma procedure de constructions de vecteurs.


Idealement je souhaiterais faire un truc ds ce style: (i.e. creer la loop une fois et ne pas avoir a la repliquer 60 fois dans le code ; et accessoirement de modifier 60 fois chaque fois que je fais une evol)



Public sub VectorBuild(Source as string, cInc as integer, rInc as integer, NumberOfSource as integer, VectorColSize as integer)



For rInc = 1 to NumberOfSource
      For cInc = 1 to VectorColSize
              GenericModule.[GenericAttribute](rInc, cInc) = Sheets(Source).cells(rInc, cInc)
      Next cInc
Next rInc



End sub


Merki d'avance
-Gen

1 réponse

Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
salut,

tu dis :
"- Un module:
      GenericModule (ou un class module, mais a vrai dire je m'en tape d'utiliser un class module)"

He he, beh pourtant ça change tout !

Il te faut créer 2 classes, le principe, c'est d'avoir une classe simple, avec tes 'attributs' qui seront en fait des propriétés.
Une fois ta classe initialisée, tu la places dans une autre classe ayant une Collection.
Dès que tu as à nouveau besoin de recréer un 'objet', un simple Set TrucMuche = New TaClass afin d'en replacer d'autres dans la classe Collection.

Si tu veux, j'ai un fichier XLS que j'ai fait pour un pote, il a 2 groupes de joueurs, il voulait que j'initialise 5 poules avec 3 critères : les joueurs ne doivent pas rencontrés 2 fois, ne doivent pas jouer sur la meme table, et ne doivent pas faire partit du même club.
Pour gérer cela, j'utilise des Module de classe, ce qui est bien plus simple. Donc si tu veux cet exemple pour voir un peux le code, je te l'envoi (mais ne mets pas ton mail ici en dur, envoi le par MP)

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA