programmation en classes

tibibs

XLDnaute Nouveau
Bonjour,

J'aimerais me lance dans la combinaison programmation en classes et excel mais j'aurai une question avant de commencer

Comment stockées mes objets créés avec ma classe?
Suis-je obligé de stocker mes valeurs unes à unes dans une feuille d'excel et ensuite créer une procédure à l'ouverture de mon fichier pour recréer tous mes objets?

je ne sais pas si c'est clair? :/

merci d'avance
 
Dernière édition:

MJ13

XLDnaute Barbatruc
Re : programmation en calsses

Bonjour Titibs

Comment stockées mes objets créés avec ma classe?
Suis-je obligé de stocker mes valeurs unes à unes dans une feuille d'excel et ensuite créer une procédure à l'ouverture de mon fichier pour recréer tous mes objets?
je ne sais pas si c'est clair? :/

Les classes, c'est pas trop ma spécialité :eek:, mais bon cela dépend de ton niveau en programmation.

Sinon, il existe des tutos sur le net ou de nombreux exemples sur XLD.

Le mieux serait de fournir un petit fichier avec le but à atteindre.
 

laurent950

XLDnaute Accro
Re : programmation en classes

Bonjour Titibs et Mj13,

Je suis en plein dedans en ce moment.

Ce que j'ai lu est compris, les variables doivent être privée (dans le module de classe) avec la variable Property (Let est get) dans les nombreux exemple c'est vraiment pas évident de si retrouver alors une astuce, j'ajoute un m devant la variable privée de la classe qui a le même nom que porte la variable d'appel dans la sub comme mon exemple

Ps : j'ai lu qu'il est inutile de programmer avec une variable (Let et Get ave des variable publique dans la classe)

les variables tableaux avec un module de classe est assez complexe d'ailleurs le soucis c'est que VBA a déjà c'est propre classe c'est a dire :
Worksheet
Range

etc.

Le fournis un petite exemple avec (Let et Get) et serais content de pouvoir affiner mes connaissance. Enfin le début est correcte est c'est déjà une bonne base

Ce qui serait fort c'est de stocker ces Objet en tableau, et réutilisé le tous ensuite.

laurent
 

Pièces jointes

  • ExempleModuleDeClasse.xlsm
    21 KB · Affichages: 36
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : programmation en classes

Bonsoir.
Qu'est-ce qui vous pousse à vouloir associer à des objets des données notées en dur dans des feuilles ?
En tout cas si c'est justifié, pour les sauvegardes et reconstitutions, faites un maximum de choses dans des méthodes et non extérieurement au module de classe. L’intérêt de la chose c'est d'arriver à leur conférer une sorte de vie propre, autonome, et non de rester obligé de les gérer de l'extérieur dans les modules de l'application.
Sauf à la rigueur pour les tableaux, les procédures Property n'ont rien à voir avec les propriétés d'objets. Il faudrait déjà qu'on veuille une propriété exclusivement en écriture seule dans la classe. Alors une Property Let sans la Get correspondante ferait l'affaire. Normalement une propriété en lecture seule c'est une Public Function et une propriété en lecture écriture une simple variable Public. Il n'y a pas de complication particulière avec les tableaux, à part qu'ils ne peut être déclaré Public. Là, des Property Let et Get permettent de contourner cette limitation par des échanges de copies des dits tableaux.
À +
 

laurent950

XLDnaute Accro
Re : programmation en classes

Bonsoir Dranred,

Vous savez ou je pourrais avoir la clef pour bien comprendre le fonctionnement des modules de classes c'est pas très claire, les exemple que j'ai trouver sont surtous avec des module de classe qui gére des évenement. vous savez si il y a un cours quelques part ur la toile ?

Laurent
 

Dranreb

XLDnaute Barbatruc
Re : programmation en classes

Je trouve que ce n'est pas quelque chose de compliqué en soit. C’est un peu comme un type de donnée défini par l'utilisateur (par instruction Type) mais muni en plus de procédures qui lui sont propres appelées méthodes et aussi d'un usage un peu plus large (moins de limitations que les types définis par l'utilisateur: un type d'objet de classe peut être rendu par une fonction par exemple).
Il ne doit pas vous manquer grand chose pour détenir ce que vous nommez votre mystérieuse clef, et je vous invite donc à me poser toutes les questions nécessaires pour que votre impression disparaisse.

P.S.
j'ai trouver sont surtous avec des module de classe qui gére des évenement
…d'autres objets je suppose.
Parce qu'un module de classe peut comporter des déclarations Event et des instructions RaiseEvent. Ils ne gèrent pas ces évènements: ils les décrètent. C'est le juste verbe imagé à utiliser et non le "supprimer" du mauvais traducteur qui n'y avait rien compris. Déclaration: Event LoiMartiale, dans le code: RaiseEvent LoiMartiale: décrète la loi martiale ! Dans une classe utilisatrice ayant déclaré l'objet avec le mot clé WithEvents, la parution du décret peut être détectée au moyen d'une procédure évènement, qui reçoit en paramètre les informations nécessaires à prendre les dispositions qui s'imposent.

P.S.2 Plus haut:
le soucis c'est que VBA a déjà c'est propre classe c'est a dire :
Worksheet
Range
Ce n'est pas tout à fait juste de dire les choses comme ça. Ç'aurait été à la rigueur un peu moins faux de citer des classes comme Userform ou Dictionary, encore que même pour ces objets, il s'agit de définition de classes de bibliothèques externes au langage: les fameuses références. Pour faire un parallèle aux Userform, mais pour les objets cités, c'est que le A de VBA qui joue son rôle. Lorsqu'un projet VBA s'initialise, il exécute une interface avec l'application hôte qui installe les objets de la rubrique "Microsoft Excel Objets".
À +
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 374
Messages
2 087 729
Membres
103 655
dernier inscrit
MOUNIRACH16