Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 filtres VBA multicritères complexes

youpi457032

XLDnaute Occasionnel
bonjour à tous !
Je suis nul en macro et j'ai vraiment besoin d'aide pour concrétiser un projet pro. L'idée de base c'est de connaître l'état du stock production en fonction des prévisions de commande clients. Je m'explique. Mon stock de production est mis à jour tous les jours dans une application tierce (d'où on tire des extractions excel).
J'ai plusieurs feuilles Jouplast, H40, H50, H80 et H180. Dans chaque feuille j'ai besoin d'un outil de filtrage identique qui trie sur 4 critères :
premier critère : un tri sur plage date pour la colonne date d'expédition
second critère : un sous filtrage (par case à cocher ou autre méthode) sur la colonne désignation
troisième critère : un sous filtrage ....... sur la colonne client
dernier critère : un sous filtrage .... sur la colonne quantité commandée.
J'ai créé le Userform pour l'idée de ce que je veux obtenir....
Le résultat des filtres doit s'inscrire dans le sous formulaire avec les dates sélectionnées, le client, la désignation, et surtout les quantités commandées
Ensuite : j ai besoin absolument de la somme des quantités commandées après filtrage ( très important ).
ensuite j ai besoin du rappel du stock par article filtré (colonne simul dispo tous dépôts)
puis la différence entre le stock par article qui figure en colonne simulation tous dépôts) et les quantités commandées. Ce qui me donnerai un solde théorique de mon stock disponible en fonction des commandes....
Enfin si c'est possible : j'aimerai que s'affiche une date prévisionnelle où mon stock passerai en négatif (sous zero par exemple) en fonction des prévisions de commande . En clair a partir de quelle date de commande mon stock passe sous zero ??

dernière petite sollicitation : une macro import qui me permettrait d'importer mes données extraites de mon outil gestion ( au format excel) où je pourrai venir écraser les données de mes feuilles. Idéalement cette macro devrai pouvoir me demander si je veux ecraser sous Jouplast ou H40, ou H50, ou H180
Je sais que ce n'est pas simple..... si quelqu'un, ou quelques uns pouvaient m'aider ce serait bien !!!
Merci à tous !

J'oubliai ..... peut être que dans mon user form.... dans les critères de filtre.... un critère premier (avant critère plage date) sur le choix de la feuille serait utile... Je choisirai en premier la feuille sur laquelle je veux filtrer, puis plage date, puis designation, puis client, puis quantité commandée. ( en fait 5 critères).... ou alors au plus simple mon userform tel quel avec un tri sur l'unique feuille 100 % qui est censée reprendre toutes les données des H40, H50, H180 et Jouplast.... donc plus simple...
 

Pièces jointes

  • projet filtrage complexe.xlsm
    297.4 KB · Affichages: 25

ChTi160

XLDnaute Barbatruc
Bonjour youpi57032
Bonjour le Fil (Bebere) ,le Forum

youpi57032 : Peux tu m'expliquer a quoi correspondent les Différentes Feuilles

Ex 100% et Jouplast ainsi Que H80 ?
au fait Combien de feuille Hxxx en tout ?
Car tu mets : J'ai plusieurs feuilles Jouplast, H40, H50, H80 et H180
et dans le fichier il y a H140 et 100%
quand tu parles de dates pour le Filtre
Doit on ne filtrer que sur les dates présentent (comme le fait Bebere) dans la colonne dates d'expédition ?
ou entre deux dates sélectionnées via un Calendrier ?
qu'entends tu par :
un sous filtrage (par case à cocher ou autre méthode) sur la colonne désignation
que veux tu pouvoir faire ? à partir de ce sous filtre ?

jean marie
 

youpi457032

XLDnaute Occasionnel
Merci bébère pour cette approche !
j'ai juste un petit souci ou deux...
après filtrage sur date il faudrait que filtrage sur désignation soit un sous filtre après date, ce qui n'est pas le cas dans ta démo. la plage date de filtrage ne doit pas bouger quand je sous filtre par désignation...
Ex : donne moi toutes les lambourdes H50 pour la période du 04 juin au 08 juin...., et pas les lambourdes H50 pour l'ensemble de la période.

pour le filtrage client :
je voudrai que le filtre fonctionne selon deux modes :
qu'il affiche par client et par désignation article les quantités commandées
ex : affiche pour le client "14" toutes les quantités commandées, avec un sous filtrage par désignation produit : pour ce client 14 toutes les quantités commandées dans la désignation article x

pour le filtrage quantité commandée :

