Actualisation 16 listbox

Bonjour a tous,

J'ai 16 ListBox par recherche incrémentale multicritères, a chaque critères sélectionnées dans une ou plusieurs ListBox, je souhaiterais que l'ensemble des autres ListBox se mettent a jour en critères, comme les filtres Excel.

Pouvez-vous m'aider ?

A+

Bonjour benji77,

Voir fichier joint. Comme dans Excel, par défaut tous les éléments sont sélectionnés et le filtrage se fait par (dé)sélection des éléments. Je te laisse voir si dans le principe général cela répond à ton besoin en sachant qu'il reste 2 interrogations, l'une au volume réel des données qui pourraient dégrader les temps de réponse et rendre la solution inutilisable, l'autre un dysfonctionnement que je n'ai pour l'instant pas résolu (parfois il faut cliquer 2 fois dans la ListBox pour décocher un élément).

Il y a sûrement de meilleures solutions et elles m'intéresseraient aussi

Cdlt,

Cylfo

Bonjour Cylfo,

Merci pour vos solutions.

C'est exactement cela, mais il faudrait pas défaut que les critères soient désélectionnes. J'aurais plusieurs dizaine de millers de lignes et je pense que le fait de désélectionner les critères pour avoir le bon critère sélectionne prendra énormément de temps de manipulations. Est ce possible de faire le contraire?

Vous avez aussi raison sur le fait que parfois il faut cliquer 2 fois sur le critère pour le sélectionner ou le désélectionner.

Merci encore pour votre excellent travail.

@+

Bonjour,

Pouvez-vous me préciser le volume maxi attendu pour pouvoir tester mais avec plusieurs dizaines de milliers de lignes, la solution proposée ci-dessous n'est pas viable.

Je peux regarder pour partir des critères désélectionnés mais au niveau du fonctionnement attendu cela pose une question : lorsqu'un item est sélectionné dans une ListBox (exemple dans la ChoixListBox4) : Faut-il supprimer dans les ListBox en aval les valeurs qui ne sont pas cohérentes avec le filtre de la ListBox (ici la 4) ? Sinon on ne sait pas dans ces autres ListBox les valeurs qui sont cohérentes avec la valeur filtrée ... ce qui revient au moins au même (peut-être plus complexe) que de défiltrer.

bonjour,

j'avais créé une liste de 50.000 lignes et 30 colonnes avec dans chaque colonne 10.000 valeurs uniques, mais ce fichier était 5MB, donc trop grand pour ce site.

Maintenant un fichier tout petit, 10.000 lignes * 11 colonnes et dès 10.000 lignes 200 lignes sont visibles = filtrées !!!

La macro crée en dessous cette plage une plage auxiliaire avec pour chaque colonne les valeurs uniques et triées. Pour ces 50K lignes*30 colonnes, cela était en 2 sec.

Puis cette plage auxiliaire est vidé.

@Cylof, jJe vois plusieurs "transpose" dans vos macros. Cela cause des problèmes à partir de 65K, mais j'ai déjà eu des problèmes avec 30K. Donc plusieurs milliers, c'est combien <16K , <32K , <64K ou >64K ?

1850k.zip (518.89 Ko)

Bonjour Cylfo et BsAlv,

Je préfère dire quelques dizaine de milliers. La BDD sera evolutive dans le temps et je ne sais ce que cela représentera dans 10 ans en termes de volumes de données, je n'ai donc pas de maximum, no limit !

Pour le moment je suis a 3000 lignes de données... et cela va évoluer !

Oui en effet, si vous cliquer sur un ou plusieurs critères dans la ListBox 4 par exemple cela doit changer les critères des autres ListBox (ceux en aval aussi) et ne laisser que les critères associes au choix de la ListBox4. Comme vous l'avez mentionne, supprimer les critères qui ne correspondent pas aux critères sélectionnés.

Merci encore a tous les deux.

A+

Bonjour,

BsAlv et merci , c'est bon à savoir, je n'ai jamais été confronté au problème, j'utilise peu Transpose et pas sur de gros volumes de données.

benji77,

Transpose est utilisé (x3) dans la macro "liste_triée_sans_doublons" présente dans le fichier d'origine, je vous laisse modifier la fonction si vous le souhaitez. Je regarde pour les LisBox de filtrage ...

Cdlt

Bonjour Cylfo et BsAlv,

Merci a tous les deux d'avoir prêter attention a mon fichier.

J'ai modifie la fonction et j'ai ce message d'erreur:

En fait avec cette function, il me copie en double mon tableau, je comprends pas!

image

a+

Bonjour,

Sans le fichier avec le code modifié, cela va être difficile de te répondre ...

Cdlt,

Cylfo

Re,

Voici le fichier.

Je n'ai pas compris cette fonction ...

a+

Bonjour benji77,

