XL 2010 Difficultés avec un module de classe

Magic_Doctor

XLDnaute Barbatruc
Bonjour,

Sur une feuille il y a plusieurs ComboBox. Tous ont la même action. Aussi, j’aimerais les regrouper dans un module de classe. Maniant mal ces modules, j’ai fait une tentative, ça ne marche pas très fort. Quand on choisit un item dans la liste d’un ComboBox, celui-ci ne disparaît plus des listes des autres ComboBox.
En PJ, l’application sans module de classe qui marche, elle, bien et la même application avec un essai de module de classe.

Merci d’avance pour m’aider à résoudre ce problème.
 

Pièces jointes

  • ComboListes.xlsm
    144.3 KB · Affichages: 7
  • ComboListes Module Classe.xlsm
    146.8 KB · Affichages: 1
Solution
Fichier joint avec le module de classe.

La classe CB est initialisée dans la Workbook_Open.

L'évènement GotFocus n'existant pas j'utilise DropButtonClick.

La classe CB permet en outre de simplifier les macros, étudiez-les bien pour comprendre.

job75

XLDnaute Barbatruc
Fichier joint avec le module de classe.

La classe CB est initialisée dans la Workbook_Open.

L'évènement GotFocus n'existant pas j'utilise DropButtonClick.

La classe CB permet en outre de simplifier les macros, étudiez-les bien pour comprendre.
 

Pièces jointes

  • ComboListes Module Classe(1).xlsm
    65.7 KB · Affichages: 8

Magic_Doctor

XLDnaute Barbatruc
Bonsoir job,

Avant de faire un module de classe il faut que ton projet tienne la route.
Il se trouve que chez moi, avec une version Excel 2007, ça marchait, sinon je n'aurais pas tenté fe faire un module de classe. Mais peut-être est-ce dû à la latitude... :cool: même si on se les caille ici.

En effet, faire le tri directement à la "racine" de la BD simplifie singulièrement les choses.
J'ai revu les macros DresseCombosListes et SelectFirstItemCombo qui n'allaient pas du tout.
En effet, ça n'a plus rien à voir, surtout concernant la macro "DresseCombosListes(ComboName$)".
VB:
.Sort .Cells(1), xlAscending, Header:=xlNo 'pas indispensable si la liste est triée une fois pour toute
Dans la mesure où l'on voudrait supprimer des solvants ou rentrer de nouveaux solvants (ce qui sera le cas), oui c'est indispensable.
Ce qui m'a bluffé (outre que ça marche maintenant à la perfection), c'est la rapidité d'exécution de la procédure en passant par le module de classe.
DropButtonClick : je découvre ! 🤩
Je voulais passer par Click ou Change... Bref, je m'y perds un peu.
Enfin, la syntaxe CB(i).CB signifie bien "l'élément CB(i) de la classe CB" ?
En tout cas, un grand merci pour ce grand coup de main.
Buenas noches.
 
Dernière édition:

Magic_Doctor

XLDnaute Barbatruc
On se calme !
C'est pas grave, je me suis trompé de bouton. Maintenant c'est rectifié pour en définitive avoir exactement le même résultat, puisque le problème vient d'être résolu.
Du reste, n'importe quel quidam qui passerait par là comprendrait sans trop d'efforts que c'est bien job75 qui a résolu le problème.
J'ai vu dans mon existence des aberrations pires...
 
Haut Bas