Des classes dynamiques (!) en vba Excel

Des classes dynamiques (!) en vba Excel - VB/VBA/VBS - Programmation

Marsh Posté le 01-10-2008 à 00:22:51    

Bonjour,
Je cherche à faire qq chose qui me rendrait énormément service pour des développements de petites applications Excel.
J'ai un certain nombre de tables dans des onglets Excel. Je dois faire pas mal de manipulations avec, et elles sont susceptibles d'évoluer souvent.
 
Prenons pour l'exemple :
 
Onglet personnes

Id    Nom      Prenom  
 
1     Marc     Legrand
2     Pierre   Boulard


Je souhaiterais pouvoir générer automatiquement un objet vba (type utilisateur ou classe) avec cette hiérarchie, et accéder aux différents éléments de cette façon : personne(1).id, personne(1).nom, personne(1).prenom, etc.
 
L'idée étant bien la suivante: la structure de l'objet est définie dans la feuille Excel, et je ne veux surtout pas devoir redéfinir chaque champ (nom, prenom, etc.) dans le code vba.
 
Comment peut-on faire ce genre de type ou classe "dynamique" ? Y a t'il moyen de bricoler qq chose en utilisant des collections ?
On pourrait bien sur utiliser un tableau tout simple, mais ce ne serait pas très ergonomique pour coder ensuite... (je peux arriver à une 20aine de colonnes...)
 
Merci bien pour toute suggestion...


Message édité par M@nu le 01-10-2008 à 00:23:50
Reply

Marsh Posté le 01-10-2008 à 00:22:51   

Reply

Marsh Posté le 01-10-2008 à 16:46:56    

Avec la bibliothèque VBE (VB extensibility je crois) il est possible de créer des modules de code (donc de classe éventuellement je suppose).
Mais c'est lourd et demande une bonne expérience de prog en VBA.
Je n'ai pas assez de recul pour te certifier que tu arriveras à faire ce que tu veux, mais je pense que c'est possible.
 

Reply

Marsh Posté le 02-10-2008 à 02:10:07    

Est-ce que ta structure est figée ou pas ? C'est-à dire est-ce que tu sais quelles colonnes tu auras ? (je ne parle pas de leur ordre, mais de leur nom)
Si oui tu pourrais utiliser un type utilisateur.
Sinon je ne vois pas comment tu pourrais te passer d'un tableau, dont la 1ère ligne contiendrait le nom des colonnes. Pour ce qui est du nb de colonnes, c'est un faux problème, si tu utilises des boucles de traitement.

Reply

Marsh Posté le 03-10-2008 à 14:18:15    

Idoine a écrit :

Est-ce que ta structure est figée ou pas ? C'est-à dire est-ce que tu sais quelles colonnes tu auras ? (je ne parle pas de leur ordre, mais de leur nom)
Si oui tu pourrais utiliser un type utilisateur.
Sinon je ne vois pas comment tu pourrais te passer d'un tableau, dont la 1ère ligne contiendrait le nom des colonnes. Pour ce qui est du nb de colonnes, c'est un faux problème, si tu utilises des boucles de traitement.


 
 
Si je reformule ma question de cette façon:
Je stocke effectivement le nom de chaque colonne dans un tableau : tableau(1), tableau(2), etc.
Est ce que je peux créer un type utilisateur dont les noms des variables seraient les valeurs de tableau(1), tableau(2), etc.
 
Merci bien!

Reply

Marsh Posté le 03-10-2008 à 17:55:46    

Fais un tableau à 2 dimensions.  
 
tableau(1 to 35000, 1 to 20) par ex correspond à un tableau de 35000 lignes et 20 colonnes
 
Ensuite : tableau(1,1)="NomColonne1"
tableau(1,2)="NomColonne2"
...
tableau(1,20)="NomColonne20"
 
et à partir de la ligne 2 du tableau les données (deux boucles For et roule ma poule !)


Message édité par Idoine le 03-10-2008 à 17:56:08
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed