XL 2016 Help : Macro filtrage multicritères sur des lignes

ynx69

XLDnaute Junior
Bonjour à tous,

Novice sur le VBA excel (niveau 0.00001) je me permet de vous solliciter dans le cadre d'un projet que je mène. Je vous remercie d'avance pour votre aide et la patience dont vous ferez preuve avec moi. Je cherche à améliorer mon niveau et progresser car cet outil est très puissant et me serait très utile pour le futur. Je ne suis pas contre une macro avec des commentaires, cela me permettra de bien vous suivre et de comprendre au fur et à mesure.

Mon problème est donc le suivant :
Je dispose d'un fichier excel très conséquent ( environ 200 colonnes pour environ 30 lignes ).
Ma mission est de synthétiser ce tableau en un tableau plus simple. Dans ce tableau simplifié je souhaite donc créer une macro me permettant de réaliser des filtres selon des critères multiples ( je précise qu'il n'y aura aucun lien entre le gros fichier excel et le nouveau, ci ce n'est une série de copié-collé que je réaliserais moi même ).

Je ne souhaite pas / j'ai interdiction plutôt de modifier la structure générale. Ainsi, je dois réaliser un tableau qui se présente comme ceci ( fichier excel joint ):

L1 Secteur / C1 Mécanique / C2 Mécanique / C3 Mécanique / C4 Mécanique
L2 Affaire / C1 Pneus / C2 Pneus / C3 Pneus / C4 Pneus .... /
L3 Marque / C1 GoodYear / C2 Michelin / C3 Pirelli / C4 Swamba /
L4 Ligne / C1 Goodyear / C2 Michelin / C3 Pirelli / C4 Swamba /
L5 Produit / C1 Goodyear TTT / C2 Michelin PV / C3 Pirelli AGP / C4 Swamba TTT
L6 Code Article / C1 000a / C2 000b / C3 000c / C4 000d
L7 Fabrication / C1 AAA1 / C2 AA2 / C3 AA3 / C4 AA4
L8 Emballage / C1 Plastique / C2 Metal / C3 Plastique / C4 Verre
L9 Remplissage / C1 50 / C2 25 / C3 50 / C4 44

Ceci est juste un exemple pour me permettre de bien comprendre mais il y'aura beaucoup plus de colonnes dans la version finale.

Vous l'aurez surement compris mais je souhaite réaliser mon filtre sur des lignes et non pas des colonnes ( et j'ai interdiction de faire une transposé pour conserver l'affichage de base ).
Je souhaite ainsi filtrer les paramètres suivants : Marque, Produit, Emballage, Remplissage

Pour cela, je souhaite que l'utilisateur dispose d'un bouton pour effectuer ce filtrage. Deux possibilités lui seraient alors possibles :

1- Un filtrage simple avec un seul paramètre ( exemple : la marque , avec une liste déroulante : Michelin, pirelli, goodyear ou swamba, et donc la même chose pour les 3 autres paramètres. ) Pour le type de produit, j'aimerais que l'utilisateur choisisse entre TTT, AGP et PV. Les noms des produits ont une séquence de caractère assez speciale. J'aimerais donc que la macro aille chercher dans le nom des produits la séquence de caractère qui aura été choisie par l'utilisateur pour en faire ressortir tout les produits avec cette fameuse séquence.

2- Un filtrage multiple. L'utilisateur choisie par exemple sa marque ( Michelin ), le remplissage ( 50 ) , le produit ( PV ) et enfin l'emballage.

Par ailleurs je ne souhaite pas qu'il y ait de melange dans les codes et autres paramètres. Chaque colonne étant associée à un article.

Si rien ne correspond aux choix de l'utilisateur, la macro affiche un message : "Aucune correspondance" par exemple

Sincèrement je ne sais par ou commencer sachant que le fichier excel dont je me sers est énorme et le fait que la disposition soit en ligne ne me facilite pas la tâche. J'ai essayé les TDC mais en vain. C'est pourquoi je souhaite utiliser une macro et que je fais appel à vous.

J'ai trouvé un fichier ( il est en pièce jointe et s'appelle "exemple de macro utile" ) qui fait un peu ce que je souhaite mais il ne fait le filtre que sur un seul paramètre et je ne sais absolument pas comment le modifier ( j'ai une formation VBA prévue dans 2 mois ). Le code utilisé peut servir de base pour ceux qui voudront bien m'aider .... J'en appelle donc à la communauté pour m'aider. Je vous en serais extrêmement reconnaissant et je suis sur que ca pourra aider d'autres membres à l'avenir.

Voici les fichiers :

J'attends donc vos réponses en espérant que celles-ci pourront m'aider.
Bonne journée à vous

Ynx
 

Pièces jointes

  • Exemple de macro utile.xls
    54.5 KB · Affichages: 31
  • Fichier type.xlsx
    9.3 KB · Affichages: 43
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re

Sur de bonnes bases
Qui dit base
Dit base de données
Qui dit base de données dit structure classique à respecter
Qui dit base de données respectable dit TCD employable
Qui dit TCD dit Excel
Qui dit Excel, dit liberté
Qui dit liberté dit Mai 68
Qui dit Mai 68 dit: il est interdit d'interdire de transposer de copier une feuille etc...

Bref, j'ai ouvert ton classeur et rien de m'interdit de copier les données sur une feuille temporaire, de les agencer comme la tradition veut qu'on les agence, et donc au final d'utiliser dans la volupté et le bonheur et hors de toute urgence toute la panoplie de services offerte par le Tableau Croisé Dynamique! ;)
 

ynx69

XLDnaute Junior
Re,

Je sais qu'il est possible de passer par un TCD mais ca implique justement de passer par une feuille temporaire. Le truc c'est que je ne peux pas l'utiliser dans ce cas précis car je n'ai pas le droit de toucher à l'agencement défini ( celui-ci étant relié avec un logiciel spécifique ). C'est pour ça que je songeais à la macro même si je n'ai pas de connaissance sur le sujet. L'idée c'est d'avoir un bouton, on pilote de manière la plus intuitive possible et en faisant le moins d'étapes possibles , le fichier étant destiné à des collègues en atelier qui transfèrent leur fichier vers un logiciel spécifique à nos activités.

Si tu pouvais m'aider je t'en serais reconnaissant :)
ynx
 

Staple1600

XLDnaute Barbatruc
Re

Si tu as le droit d'utiliser une macro, tu as tous les droits!
Je ne vois où est le problème de créer une feuille ou un fichier temporaire (on peut les supprimer par macro ensuite)

Je peux t'aider à partir du moment où je peux utiliser Excel en mode non contraint ;)

Précisions demandées:
Quel ce mystérieux logiciel que tu ne nommes pas ?
Quel format doit avoir le fichier pour l'import dans ce logiciel tiers?
*.txt *.csv?

NB: Quand on demande de l'aide, il faut envisager d’examiner d'autres points de vue avant de s'arc-bouter sur une seule voie (qui ici complique bien les choses)

Joins un second fichier avec un second onglet (Résultat attendu) où tu auras réalisé le résultat manuellement en partant de ton 1er fichier.
 

ynx69

XLDnaute Junior
Hello staple,

Tu as raison il ne faut pas se brider.
Par contre, concernant ta demande de fichier "résultat attendu" en fait le résultat que je souhaite avoir est une présentation à l'identique de celle que tu vois dans le fichier "fichier type" mais juste je veux juste avoir la possibilité de trier en fonction des critères qui sont coloriés ici en orange. Je ne sais pas si je suis clair dans mes explications...

Pour résumé en fait je pars d'un fichier excel qui se présente comme celui que j'ai fourni "fichier type" avec des milliers de produits. Dans cette base la c'est très simple, les produits dont j'ai besoin ont la colonne en couleur, les autres ne sont pas coloriés. Je vais faire un copié collé de chacune des colonnes coloriées et je vais collée celle-ci dans le "fichier type" que je t'ai fourni. Concrètement quand tu ouvriras le "type" tu auras une présentation comme celle que tu vois mais sur 200 colonnes de plus environ. Donc en gros des données brutes. A partir de ces données brutes justement je souhaite effectuer le fameux tri dont je t'ai parlé en s'assurant qu'il n'y ait pas de permutation dans les codes ect (pour rappel, chaque colonne correspond à un produit distinct).

