Liste déroulante filtrée

Bonjour tout le monde,

Ci joint vous trouverez le fichier excel en question. pour info j'ai la version 2013.

Pré ambule :

Dans ce document j'ai 3 feuilles

La première : Est une base de donnée de prestations, celle-ci doit être souple et modifiable en tout temps. (cette info sera utile par la suite)

La seconde : Est une feuille rapidement créer afin d'y représenter un tableau avec des lots (je vous donnerai son utilité plus tard)

La dernière feuille : On pourrait dire que c'est comme un devis qui prends les infos de la base de donnée.

Ma requête :

Je souhaiterai avoir dans la feuille devis, dans la colonne "Lot", quand je sélectionne un numéro de lot via la liste déroulante déjà créée, que dans la liste déroulante de la colonne sur sa droite qui se nomme "Article" montre que les articles correspondants au n° de lot en question.

En effet quand vous regardez dans la base de donnée chaque article est lié à un numéro de lot.

Le but de la manœuvre est d'avoir une base de donnée qui aura des milliers de lignes, cela permettrait de pouvoir pré-filtré la liste déroulante afin de ne pas augmenter le temps de recherche dans celle-ci pour trouver le bon article.

Je sais à l'avance que l'on va me proposer de créer plusieurs tableaux, un par lot. Cette solution j'aimerai l'éviter afin d'avoir qu'une seule base de donné, simple intuitive pour tout utilisateur et ne pas faire une usine à gaz.

J'aurai également un seconde requête :

J'ai trouver comment faire une liste déroulante à saisi semi automatique, (en inscrivant les premières lettres à la main afin d'également pré-filtrer cette liste), j'aimerai savoir si il est possible d'avoir la même chose mais avec un effet de recherche à la place.

Je m'explique :

Actuellement les articles sont des numéros, par contre par la suite cela sera du texte, pas tout le monde peut connaitre par cœur le texte de chaque article.

Par exemple : quelqu’un peut aussi bien rentrer l'article "Le gâteau au chocolat" ou alors "Gâteau au chocolat"

En conclusion la saisie des premières lettres est d'aucune utilité.

Je souhaiterai si l'on tape par exemple "cho" que la liste déroulante montre tout les articles où le mot "cho" est trouvable, comme par exemple : chocolat / choux / cachot etc.....

Et si j'abuse un peu ^^ le top du top serait également d'avoir la possibilité avec cette recherche d'avoir des mots composés.

Comme par exemple si je tape "teau cho" que la liste déroulante me montre tous les articles où il trouve ces deux termes comme par exemple : gâteau au chocolat / cachot du château etc....

Voilà, j'espère avoir été assez explicite, et je vous remercie d'avance de votre participation.

Cordialement

410essais.xlsx (20.64 Ko)

Un systeme de filtration a adapter...

1'251test-filtre-vba.xlsm (28.78 Ko)

Bonjour,

Merci pour la réponse, cela fait appel à du VBA, chose que je n'ai pas touché pendant des années, je suis très rouillé.

Je préfèrerai si possible de ne pas passer par VBA pour ce premier document, par manque de temps il faut que je le monte très rapidement pour qu'il soit fonctionnel dans les plus brefs délais.

Je sais pas si possible sans passer par la voix VBA.

Voici peut être une piste, je ne sais pas si cela est faisable :

Une liste déroulante fait appel à une fonction.

Le problème d'une fonction c'est qu'elle fait appel à une plage de cellule. Tout est ok si on fait appel à une colonne, et que c'est colonne doit bel et bien faire partie intégrante de la liste déroulante.

En revanche si dans cette même colonne certaine ligne et non successive doivent être nommé dans une fonction et d’autre ligne dans une autre fonction, comment faire pour que la fonction soit dynamique, afin que si l'on rajoute une ligne dans la base de donnée que celle-ci soit directement intégrer dans une fonction et surtout dans la bonne fonction vis à vis de sa famille, pour mon cas vis à vis de son n° de lot.