filtrer sur la colonne K ou l ( c'est la même chose) et afficher les clients. Ca me permettrait de visualiser en fonction du stock dispo par code article de savoir qui livrer dans selon les quantités dispo...

pour le stock disponible à une date donnée :

A partir du filtre date, il faudrait arriver à faire le calcul suivant (les quantités stock tous dépôts) moins les toutes les quantités en commandes à date .
exemple : a date du 12 juin fais mois un état du stock réellement disponible en fonction des quantités commandées depuis le début date choisie.... jusqu'au 12 juin....
l'idée c'est de prévoir une relance de production en fonction de l'écart entre stock dispo et prevision de commandes. La colonne Article ( et pas désignation ) serait plus appropriée pour ce calcul. Puisque le code article est souvent le même pour des designations différentes.
D'ailleurs je voudrai changer dans le formulaire la recherche désignation ( colonne J par la colonne I ( article)

Merci d'avance !!!
enfin peux tu me donner la macro qui fait la somme des quantités commandées après filtrage et qui vient l'écrire dans le tex box adequat.
Merci d'avance pout ton travail que je salue !!!
 
Dernière édition:

youpi457032

XLDnaute Occasionnel

on abandonne les feuilles H40 et autres qui ne sont que des extractions ciblées de la feuille mère 100 %. on ne garde que la feuille de travaille 100% Bébère a déjà travailler sur mon fichier et m'a proposé un filtre en cours de réalisation... Mai un calendrier serait bienvenu ! pourquoi pas !!
la fonction de filtrage doit travailler en priorité sur un filtrage plage date sur la colonne date expédition. Idéalement j'aimerai pouvoir filtrer sur les 4 critères soit indépendamment, soit par sous filtrage à partir des autres critères, quel qu'en soit l'ordre du sous filtrage....
ex filter par date seule, ou designation seule, ou client seul.....
ou date puis par client puis par designation....etc....
je dois avoir la liberté de jouer avec les filtres dans tous les sens.
Par contre si un filtrage sur plusieurs critères s'opère, le filtrage doit être sous filtrant, et ne pas repartir du dernier critère activé, avec effacement des permiers sous filtrage en cours... ca doit être progressif... l'idée c'est d'affiner le résultat de la recherche...critère après critère...
ce qui vraiment m'intéresse le plus c'est d'additionner après filtrage la somme des quantités commandées ! ca s'est vraiment essentiel et de l'afficher dans le Textbox adéquat.
UN bouton réinitialisation du filtre serait le bienvenu également

pour la fonction d'import, je suis en train de bidouiller moi-même... j'y parviens donc vous pouvez laisser tomber ce code là.... Faut bien que j'en fasse un minimum avec mes compétences malheureusement trop limitées en VBA !!!
Merci d'avance
 

ChTi160

XLDnaute Barbatruc
Re
Ok je vais attendre que Bebere ait Finit et moi je vais m'amuser un peu de mon Coté Lol
j'ai remarqué que dans la Feuille 100% n’apparaît pas la Ligne "DEVIS PROFILDECK" qui figure dans la feuille H80 ! sûrement un Oubli . lol
Bonne journée
Jean marie
 

youpi457032

XLDnaute Occasionnel
Ok merci ....
bon je merde avec ma macro import de données ....
avec l'enregistreur de macro j'arrive à copier coller les données ici de ma feuille source, sauf que du coup ca m'efface mon formulaire !!! GGrrrrrr !!! comment faire pour que ne se copie les données sans effacer le formulaire !!! ???? .... et qu'il continue de fonctionner du coup !

voici mon code à l'enregistreur
CODE [début de code]
Sub import_source() ' import_source Macro
Windows("fichier source jouplast.xlsx").Activate
Workbooks.Open Filename:= _
"C:\Users\youpi\OneDrive\Documents\fichier source jouplast.xlsx"
Application.Left = -4.4
Application.Top = -4.4
Application.Width = 1162.8
Application.Height = 628.8
Sheets("100%").Select
Columns("A:Q").Select
Range("A104").Activate
Selection.Copy
Windows("projet filtrage complexe phase 1 avant projet.xlsm").Activate
Range("A1").Select
ActiveSheet.Paste
End Sub
[ fin de code ]
 

Bebere

XLDnaute Barbatruc
bonsoir
Youpi ou veux tu le/les résultats dans une feuille ou dans une autre listview
alors faire un userform avec multipage
edit:lisbox a une propriété multiselect ,si besoin
 

youpi457032

XLDnaute Occasionnel
dans une autre feuille, ce sera mieux à l'export....
par contre en VBA j'y connais rien !!! sans passer par l'enregistreur de Macro !!
et là je pense que ce sera trop compliquer pour moi de l'écrire seule cette macro !
Si tu peux m'aider .... sans abuser....
 

Bebere

XLDnaute Barbatruc
Youpi
je vais mettre un multipage,cela va être trop compliqué
un filtre date et désignation
un filtre client désignation quantité
un filtre colonne k et client
si besoin il est possible de mettre le contenu de la listview ds une feuille
faut il que toutes les colonnes de la feuille soient dans la/les listview
 

youpi457032

XLDnaute Occasionnel
les deux fonctions les plus importantes c'est de pouvoir filtrer dans tous les sens, surtout par date d'expédition ou plage de dates... et de pouvoir faire la somme automatique des volumes en commande qui s'affichent en colonne (quantité à livrer) une fois que filtre à produit son résultat. CE sont vraiment les deux fonctions les plus importantes.
J'aurai pu essayer moi même de faire la somme en bidouillant avec l'enregistreur de macro, sauf qu'en essayant je me suis aperçu qu'on pouvait pas utiliser l'enregistreur de macro dans un userform.... du coup ça coince pour moi en connaissance du VBA pur.... j'ai des notions de base... mais voilà ca ne suffira pas.....
 

Bebere

XLDnaute Barbatruc
Bonjour à tous
Youpi
une 1ère approche avec les totaux des colonnes k,l,m,q(filtre date)
désignation contient ce que le filtre date donne
je pense mettre une listview pour k,l,m à la place de 3 listbox
le but y mettre aussi le résultat du filtre date et désignation

à partir de là tu me dis ce qu'il faut améliorer,corriger
 

Pièces jointes

  • projet filtrage complexeV2.xlsm
    349.6 KB · Affichages: 29

youpi457032

XLDnaute Occasionnel


Bonjour Bébère,
Merci du travail réalisé !
Bon,, plein de choses ne vont pas....
Je vais essayer de m'exprimer clairement et dans l'ordre...
1° ) Le filtre date fonctionne bien. Sauf que lorsque l'on essaie de sous filtrer ensuite par code article, et bien le résultat de la listview fait apparaître l'ensemble des dates d'expéditions. Moi je voudrai que la plage date sélectionnée se verrouille, puis que l'on sous filtre ensuite par article, puis par client ...etc . Exemple pour la plage date du 04 juin au 12 juin affiche moi les resultats par code article N° untel et ensuite sur cette même plage date et par le code article n° untel .... le résultat..... en fait ca doit trier et affiner les données au fur et à mesure.....