Concernant l'utilisation de la fonction Transpose, pour l'instant tu es assez loin du seuil mentionné par BsAlv, je regarderai après avoir trouvé une solution pour les ListBox (enfin si je trouve ... car pour l'instant ça rame !)

Par contre j'ai une question en lien avec ton autre post sur l'utilisation simultanée de 2 formulaires qui semble concerner le même fichier. Parmi les 2 formulaires, celui aux 16 ListBox de filtrage est-il concerné ?

Si oui, cela signifie que les données de base peuvent évoluer en cours d'utilisation du formulaire car il ne sera plus Modal ... ce qui ne va probablement pas simplifier le problème ...

Cdlt,

Cylfo

bonjour Cylfo,

oui, j’ai trouvé la solution pour les afficher en même temps, un sur l’ecran de gauche et l’autre sur l’écran de droite.

Oui les 2 formulaires seront liées sur 2 critères.je suis en train de voir comment mettre cela en place, il y’aura une mappemonde, genre Google Earth.

À lundi

Cdlt

Benji77

Bonjour Cylfo,

As tu trouve une solution?

@+

Bonjour benji77,

Non, pas de solution qui soit suffisamment performante, ça rame trop. Mais je n'ai pas abandonné .

Cdlt

Ok merci.

Trouver une fonction (bouton) qui désélectionne toutes les 16 ListBox d'un coup. Apres plus qu'a sélectionner chaque critères de chaque ListBox.

Je suis en train de crée mon autre formulaire. Il faut que je simplifie mes codes VBA maintenant.

A+

bonjour, j'ai déplacé le copie vers feuille "blad1" et modifiez le "initialize", mais je crains que je ne sais pas quelles colonnes correspondent avec telle listbox.

Donc il faut encore vérifier cela.

EDIT : j'ai oublié de dire qu'il y a une feuille nommée "Blad1" qui est cachée avec là-dedans une plage nommée "Test"

Bonjour BsAlv,

Ce que vous avez fait c'est pour en améliorer la fluidité du formulaire ?

Merci pour votre aide,

Cdlt

a+

re, oui, je pensais que cela était vos problème. On n'a qu'à utiliser cette macro une fois et puis mettre à jour les 16 listboxes avec ce résultat au lieu de 16 fois. Si 1 ou plusieurs listboxes sont filtré, alors il faut filtrer votre BDD aussi avant de lancer cette macro. Si vous utilisez vos 2 UFs en même temps; alors la même chose.

Je l'ai mis dans une autre feuille parce que, je ne sais pas pourquoi, mais le tableau aujoutait des lignes vides quelque part dans une autre macro.

Bonsoir benji77,

J'ai une question : ta demande est de partir de listes de filtrage où les valeurs ne sont pas cochées. Dans ce cas, est-ce que cela signifie que tu ne coches qu'une seule valeur par liste de filtre ?

Je m'explique, si dans une même liste tu coches 2 valeurs, dans les listes en aval tu obtiens les valeurs qui correspondent aux 2 sélections et ce, que les valeurs soient communes aux 2 valeurs cochées ou distinctes. Si après cela tu coches dans une liste en aval, une valeur qui n'est liée qu'à une des 2 valeurs initiales, il faut "remonter" dans les listes en amont pour décocher les choix qui ne sont plus cohérents.

Pour l'instant, je ne traite que la partie aval et je me demandais quel fonctionnement tu souhaitais exactement : ne pouvoir filtrer en cascade que sur une seule valeur par liste ou sur plusieurs valeurs par liste ?

J'ai constitué un fichier de 25000 lignes et c'est rapide mais il y a le souci lié à la sélection d'une valeur qui n'est pas cohérente avec toutes les valeurs amont déjà sélectionnées.

Cdlt,

Cylfo

Bonjour Cylfo,

ta demande est de partir de listes de filtrage où les valeurs ne sont pas cochées. Dans ce cas, est-ce que cela signifie que tu ne coches qu'une seule valeur par liste de filtre ?

Réponse:

Oui je pars de mes 16 Listbox ou les valeurs ne sont pas coches. Je peux cocher 1 ou plusieurs valeurs par Listbox si je le souhaite, c'est le but aussi. Dans chaque critère coche, ces memes critères sont lies aux autres critères des autres Listbox, cela met tout a jour et enlève les critères qui ne sont pas lies ensemble.

ne pouvoir filtrer en cascade que sur une seule valeur par liste ou sur plusieurs valeurs par liste ? Oui sur plusieurs valeurs par listes

Il faudrait que cela soit comme les filtres Excel, je désélectionne tout par colonne pour ne choisir le ou les critères que je souhaite, cela met a jour ainsi les critères des autres colonnes, ou pour ces derniers je désélectionne tout pour sélectionner le ou les critères que je souhaite, tous les criteres selectionnes sont liee les uns aux autres.

En te remerciant de ton soutien,

a+

Rechercher des sujets similaires à "actualisation listbox"