En résumé ma piste peut être à explorer est :

Saisir des fonctions dynamiques afin qu'elles prennent en considération les nouvelles lignes insérées dans la base de données, et surtout que cette nouvelle ligne soit intégrer dans la bonne fonction vis à vis de sa famille.

La grande question également est : peut-on avoir une fonction faisant appel à des lignes qui ne se suivent pas dans la base de donnée ? En effet vue que la base de donnée sera régulièrement modifié, le classement par ordre alphabétique n'est de loin pas garantie au fil du temps.

Cordialement

Saisir des fonctions dynamiques

en feuil1, tu peux ajouter des lignes, elles seront prise en compte

peut-on avoir une fonction faisant appel à des lignes qui ne se suivent pas dans la base de donnée ?

j'appelle un filtre avancé par macro sur la feuil1 et il copie les résultat en feuil 2 et l'installe dans la combobox2

Je préfèrerai si possible de ne pas passer par VBA

les listes filtrées par excel, je sais pas faire dsl...

Bon j'ai créé une nouvelle feuille qui comporte un autre tableau "formules" (qui ne bougera plus ensuite) le tout sans macro,c'est ca que tu veux ?

j'ai supprimer les filtres (je les remplace par les miens ), ce n'est pas interactive mais ca marche et cela peut te faire gagner du temps

Pour ne pas avoir dans la liste de choix plusieurs fois les mêmes propositions tu peux faire une liste unique des lots, dis moi si ca te convient et si je peux l'améliorer

527essaisjide.xlsx (25.28 Ko)

Bonjour Jide

Je crois que l'on touche à une solution.

Je suis encore entrain de décortiquer ton document, mais je me mélange les pinceaux

Je vois que cela fonctionne si ce n'est qu'on a les n° de lots qui se répète dans la liste déroulante de la feuille "n° lot"

Là où j'ai du mal de tous saisir c'est ta base qui est présente dans la feuille "formules"

Arriverai-tu à démonter cet exemple en utilisant la feuille "devis" au lieu de la feuille "n° lot"

De ne pas avoir de doublon dans la liste déroulante ou l'on doit sélectionner le numéro de lot

Dans ton précédent message tu me dis :

j'ai supprimer les filtres (je les remplace par les miens ), ce n'est pas interactive mais ca marche et cela peut te faire gagner du temps

J'ai du mal à comprendre cela pourrait tu m'éclairer.

Je te remercie du temps que tu y consacre.

++

hello, j'ai supprimer les filtres que tu avais crée (ceux d'excel), quand je dis que je les remplace par les miens, c'est une facon de parler, comme ca je contrôle ce que je veux (j'essaye), en fait je me sert de l'onglet donnée puis validation de donnée et je choisis la fonction liste, pour ne pas avoir de ligne double (car excel prends toutes les données dans le tableau), il suffit de créé un tableau avec les nom de lot (lot A, lot B etc...) > que l'on peut nommé "lots"