2°) la textbox 7 doit additionner la colonne L de la listview ( pas la colonne Q) . Je ne veux pas les montants, juste les quantités commandées dans cette textbox.

3° )La listbox4 doit reprendre le volume des stock dispo....
En si je filtre entre le 04 juin et le 12 juin, puis par code article... une fois que le filtre à généré son résultat dans la listview, récupérer le résultat qui s'affiche à la dernière ligne de la date la plus éloignée ( ex: au juin, pour ce code article..... le chiffre de la colonne simul tous dépôts)

4°) la listbox 5 doit faire la différence entre la listbox 4 et le textbox7. Pour calculer l'écart de stock

enfin la listbox6 (la dernière case) doit essayer de répondre à la question suivante : Pour un code article donné, afficher la date à partir de laquelle l'écart de stock est critique (inférieur à 10 000 pièce par exemple).
exemple pour comprendre : J'ai tant de commandes à date du tant.... pour tel code Article. A partir de quelle date mon stock simul tous dépôts pour ce code article sera inférieur de 10 000 pièces (si on choisi 10000 comme seuil bas) au vu des commandes à livrer pour ce code article....
Exemple théorique... J'ai 200000 commandes pour l'article N°...... µA partir de quelle date mon stock sera critique sur ce produit ???? IL est évident que pour cela il faudrait pouvoir renseigner par famille d'article le volume moyen de production journalière.....

Je t'ai mis bébère en Label dans le formulaire des annotations....
Merci à toi ! Bon courage..... !!!
 

Pièces jointes

  • Projet filtrage Macro Bébère.xlsm
    324.5 KB · Affichages: 51

Bebere

XLDnaute Barbatruc
bonjour
youpi les quantités additionnées dans la textbox7 est ce une somme globale(sélection date) ou une somme par articles(sélection date)
mis une listview à la place des listbox
propoition:si la 2ème hypothèse est la bonne,mettre la somme dans la listview
 

Discussions similaires

Réponses
7
Affichages
963
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…