XL 2010 Problème de Combobox

Nicodemius

XLDnaute Nouveau
Bonjour à tous.
J'espère que tout le monde va bien malgré ce maudit confinement qui pèse à vous comme à moi.
J'aimerais, aujourd'hui vous exposer un petit problème de combobox que je n'ai toujours pas encore réussi à résoudre.
Je tacherai de progresser pas à pas pour que vous puissiez comprendre mon petit problème.

Mon classeur Excel comporte 2 feuilles :

Feuil1
Type
Fruit
Legume
Poisson


Feuil2
Type Aliment
Fruit Banane
Legume Carotte
Poisson Morue
Fruit Orange
Legume Haricot
Poisson Sole
Fruit Citron
Legume Kiwi
Poisson Daurade
Fruit Cerise
Legume Ail
Poisson Lotte
Fruit Clementine
Legume Radis
Poisson Saumon
Fruit Pomme
Fruit Poire
Fruit Ananas


Mon Userform comporte juste 2 combobox :
- combobox1 pour les types
- combobox2 pour les Aliments

Peupler les combobox n'est pas un problème.
Une première procédure (PeuplerType) renseigne combobox1
La seconde combobox est alimentée par une variable Tableau.

Au lancement de mon Userform,
Si je sélectionne un type, ma combobox2 filtre en fonction du type choisi.
Jusqu'ici, tout va bien.
Si je ne sélectionne aucun type, ma combobox2 affiche tous les Aliments.
C'est ce que je voulais.

A partir de là, je souhaiterais, lorsque ma Combobox1 est vide et que je sélectionne un aliment dans ma Combobox2, que ma combobox1 se mette à jour.
J'utilise donc une fonction qui va interroger ma variable Tableau ainsi qu'un bout de code sur l'évenement "Change" de ma Combobox2.

Ma Combobox1 se met bien à jour mais le soucis c'est que ma Combobox2 reste vide.
Le soucis vient de ma ligne de code ComboBox2.Clear dans mon Sub PeuplerAliments, qui vide celle-ci avant de la peupler.
J'ai beau tout essayer, pas moyen de contourner le problème.
Je suis certain que c'est ultra bateau et j'ai vraiment honte de faire appel à la communauté pour si peu. Mais là, franchement, je sèche.

Si une âme sensible aurait quelque suggestion à me soumettre, je lui en serait reconnaissant.

Bonne soirée à tous et longue vie à Excel.
 

Pièces jointes

  • MonCode_1.txt
    2 KB · Affichages: 15
  • MonCode_2.txt
    484 bytes · Affichages: 7

Dranreb

XLDnaute Barbatruc
Bonsoir laurent950
ComboBoxLiées est un type d'objet à évènements qui se comporte un peu comme une seule ComboBox mais en compilant les choix effectués dans plusieurs dont on lui confie la charge par des appel à sa méthode Add dans la Sub UserForm_Initialize. Il n'a pas de propriété ListIndex mais renvoie dans une procédure _Résultat un tableau Lignes de la liste des numéros des lignes dans la base à consulter qui comportent les choix effectués dans certaines. Il y a une grande page d'aide qui détaille tout ça. Il s'occupe d'établir les listes classées et sans doublon pour les ComboBox dont il a la charge.
 

Nicodemius

XLDnaute Nouveau
Bonsoir,
Merci Dranreb, je vais y jeter un coup d'oeil au plus vite.
Mais sans vouloir faire le difficile, j'aimerais tout d'abord comprendre et corriger mon erreur avant d'intégrer des modules que je maitrise pas.
Je cherche déjà à savoir quelle erreur grossière j'aurais pu faire.
Cela me parait assez simple à expliquer sur le papier, mais je ne comprends pas quelle erreur logique j'ai pu commettre.
 

Dranreb

XLDnaute Barbatruc
Je ne peux pas déboguer des fichiers textes.
Ce que je vois c'est que les chargements des listes et du tableau ne sont pas optimisés. On peut généralement le faire en une seule instruction.
L'objet ComboBoxLiées n'a plus besoin de faire de recherche dans la base pour déterminer la liste des numéros de lignes en correspondance: lors de l'établissement les listes classées et sans doublon par sa méthode Actualiser il note aussi les numéros des lignes contenant chaque valeur. Ensuite, lorsque les ComboBox changent, il ne lui reste plus qu'à combiner ces listes de numéros de lignes, extrayant simplement ceux présents partout.
Je pourrais naturellement vous aider à le mettre en œuvre sur votre classeur.
 

Nicodemius

XLDnaute Nouveau
Bonjour à tous.
N'en déplaise à certain, je vous joint mon fichier Excel afin que vous puissiez plus aisément cerner mon petit soucis.
Dranreb, Merci encore pour ton travail. Je vais tester et mettre en pratique et reviendrait vers toi dés que possible.

Bon Dimanche à tous.
 

Pièces jointes

  • Test_2CBO.xlsm
    20.6 KB · Affichages: 4

Dranreb

XLDnaute Barbatruc
@Nicodemius, maintenant je peux vous dire que la modification de ComboBox1.Value par la Sub ComboBox2_Change provoque l'exécution de la ComboBox1_Change qui exécute PeuplerAliments, laquelle commence par faire un ComboBox2.Clear !
Vous n'allez quand même pas réinventer la poudre en faisant comme l'objet ComboBoxLiées qui s'est aussi heurté à ce genre de problème à sa mise au point. Alors il a une Private NePasExécuterChange As Boolean qu'il met à True avant de changer lui même une ComboBox, et dans la _Change il commence par If NePasExécuterChange Then Exit Sub

Parce qu'en effet l'objet ComboBoxLiées aussi garnit automatiquement toutes les ComboBox à sa charge qui n'ont plus qu'un seul choix possible, sauf option expresse de ne pas le faire lui ayant été spécifiée.
 

Discussions similaires

Réponses
10
Affichages
371

Statistiques des forums

Discussions
312 103
Messages
2 085 324
Membres
102 862
dernier inscrit
Emma35400