Code combobox en cascade

Bonjour,

Je cherche depuis plusieurs jours le code pour pouvoir alimenter des combobox en cascade afin de pouvoir effectuer une recherche fine (comme à l'aide des filtres sous excel -filtre colonne X puis filtre colonne Y, puis filtre colonne Z).

Une feuille dénommé "Etaré" est alimentée par l'userform.

Je souhaite pouvoir rechercher une ligne de la feuille "Etaré" est l'afficher dans l'userform pour pouvoir la consulter ou la modifier.

Dans la frame recherche de mon userform, je souhaite pouvoir utiliser jusqu'à 4 critères. 2 combobox par critère (1 pour le type de critère l'autre pour le critère) (Type de critère = entête de colonne feuille "Etaré" et critère = éléments saisi dans la colonne correspondante)

j'ai trouvé le code pour avoir la liste de mes types de critères dans chaque combobox.

Je ne sais pas programmer le code afin que la 2ème combobox de chaque critère soit alimentée sans doublons en fonction du type de critère retenu dans la combobox du dessus. Et ainsi de suite pour le 2ème, 3ème et 4ème critère.

Egalement, je souhaite que le 2ème critère prenne en compte uniquement les éléments "filtrés" par le 1er critère et ainsi de suite.

je souhaite pouvoir utiliser soit 1 soit 2 soit 3 ou 4 critères et les afficher dans la textbox en dessous.

Voilà, j'espère avoir été explicite et j'espère que vous pourrez me donner un coup de main.

Merci

Freddy

80essai-vba-etare.xlsm (231.17 Ko)

bonsoir Freedy1972

commence par regarder en bas de ce post les fichiers pour voir si ca peut t'aider

Bonjour à tous,

Personnellement pour lier des ComboBox, j'utilise une méthode "par tableau", simple et efficace, qui ne limite pas le nombre de niveaux de cascade.

La méthode est décrite ici =>http://tatiak.canalblog.com/archives/2016/11/20/34588035.html

(avec module "Tblo" réutilisable dans tout projet par simple copier/coller)

Pierre

Bonsoir,

Merci à grisan29 mais je n'ai pas trouvé ce que je cherchais dans le lien

Pierrep56, je pense que ta méthode avec les tableaux pourrait correspondre mais je n'arrive pas à l'adapter à mon fichier. Il faut dire que je débute VBA et que je tâtonne beaucoup.

En fait j'ai des combobox en cascade mais à chaque niveau il faut choisir le critère de tri, et c'est ça que je n'arrive pas à programmer.

J'ai pourtant essayé de remplacer les entêtes de ton fichier par les valeurs des combobx de "choix de critère" mais rien n'y fait...

Quelle est la methode pour l'adapter à mon fichier

Je vous remercie

Freddy

Salut Freddy,

Voici ton fichier en retour avec les combo liées.

J'ai mis ton code originel de l'USF en stand-by pour ne pas interférer avec la méthode "tableau" utilisée ici.

Cette méthode permet un affichage de la fiche trouvée dès que la sélection est égale à une seule fiche. Ce qui rend tes boutons "Rechercher" et "Afficher" inutiles.

A noter, je n'ai pas trouvé le contrôle Combobox2, ni le Textbox32 (est-ce que je les ai effacé par erreur?)

Souhaitant que ça te convienne

Pierre

227essai-vba-etare.xlsm (223.57 Ko)

Bonjour Pierre,

je te remercie pour l'adaptation de ta méthode à mon fichier. L'alimentation des combobox fonctionne parfaitement si ce n'est l'ordre croissant (pour les N° Etaré) qui permettrait de faciliter la recherche. mais ça c'est un détail...

Mon fichier actuel (sans formulaire pour le moment) est composé de plus de 2000 lignes, il se peut donc, qu'en fonction des filtres choisis dans les 4 combobox, il y ai plusieurs lignes ayant les mêmes données donc pas de possibilité de les afficher sur le formulaire.

L'idée serait donc, comme indiqué dans mon 1er post, qu'au bout de 1, 2, 3 ou 4 filtrages, les lignes où tous les filtres sont communs soient affichés dans la listbox. Ensuite, soit par un double-clic sur la ligne choisie, soit par selection de la ligne puis appui sur un bouton, toutes les données correspondantes soient affichées dans le formulaire. Toutes les colonnes du tableau ne sont pas nécessaires dans cette Listbox mais à minima les colonnes A, B, D, E, F, G, T, W, AC, AD, AT et AX

Tu as mis tous mes codes en stand-by: y-a-t-il une incompatibilité entre la méthode tableau pour la fonction recherche et tous les codes que j'ai réalisé pour faire fonctionner mon formulaire en mode création de fiche?

Le "combobox"2 est remommé "combobox_commune" et le "textbox32" est en fait le "textbox42"

Quelle est la méthode pour modifier afin que ça corresponde à mes besoins?

Je te remercie pour ta réponse et surtout de ton aide car je ne trouve pas grand chose correspondant à mon besoin sur le net.

Freddy

Ok Freddy,

Plusieurs points :

* ordre n° Etaré : tant que la colonne mélange des données au format texte et des données au format nombre, l'ordre ne sera pas possible. Mais ça c'est un détail...

* dans ton fichier d'origine, il n'y a pas de listbox, autre détail...

* A mon avis, ce n'est pas une bonne solution de mélanger dans un même userform la recherche et la fiche de données. Ce serait pour moi, je ferais :

1/ un usf "liste" => recherche avec filtre et listbox

2/ un usf "fiche" qui s'ouvre et se complète suite à un clic sur une ligne de la listbox de l'usf "liste"

=> voir proposition dans fichier joint

* J'ai mis ton code en stand-by car pas motivé pour le vérifier, je t'en laisse le soin. Mon intervention n'a uniquement pour but de t'indiquer un moyen de mettre en oeuvre une liaison entre Combobox.

* Enfin un conseil, si je peux me permettre : dans un code d'environ 800 lignes, on gagne à bien le structurer. Ca en facilite la lecture et le débugage. Mais ça aussi c'est un détail...

Bon courage pour la suite de ton projet,

Pierre

Bonsoir Pierre,

Je te remercie de ton expertise en la matière. Le fichier fonctionne , dans l'esprit, comme je l'avais imaginé.

j'ai suivi ton conseil et utilise donc 2 userform distincts. j'ai également regroupé mes codes par fonction --> meilleure lisibilité.

Je debute et c'est important d'avoir des conseils avisés

Il me reste encore du travail pour regler plusieurs "détails" et améliorer le projet.

au plaisir de te lire sur les posts ou ton blog

Freddy

Rechercher des sujets similaires à "code combobox cascade"