[EXCEL] Recherche multicritères et tableau de résultat
Bonjour à tous,
A mon tour de m'inscrire sur ce forum.
Il m'a déjà super bien servi pour les fonctions INDEX / EQUIV sur un précédent fichier. La création de jauge et autres astuces.
Je suis autodidacte sur excel j'ai appris en fouillant dans les fonctions et sur le net.
Pour ce qui m'amène, j'ai également pu me faire des listes déroulantes en cascade et apprendre à utiliser SUBSTITUE.
Mais là, malgré mes recherches et beaucoup de lecture, je suis face à un problème je pense directement lié au fait que je souhaite que ce ne soit pas en VBA. Je n'y comprends pas grand chose en VBA si ce n'est copié collé les lignes vues sur le net et en bidouillant "oups j'ai supprimé un truc qui fallait pas ça marche plus"
Bon l'aveu de faiblesse étant fait, je passe au vif du sujet.
J'ai un tableau "Données" où sont saisies un tas d'informations.
J'ai un onglet Listes où j'ai créé ce dont j'ai besoin en données pré-remplies.
Viens l'onglet recherche.
1° problème : Déjà limité par mes connaissances, j'ai créé un premier tableau "TYPE EQUIPEMENT" pour me trouver selon un critère les résultats associés.
Dans l'exemple "PROCESS S" en D3 qui me renvoie uniquement la première ligne qui a le résultat et pas tous les résultats. J'ai fouillé un peu partout mais tout ce que j'ai testé ne fonctionne pas. J'ai trouvé des solutions où on vient comparer les N° de lignes pour les ignorer, des solutions en VBA mais rien qui ne fonctionne chez moi
L'idée c'est donc que le tableau de l'onglet "RECHERCHE" se remplisse avec tous les résultats correspondant à ma recherche en D3 soit ici N°FAB = P37/P40/41/42.
2° problème : Je voudrais n'avoir que les deux champs de recherche (D3 & D24) et un seul tableau de résultat.
Comme je n'ai pas réussi j'ai contourné le souci avec un deuxième tableau qui vient chercher dans le 1er les lignes qui répondent au critère en D24
Une recherche en 2 fois, en soit ça marche mais si cela était possible de simplifier ça m'arrange !
Si je résume mes deux problèmes :
A minima : est-il possible que ma formule dans la colonne N° FAB
=INDEX(Données!$C$3:$F$18;EQUIV($D$3;Données!$E$3:$E$18;0);1)
soit modifiée pour renvoyer tous les résultats piochés dans la tableau données et non que le premier résultat ?
A maxima : est-il possible de n'avoir qu'un seul tableau capable de renvoyer les résultats selon les deux critères "TYPE EQUIPEMENT" et "SPÉCIFICATION" ?
question extra : j'ai donc créé des listes déroulantes en cascade selon les données de l'onglet "Listes"
Problème : Je n'ai réussi à faire qu'un seul niveau.
Ex : TYPE EQUIPEMENT : Cuve
J'ai créé une autre liste qui avec (INDIRECT) me donne le choix CUVE1 à CUVE6.
Mais comment faire pour avoir un niveau de plus ?
J'ai contourné le problème en créant CUVE4/5/6 qui sont en fait les mêmes que CUVE1/2/3 mais avec une option en plus.
Sachant que les options peuvent être à la fois sur les 3 cuves et pas forcément que sur la Cuve 1 ou la cuve 2 ou la cuve 3 ?
Bon c'est pas forcément clair et c'est optionnel si j'ai plus que ça à résoudre je devrais y arriver.
Merci j'espère que c'est clair, ce n'est pas facile de bien expliquer quand on est plongé sur un problème depuis un moment on oublie toujours un truc évident
Bonjour,
pour filtrer, tu peux utiliser les filtres avancés
voir ci-après (j'ai juste fait un enregistrement de macro sur un filtre avancé après avoir mis les données en tableau)
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("D3:E3")) Is Nothing Then Exit Sub
filtrer
End Sub
Private Sub Worksheet_Activate()
filtrer
End Sub
Private Sub filtrer()
Sheets("Données").Range("Tableau1[#All]").AdvancedFilter Action:=xlFilterCopy _
, CriteriaRange:=Range("D2:E3"), CopyToRange:=Range("B5:G5"), Unique:=False
End Sub
Bonjour et merci pour ta réponse.
Ca fonctionne chez moi donc déjà c'est top !!!
Mais je suis infoutu de le reproduire sur mon fichier définitif (qui comporte quelques données persos).
J'ai essayé de décortiquer le code que tu as mis mais je ne comprends pas grand chose.
J'ai essayé de faire "Données"/"Tirer & Filtrer"/"Avancé" je sélectionne mon tableau, je mets les critères sur la colonne TYPE EQUIPEMENT mais ça me sort rien.
Autre question, sur ton fichier, mon tableau données est devenu "bizarre" avec cadre en bleu, c'est dû à quoi ? le fait qu'il soit interrogé par la fonction filtre avancé ?
EDIT : je pense que mon erreur est que je n'ai pas mis les données en tableau, je pars à la recherche de "comment qu'on fait"
Bon j'ai capté le truc de mettre les données en tableau et ça répond du coup à la question sur le bleu "bizarre" lol.
Par contre la macro copié/collé ça me sors rien. J'ai testé avec le filtre avancé mais pas mieux. Ca devient vraiment bloquant pour moi ce manque de compétence en macro
En effet, les données sont en Tableau ... tu peux en changer l'aspect (les couleurs notamment)
Pour la macro, voici comment en changer les paramètres :
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("D3:E3")) Is Nothing Then Exit Sub
filtrer
End Sub
Private Sub Worksheet_Activate()
filtrer
End Sub
Private Sub filtrer()
Sheets("Données").Range("Tableau1[#All]").AdvancedFilter Action:=xlFilterCopy _
, CriteriaRange:=Range("D2:E3"), CopyToRange:=Range("B5:G5"), Unique:=False
End Sub1- elle doit être dans le feuille de recherche/filtre, pas dans la feuille de données
2- D3:E3 c'est la zone qui contient les variables, tes critères en fait
3- Tableau1 est le nom qu'excel a donné au tableau ... vérifie par Formules > Gestionnaire de noms
4- D2:E3 c'est la zone des critères mais aussi cette fois-ci avec les en-têtes de colonnes ... attention, pas de créativité, ces en-têtes doivent être les mêmes que celles du tableau
5- B5:G5 c'est la zone des résultats, sur une seule ligne, que les en-têtes des colonnes et les mêmes que celles du tableau à filtrer
Ouh super merci pour tes explications très claires ça me sort une sacré épine du pied !
J'ai galéré encore un peu parce que j'avais renommé mon tableau en "Données" ça ne fonctionnait pas.
Le débogue de la macro me soulignait la dernière ligne en erreur (flèche jaune) et je ne trouvais pas pourquoi. Puis d'un coup me suis dit qu'un accent sur un truc automatique ça fichait souvent le bazar, j'ai renommé en Tableau1 et bingo !
Du coup tu as répondu à mon besoin d'afficher les résultats et non pas que le premier. Et de tenir compte de plusieurs critères.
Merci beaucoup !!!
Mieux vaut éviter les accents, surtout en VBA. Je me fais encore piéger parfois !