Concernant ta question du fameux logiciel, il s'agit d'un logiciel interne du nom de "e-prod". Il permet de lire des fichiers xls/x et des CV présenté de la même facon que fichier type. Il permet aux responsables d'atelier de visualiser les temps de production pour chacun des produits ( dans le fichier type, les 0 que tu vois seront remplacées par des temps ). Par contre on a pas la main sur le logiciel et il a été paramétré pour lire les fichiers avec une disposition comme celle que j'ai présenté dans le fichier type. Donc en soit on ne fait pas d'export d'excel dans des formats type csv. On reste en natif.

Merci pour ton aide et si tu as besoin d'autres explications n'hésite pas
 

ynx69

XLDnaute Junior
Staple,
Je sors de réunion avec mon responsable. Pas de soucis pour trifouiller le fichier comme tu le proposais à condition simplement que la structure soit identique à la fin du filtrage.

En gros on pourrait partir sur une macro pour copier coller la plage de donnée, la transposée sur une feuille temporaire comme tu le suggérais , de proposer à ce moment là à l'utilisateur de faire son choix et une fois celui-ci fait, de retransposer la plage filtrée pour l'afficher dans une autre feuille ...
Après bien sur si tu as d'autres proposition moi je suis à l'écoute, je veux vraiment progresser donc n'hésite pas.

Par ailleurs j'ai trouvé une vidéo explicative pour la macro de transposition sauf qu'au lieu de transposer sur une feuille temporaire, il transpose dans un nouveau fichier.. et en fait du coup dans mon cas il faudrait transposer 2 fois pour revenir à l'affichage initial.
https://www.exceltrainingvideos.com...book-transpose-automatically-using-excel-vba/

Je suis entrain de chercher des macros pour faire du filtrage sur plusieurs critères mais pour l'instant je ne trouve pas.
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, le forum

Le fichier joint: Fichier type.xlsx est le fichier brut?
(avant coloriage et autres "futilités" réalisées dans Excel)
Ou c'est un fichier qui a été modifié dans Excel.

Ce que je voulais, c'est qu'il faudrait un extrait du fichier type (vierge de toute transformation) dans un onglet et dans un autre onglet le résultat attendu.
 

ynx69

XLDnaute Junior
Hello Staple,
Désolé de ne répondre que maintenant mais finalement j'ai réussi à faire ce que je voulais. J'ai demandé de l'aide à un informaticien du groupe. En gros on a fait une espèce d'API assez complete basé sur des TCD et des filtres. Ca marche assez bien. Maintenant j'essaye de faire en sorte d'afficher des images dans des cellules en fonction du nom du produit. La macro a faire à l'air assez simple donc je vais tenter de me débrouiller :)
 

ynx69

XLDnaute Junior
Salut Staple,

J'espère que tout va bien pour toi :). J'ai répondu avec un peu de retard sur le forum. En fait le truc que je voulais faire s'apparentais plutôt à une api complète en VBA. Du coup j'ai été assisté d'un informaticien pour le projet et finalement on est arrivé à un résultat super cool.
J'ai acheté un bouquin épais comme un menhir sur le VBA, j'attend sa livraison. Je vais profiter de mes weekends et certaines soirées ou j'aurais de la dispo pour m'y mettre à fond et apprendre.


J'aurais une PETITE requête à te demander :) ...
Quand je lance ma macro, ça me fait le traitement comme je le souhaite mais il me manque une étape que je souhaiterais ajouter pour vraiment compléter la macro. La chose que je veux faire m'a l'air simple mais j'ai pas vu énormément de sujet à ce propos sur les forums qui parlent d'Excel.

L'idée c'est qu'en appuyant sur un bouton , que les photos de mes produits (placés dans un dossier) s'affichent automatiquement en fonction du libellé de mon produit.

Pour chaque fichier Excel, j'ai n feuilles. Pour chaque feuille, la première image doit venir se placer en F4 en allant chercher le libellé qui lui est en F6 et vis et versa ( deuxieme image en G4 avec son libellé en G6 ect ect ..)

Aurais-tu une idée de code qui pourrait m'aider ... ?
Merci pour ta réponse

Bonne journée à toi
 

Pièces jointes

  • Excel.zip
    947.1 KB · Affichages: 28

Discussions similaires

Réponses
26
Affichages
762