Mon raisonnement (je vais essayé d'^tre clair) :

En partant de la recherche des lots, je la compare à la première colonne qui comprend les noms de lot (lignelot dans mon exemple)

si je trouvre une équivalence je récupère la ligne donc ca donne:

=si( recherche =lignelot ; reflig ; "") > si recherche= lignelot alors afficher la ref de la ligne

Donc j'ai dans un 1er temps sélectionné les lignes qui m’intéressent avec une serie de N° (les index)

je me sert ensuite de la formule petite.valeur pour tout reclasser

=petite.valeur("résultat de ma 1ere recherche" ; 1) > je cherche le n°de ligne de la la 1ere grande valeur > ca me remet en place en haut du tableau les N° de ligne

Ensuite la formule index me donne la valeur de la colonne qui m’intéresse sur les N° de ligne que j'ai trouvé

J'ai inséré une autre formule qui dit que si le résultat est une erreur il ne faut rien afficher (ce qui double la formule générale)

exemple sur un classeur avec les détails de mon raisonnement si je ne suis pas assez clair

>>>>Ta feuille "Devis" contient des cellules fusionné et du coup je ne peux pas sélectionner la colonne des articles !

Edit : ton classeur avec le changement de feuille (lot et devis inversé) j'ai supprimé les cellules fusionnées

365essaisjide2.xlsx (27.17 Ko)

Merci Jide

Ton fichier d'explication est très explicite, à un tel point que j'ai tout compris.

Là je vais me coller sur l'adaptation de tes manipulations sur ma base de donnée et mes besoins.

Le but ultime est que dans la feuille devis, sur chacune des lignes dans la colonne lot je fasse un choix via la liste déroulante, ensuite sur la colonne article que je fasse le choix de l'article qui est préalablement filtré vis à vis du numéro de lot précédemment sélectionné.

Par la suite je vais rajouter une colonne dans cette feuille devis pour avoir encore un filtre supplémentaire avec des sous catégories pour les articles, afin de pouvoir encore assainir la liste déroulante article.

En effet je viens de faire mon calcul et j'aurais pour commencer 500 articles environs dans ma base de donnée, d'où le but de présélectionner des lots et des sous catégories "que l'on pourrait comparer à des familles" vis à vis des articles.

Je vais devoir faire marcher à fond la matière grise ^^ comprendre est une chose, l'appliquer en est une autre surtout quand on doit l'adapter à un fichier déjà avancé.

Je te tiens au courant de l'évolution

Merci encore

Bonsoir JIDE,

Après de longue manipulation, je remarque que cette solution à un problème vis à vis ma volonté de fonctionnement.

Je m'explique :

Tout marche niquel dans ta méthode, surtout quand je regarde ton fichier d'explication (pair / impair) qui représente bien le genre de filtre que je souhaite utiliser vis à vis de mes numéros de lot.

En revanche cette méthode fonctionne uniquement avec un seul choix, c'est à dire une seule liste déroulante destinée à filtrer.

Si tu regardes ton fichier d'explication (pair / impair) en B7 tu as qu'une seule liste déroulante pour faire le choix de filtre.

Donc tout ce qui suit fonctionne, en revanche si je rajoute une deuxième liste déroulante (ce qui sera le cas quand je fais un devis, étant donné que j'aurai plusieurs lignes, en sachant qu'un devis comporte plusieurs prestations. Cela ne fonctionnera plus, car tes colonnes qui recherche la similitude entre le choix définit dans la liste déroulante et la base de donnée fait référence qu'à une seule cellule, la B7.

Si tu regardes ma feuille devis

A la ligne 5 j'ai une première ligne de prestation

Dans la cellule A5 j'ai la liste déroulante pour faire le choix du n° de lot

Dans la cellule B5 je souhaite avoir la liste déroulante des articles filtrés vis à vis du n° de lot

Ensuite pour les Cellules C5 / D5 / E5 / G5 / H5 / I5 / L5 elles se remplissent automatiquement en reprenant les informations propres de l'article sélectionné vis à vis de la base de donnée. Ceci se fait grâce à ce genre de formule :

=SI(ESTVIDE(B5);"";INDEX(BD;EQUIV(B5;article;0);COLONNE(description)))

La cellule F5 doit être remplit manuellement étant donné que c'est la quantité, cela est variable.

Les cellules J5 / K5 /M5 se calculent automatiquement via des multiplications inter-cellulaire dont les infos on été mis automatiquement.

En conclusion : si j'utilise ta méthode tel quelle, je peux faire fonctionner ce filtre pour cette ligne via le choix effectué sur la liste déroulante de la cellule A5, bien entendu pour que cela fonctionne je dois dans tes formules faire référence à cette cellule afin qu'elles puissent comparer la similitude du numéro de lot.

Mais voila, ma première ligne serait ok,, la prestation insérée, et je souhaite passer à la seconde ligne, soit la ligne A6.

Et la blocage, plus rien ne fonctionnerai, sinon je devrais de nouveau modifier tes formules afin qu'elles prennent en référence le choix effectué dans la liste déroulante de la cellule A6.

J'espère que tu arrives à comprendre la problématique que j’essaie d'expliquer.

J'essaie de voir quelle amélioration apporter à ton début de solution, mais je ne trouve pas.

Si j'use de ma pensée simpliste, il faudrait (si faisable) que tes colonnes qui contrôle la similitude et qui met en relation les références ainsi que le tri en ordre croissant, soit dynamique.

C'est à dire, quand un choix (le dernier en date) est effectué dans une des liste déroulante, que celle-ci modifie directement les formules de tes colonnes (que j’appellerai colonne de contrôle ou de filtre) afin qu'elles mettent en référence la cellule de la "dite" liste déroulante où le dernier choix a été effectué.

Dis moi si tu arrives à comprendre tous ce pavé que je viens d'écrire ^^

Merci d'avance et je te souhaite une bonne soirée

Salut la je viens de me lever donc mes neurones ne sont pas encore en place mais si j'ai bien compris ma méthode marche si on part d'un 1er choix puis on peu décaler sur une deuxième colonne etc... en créant un tableau de référence à chaque fois dans la feuille "calcule", c'est la logique même; bien sûr si on veux choisir par exemple la 3eme colonnes alors que la première n'a pas été filtrée cela ne peut pas marcher; il faut le faire dans l'ordre c'est pour ca que j'ai écrit une ligne info qui cherche si les valeurs sont présentent dans la liste; c'est ce que tu avait demandé et le tout sans vba

Si tu veux faire des modifications de ces données ce n'est pas possible via les filtres car il sont là à titre d'info. Tu veux que ta bdd soit modifiable ? Mais au début je croyais que c'était uniquement une base de donnée de référence puis ensuite tu as changé sur la feuille devis...

Personnellement à ta place j'aurais fait ce filtre sur une bdd des N° de lot qui elle n'est pas modifiable dans un devis ou autre pour choisir un article et avoir ces références puis ensuite insérer ces infos dans une page devis avec les calculs de prix de quantité etc... puis ensuite les insérer dans une page "historique des ventes" mais a un moment donnée tu seras obligé d'y insérer un minimum de vba, si tu n'aimes pas cette option tu n'est pas obligé d y insérer des tonnes de code mais juste quelques lignes qui feront les copies des infos, des devis et qui insérera le tout dans l'historique

Edit : voilà un modèle que j'ai crée avec 3 colonnes, la recherche débute sur le 1er onglet (lots) puis vient ensuite les articles puis les références, j'ai modifié mes formules : maintenant il y a une gérance des doublons (feuille doublon) qui sert à afficher qu'une seule valeur unique dans chaque proposition de liste. Le tout ce fait sans macro et se fait automatiquement

Salut Jide,

Je pense qu'il y a un quiproquo, je ne sais pas si on parle bien de mon problème présenté lors de mon dernier message,

Tu me dis :

Si tu veux faire des modifications de ces données ce n'est pas possible via les filtres car il sont là à titre d'info. Tu veux que ta bdd soit modifiable ? Mais au début je croyais que c'était uniquement une base de donnée de référence puis ensuite tu as changé sur la feuille devis...

non, non, mille milliards de mille sabords , ce n'est pas du tout le cas, je ne veux pas modifier les données de ma BD via ma feuille devis. Enfin tous est relatif, la BD est là comme sont nom l'indique BD, qui pourrait par la suite avoir des lignes supplémentaires si il y a une extension de prestations, mais en aucun je veux modifier les informations d'un articles présents dans la BD via la feuille devis.

Je souhaiterai via la feuille devis sélectionner un article qui est stocké dans ma BD. Ça je sais le faire, par contre si je mets une simple liste déroulante qui représente les articles de la BD, cela me mettra des 100ène de lignes, donc je me suis imaginé de mettre plusieurs listes déroulantes dans ma feuille devis, afin de faire un choix de lot, un choix de sous-catégories pour assainir la liste déroulante démontrant les articles.

Mais peut être que c'est cela quand tu me dis "modifier la base de donnée par la feuille devis" ???

Pour le VBA je ne suis pas contre à 100% la seule chose c'est que je ne peux pas me permettre d'adapter un code énorme qui me prendrai trop de temps pour un vieux rouillé comme moi. Par contre quand tous roulera et que j'ai un poil de temps devant moi, je me remettrai au VBA à 100%.

Donc en conclusion :

Je demandais si il étais possible de :

quand un choix (le dernier en date) est effectué dans une des liste déroulante, que celle-ci modifie directement les formules de tes colonnes (que j’appellerai colonne de contrôle ou de filtre) afin qu'elles mettent en référence la cellule de la "dite" liste déroulante où le dernier choix a été effectué.

Sinon durant la nuit j'ai pensé, à modifier ma vision sur la méthode de sélection d'article,

Je pourrais avoir tous en haut du document par exemple une ligne complet de liste déroulante avec à la fin un bouton "insérer"

Par exemble :

"Filtre LOT" ensuite "Filtre Catégorie" ensuite "Article" ensuite "INSERER"

Si je décris le principe :

Je fais un choix de lot

Je fais un choix de catégorie

Je fais mon choix d'article

Ensuite je clique sur le bouton "Insérer" afin que les informations de l'article en question qui sont présentent dans la BD soit directement insérées dans le document devis.

En revanche il faudrait pourvoir indiquer au bouton "insérer" la ligne, voir même la cellule où il doit commencer son insertion d'informations.

En effet si je veux rajouter un article entre deux articles déjà présents, je peux faire un clique droit et cliquer sur insérer une ligne, donc il ne faudrait pas que le bouton "insérer" ait par défaut l'insertion des informations à la fin de la feuille devis.

Et si je pousse le bouchon : il faudrait, " le must", que le les articles se trient automatiquement par ordre alphabétique, que cette tache s'effectue à chaque insertion de nouvel article. Par contre la complexité, car il le faut bien :

Mes articles seront présenté dans des chapitres et des sous chapitres dans mon document devis, et il n'y aura pas forcément le même nombre d'article dans chaque sous chapitre.

Par exemple :

200.00 Système de refroidissement

Article

Article Par d'erreur il pourra également avoir des articles dans des chapitres sans avoir de sous chapitre.

200.10 Machines de froid

Article

Article

Article

200.10 Machines de froid - Total

200.20 Free cooling

Article

Article

Article

200.20 Free cooling - Total

200.00 Système de refroidissement - Total

300.00 Système de chauffage

300.10 PAC

Article

Article

Article

300.10 PAC - Total

300.20 Distribution

Article

Article

Article

300.20 Distribution - Total

300.00 Système de chauffage - Total

Je suis bien conscient que cette proposition que je fais fera obligatoirement appel à du VBA....

Je suis prêt ^^

Donne moi ton avis, merci d'avance et je te souhaite une bonne journée

Eh ben !!

Tu souhaites prendre une ligne de la bdd (un N° de lot) et l’insérer dans la feuille DEVIS ou tu souhaites insérer plusieurs lignes ?

Comment savoir ou déposer la ligne (ou les lignes) dans le devis ?

Comment savoir si par exemple dans la catégorie "200.10 Machines de froid" il y' a 3 articles ?

J'avoue que je ne comprends pas tout, ton choix de départ se fait en commençant par les articles ou les lots ???

Rechercher des sujets similaires à "liste deroulante filtree"