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

genintadd Messages postés 1 Date d'inscription mercredi 28 mai 2008 Statut Membre Dernière intervention 28 mai 2008 - 28 mai 2008 à 04:29
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 - 28 mai 2008 à 06:49
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

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
28 mai 2008 à 06:49
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
0
Rejoignez-nous