Modules de classe - 101

Hello le forum !

Je me suis penché sur les modules de classe, et je trouve ça assez pratique...quelques fonctionnalités en plus que les modules standards, etc.

Si j'ai bien appris ma leçon ( ), les modules de classes permettent de bien compartimenter les différents "processus" du programme, et prennent tous leurs sens lorsqu'un même traitement est amené à être effectué plusieurs fois, avec des "input" différents ; sans même parler de la maintenance qui en est rendue plus aisée.

Je comprends à peu près l'utilité des Property, mais étant donné que je ne vois pas de cas où l'appliquer chez moi, ça reste assez flou.

Ce que j'en ai retenu, c'est qu'elles permettent d'agir sur les variables avant de les renvoyer au code appelant, entre autres. Mais du coup, ça ressemble fortement à une fonction (toujours selon ce que j'en ai retenu, hein).

Les exemples sur internet sont assez bidons ; si une bonne âme pouvait me donner un exemple concret d'utilisation (sans forcément poster le code, mais simplement ce que ça peut permettre de faire concrètement), ce serait magnifique !

Cependant, si on exclue le côté Property, je n'arrive pas à saisir le réel intérêt d'un module de classe par rapport à un module standard. Une bonne procédure découpée en sous-procédures - à arguments, dans le cas où elle est amenée à traiter plusieurs inputs -, avec des types - si besoin est -, et quelques fonctions ; est tout aussi maintenable et efficace qu'un module de classe. Mais les "selon moi", on les connaît ; donc je souhaitais avoir un éclairage la-dessus !

Merci d'avance

Bonjour,

  • On initialise l'objet 'a' avec des valeurs (hauteur et largeur sur l'exemple). Celles ci sont mémorisées dans l'objet.
  • Lorsque que l'on appelle une fonction (propriété) de l'objet (surface ou périmètre), il n'est plus nécessaire de lui passer des paramètres comme on le fait sans programmation objet.
  • La classe gère elle même certains paramètres qui deviennent donc transparents au programmeur d'application.

http://boisgontierjacques.free.fr/pages_site/classe.htm

Cezin

Bonjour SoumZoum, bonjour le forum,

J'utilise les modules de classe quand j'ai beaucoup de contrôles qui utilisent le même code.

Imagine une Userfom avec 31 Commandbutton représentant les jours du mois. Quand je clique sur un des boutons il renvoie la date dans une cellule. Il me faudrait écrire, par exemple, pour chaque bouton : ActiveCell.Value=Me.Commandbutton1.Caption / ActiveCell.Value=Me.CommandButon2.Caption / etc...

Avec un module de classe je définis contrôles faisant partie de la classe (les 31 boutons) et je leur affecte une unique code.

J'espère que c'est clair et que ça t'aidera sinon je te ferai un ferai un petit fichier exemple...

[b]

[Édition][/b]

Bonjour Cezin on s'est croisé...

Bonjour à vous deux,

@Ceuzin Merci pour le site, je vais jeter un oeil de ce pas !

@ThauThème, effectivement c'est un bon exemple, merci ! Mais le truc - je me trompe sûrement -, c'est que je ne vois pas la différence (mise à part la visibilité du code, mais là encore on peut stocker ça ailleurs) entre le fait de créer un pointeur vers tous les boutons (c'est ça?) et celui de boucler sur les boutons dans un module classique.

Dis moi si je me trompe, mais dans le module de classe, il va falloir "évoquer" chaque bouton (ou alors boucler dessus), pour ensuite les affecter à un seul code ; dans un module classique, les stockerait dans un array via un sous-procédure et on bouclerait dessus.

En écrivant ça, j'ai peut-être trouvé la réponse : la rapidité d’exécution ?

C'est ça, le truc : je comprends que les modules de classes sont utiles et permettent de faire plein de choses, mais je ne vois pas vraiment le côté révolutionnaire du truc par rapport à des modules standards. Ou alors, c'est que mes projets sont pas assez importants pour m'en rendre compte

Salut à toi ! Et aux autres...

Je vois que tu te lances ! Je ne vais pas pouvoir te communiquer mon expérience sur les modules de classe, vu que j'hésite toujours à me lancer. J'attends d'avoir un projet qui me motive et qui en justifie l'utilisation.

En fait tu crées des objets personnalisés dont tu gères les propriétés et méthodes, et les évènements (attention l'objet individuel est distinct de l'objet collection, et peut souvent te conduire à un module pour l'objet et un pour sa collection...) L'intérêt de la chose, outre l'extension de possibilités que cela procure, est que cela est facilement exportable et réutilisable ailleurs...

Pour ce qui est des Property, tu as raison, tu peux faire la même chose avec des fonctions, des variables module et des procédures standard pour réaliser des affectations. Cela introduit cependant un peu plus de rigueur dans le processus : tes procédures d'affectation (Let et Set) ont même structure et nom que les fonctions (Get) renvoyant les valeurs de propriétés. L'utilisation est plus simple qu'il n'y paraît à la lecture de la doc.

A+

Re,

En pièce jointe un petit fichier exemple avec 2 UserForm. L'UserForm1 n'a pas de module de classe tandis que l'UserForm2 en à un. Voir la différence de code pour un fonctionnement identique.

Pour éviter de commenter le code, je mets aussi un petit tuto que je me ressors chaque fois que je dois utiliser une module de classe pour des contrôles (je n'en fais pas souvent alors parfois j'oublie, surtout le Public WithEvents...)

Rechercher des sujets similaires à "modules classe 101"