Re : Rechercher avec 2 Combobox pour un même résultat dans une listBox
Pour le moment je bloque dans mon évolution de programmation.
Le souci vient sans doute de la notion de modules de classes. Pourtant toutes les fournitures de définitions de contrôles et celles de l'application hôte Excel ne sont rien d'autre que des modules de classes !
J'ai écrit ça pour un autre demandeur:
Il n'y a pas grand chose à savoir, je trouve, pour comprendre les modules de classes:
La base :
- Leurs noms devienne des type de données utilisables dans les déclarations Dim, Public ou Private. Les variables déclarées d'un tel type s'appellent des objets. On dit parfois plutôt des instances d'objets pour éviter toute confusion avec le type d'objet.
- Leurs variables Public peuvent être utilisées précédées du nom de la variable objet suivie d'un point. On les appelle des propriétés. Les propriétés sont propres à l'instance de l'objet: chaque variable de ce type d'objet a son propre jeux de ces propriétés là. C'est pourquoi on les appelle des propriétés: elle sont propres à chaque variable de ce type d'objet.
- Leurs procédures Public peuvent être exécutées précédées du nom de la variable objet suivie d'un point. On les appelle des méthodes. C'est le même code pour tous les objets de ce type (le code est attaché au type, non à l'instance).
- Précédé du mot clé New, le nom du module de classe forme une expression qui représente une nouvelle instance de ce type d'objet. C'est un mot clé puissant puisqu'il alloue des ressources pour l'objet. L'expression doit être affectée par un Set à une variable de ce type d'objet pour qu'elle soit utilisable.
Les évènement (Un module de classe peut en effet décréter des évènement (par l'instruction RaiseEvent). Ces évènements ne peuvent toutefois pas être gérés dans un module ordinaire)
- Dans un module spécial, l'objet doit être déclaré avec le mot clé WithEvents pour que ses évènements puissent y être gérés.
- Cela inscrit le nom de la variable parmi les objets connus disponibles figurant dans la liste déroulante de gauche qui surmonte la fenêtre de code. Celle de droite présente un inventaire des évènements disponibles pour cet objet. Un clic dans ces listes implante dans votre code des modèles de procédures nécessaires à gérer ces évènements (seulement l'instruction Private Sub et la End Sub).
En somme, à part la déclaration en plus et l'affectation d'une nouvelle instance, ça marche comme pour les objets définis soit par l'application hôte (WorkSheet par exemple) ou par toute autre fourniture de bibliothèque figurant dans les références du projet VBA, tel que MSForms (ComboBox par exemple). D'ailleurs vous savez, ces choses là ne sont rien d'autres que des modules de classes !
Mais soit, vous avez l'aide en plus pour vous en servir. Alors une dernière information pour comprendre mes commentaires explicatifs qui en tiennent lieu: Les évènement sont déclarés dans les modules de classes par des instructions Event. J'y explique du mieux que je peux derrière chacun d'eux dans quelles circonstances ils se produisent. Pareil, j'explique comme je peux chaque propriété et chaque méthode.
P.S. Je me suis efforcé de définir, en quelque sortes en passant, chaque terme que j'utilise plus loin. À lire deux fois de suite pour augmenter ses chances de comprendre, car la 1ère fois, comme on ne sait pas à quoi ça va servir, on ne retient pas…