Formule de recherche avec 2 critères

Bonjour à tous,

J'ai besoin de vos lumières.

J'ai un tableau qui me permet de calculer une criticité pour un incident. Pour avoir cette criticité j'ai plusieurs natures et dans chaque natures une ou plusieurs classes. En gros nature X + classe Y= gravité Z

J'ai donc créé une cascade de liste déroulante (en nommant chaque nature et en y associant les classes) de façons à pouvoir choisir ma nature (A2) dans un premier temps, puis ensuite de pouvoir choisir les classes (B2) qui se rapporte à cette famille.

C'est la qu'arrive mon problème, j'ai beau me creuser la tête j'aimerai savoir comment faire pour avoir en C2 la gravité qui correspond a mes deux choix (A2 et B2).

Le fichier est joint au post.

Par avance merci a celui ou ceux qui pourront m'aider.

Bonjour,

Il eût été plus simple de joindre directement le fichier !

essaye en feuil3!c2 :

gravité = sommeprod((feuil1!a:a=a2)*(feuil1!b:b=b2)*(c:c))

DjiDji59430 a écrit :

Bonjour,

Il eût été plus simple de joindre directement le fichier !

essaye en feuil3!c2 :

gravité = sommeprod((feuil1!a:a=a2)*(feuil1!b:b=b2)*(c:c))

Bonjour DjiDji, j'ai joint le fichier il est au dessus

je test et reviens vers toi merci


DjiDji59430 a écrit :

Bonjour,

Il eût été plus simple de joindre directement le fichier !

essaye en feuil3!c2 :

gravité = sommeprod((feuil1!a:a=a2)*(feuil1!b:b=b2)*(c:c))

Ca ne fonctionne pas :-/

bonsoir,

Est ce que les filtres ne faciliteraient pas les recherches

Cordialement

etsije a écrit :

bonsoir,

Est ce que les filtres ne faciliteraient pas les recherches

Cordialement

Bonsoir non ca ne fonctionne pas :-/

bonjour,

Je me suis peut être mal exprimé, les filtres sont mis dans ta feuille1; A l'aide de la petite flèche situé dans les noms de colonne tu désélectionne "tout" pour le terme recherché et ce dans tes colonnes A et B et là le résultat unique s'affiche

Je joint ton fichier avec les filtres activés

Cordialement

Bonjour,

En l'état actuel de ton fichier, en C2 (Feuil3) :

=SOMMEPROD((Feuil1!$A$2:$A$86=SUPPRESPACE(SUBSTITUE(A2;"_";" ")))*(Feuil1!$B$2:$B$86=B2)*Feuil1!$C$2:$C$86)

Pour éviter des contorsions diverses, je conseille de tout revoir : choix de méthode d'organisation de listes-cascade (avec système de mise à jour automatique des listes à partir de la saisie d'un nouvel élément ou de la suppression d'élément existant), effacement du choix2 lorsqu'on efface un choix1, élimination des variations de libellés, ...

Cordialement.

MFerrand a écrit :

Bonjour,

En l'état actuel de ton fichier, en C2 (Feuil3) :

=SOMMEPROD((Feuil1!$A$2:$A$86=SUPPRESPACE(SUBSTITUE(A2;"_";" ")))*(Feuil1!$B$2:$B$86=B2)*Feuil1!$C$2:$C$86)

Pour éviter des contorsions diverses, je conseille de tout revoir : choix de méthode d'organisation de listes-cascade (avec système de mise à jour automatique des listes à partir de la saisie d'un nouvel élément ou de la suppression d'élément existant), effacement du choix2 lorsqu'on efface un choix1, élimination des variations de libellés, ...

Cordialement.

Bonjour,

Merci je vais essayer ta formule, pour le reste c'est au delà de mes compétences :-/

pour le reste c'est au delà de mes compétences

Comme tout, ça s'apprend... ! A+

MFerrand a écrit :

pour le reste c'est au delà de mes compétences

Comme tout, ça s'apprend... ! A+

CA fonctionne sauf pour une nature "depart sans ordre sauf manoeuvre".

Faut que je trouve ce qui cloche mais sinon nickel.

Je vais me pencher sur tes autres conseils

La fonction SUBSTITUE remplace tes "_" par des espaces. La fonction SUPPRESPACE élimine les double-espaces éventuelles (il y en avait un dans ce libellé, dû à "__").

Mais là il se trouve que ton libellé de référence en Feuil1 comporte une partie entre parenthèses, parenthèses non répercutées sur le libellé en Feuil2. Trop spécifique pour le rectifier dans la formule : c'est un libellé qui doit être rectifié.

MFerrand a écrit :

La fonction SUBSTITUE remplace tes "_" par des espaces. La fonction SUPPRESPACE élimine les double-espaces éventuelles (il y en avait un dans ce libellé, dû à "__").

Mais là il se trouve que ton libellé de référence en Feuil1 comporte une partie entre parenthèses, parenthèses non répercutées sur le libellé en Feuil2. Trop spécifique pour le rectifier dans la formule : c'est un libellé qui doit être rectifié.

Merci beaucoup de tes conseils....

MFerrand a écrit :

Bonjour,

En l'état actuel de ton fichier, en C2 (Feuil3) :

=SOMMEPROD((Feuil1!$A$2:$A$86=SUPPRESPACE(SUBSTITUE(A2;"_";" ")))*(Feuil1!$B$2:$B$86=B2)*Feuil1!$C$2:$C$86)

Pour éviter des contorsions diverses, je conseille de tout revoir : choix de méthode d'organisation de listes-cascade (avec système de mise à jour automatique des listes à partir de la saisie d'un nouvel élément ou de la suppression d'élément existant), effacement du choix2 lorsqu'on efface un choix1, élimination des variations de libellés, ...

Cordialement.

J'ai tour refait pour que ça soit plus propre et notamment au niveau des intitulés.

Je pense que les mises à jour de mes listes se feront automatiquement.

Par contre je trouve pas comment faire le menu déroulant avec effacement du choix deux lorsque l'on supprime le choix 1

En tous cas merci pour tes conseils

7cotation-v-2.xlsx (54.30 Ko)

Bonjour,

Mon programme du jour est encore incertain... Je vois ça dès que possible (l'automatisation de certaines opérations passe par des macros).

Bonne journée.

Bonjour,

Voilà un modèle adaté à ton cas.

Ton cas est relativement simple puisqu'il n'y a qu'un niveau de listes dépendantes (du 1er choix). On a donc besoin d'une base Nature-Classe à laquelle s'adjoint une 3e colonne pour l'indice de gravité (qu'il n'y a pas lieu de dissocier. A partir de cette base triée, on extrait automatiquement la liste du 1er choix (Nature), et la liste du 2e choix sera déduite de la colonne Classe de la base à partir du 1er choix.

Je suis revenu à des libellés normaux (non truffés de "_") car il n'y en a pas nécessité et c'est ainsi plus esthétique. J'ai par contre supprimé toute mise en forme des listes, elle serait un jour ou l'autre bouleversée par le tri, et ces listes sont destinées à alimenter d'autres feuilles, non à être affichées pour elles-mêmes. La feuille qui contenait les listes de 2e niveau est naturellement supprimée, ainsi que tous les noms afférents.

Toutes les listes utiles sont sur la feuille Gravité. La base est nommée (BaseGravité), de même que chacune de ses colonnes (Nature, Classe, IndGravité), cela raccourcit les formules. Les noms sont dynamiques (constitués avec DECALER), ils s'adaptent à la longueur de la base et incluent la première ligne vide qui suit où se feront les ajouts éventuels. La liste de 1er niveau est sur la même feuille, nommée (ListeNature) également de façon dynamique (mais sans ligne supplémentaire incluse).

Voilà comment fonctionne la mise à jour. Si un élément doit être ajouté, il l'est à la suite sur la première ligne vide. Tant que le curseur est dans la base (laquelle inclut cette ligne) rien ne se passe. Dès que le curseur est positionné ailleurs dans la feuille, la mise à jour se fait : la base est retriée, la liste de 1er niveau est reconstituée par filtrage avancé.

Voir les macros dans le module de la feuille Gravité.

Pour l'effacement du 2e choix lorsqu'on efface le 1er, voir la macro dans le module de la feuille Accueil.

Cordialement.

Ferrand

edit : lorsqu'il y suppression d'éléments, la mise à jour se fait dans les mêmes conditions.

MFerrand a écrit :

Bonjour,

Voilà un modèle adaté à ton cas.

Je regarde ça quand je suis chez moi car dans le RER c'est pas le pied

Je reviens vers toi en tous cas merci

MFerrand a écrit :

Bonjour,

Voilà un modèle adaté à ton cas.

Bon j'ai relu 5 fois ton message et après la cinquième lecture je suis toujours à à peu prêt 2% de compréhension :-/

Une chose est sur c'est que ton tableau fonctionne donc je te crois sur parole dans tes explication, même si paierai chers pour les comprendre car tout ça m'intéresse

Je ne sais pas si tu as vu mais la nature "anomalie engin moteur" y est 2 fois mais ça gêne pas....

En tous les cas je te remercie vraiment beaucoup pour le temps passé et espère que ce tableau améliorera la sécurité pour nos voyageurs

En effet, l'anomalie m'avait échappée ! (J'avais cru pouvoir passer outre à l'inclusion d'un nom de champ...)

Rectification à faire : en E1 remplacer ListeNature par Nature.

Dans la procédure SelectionChange de la feuille, modifier comme ci-dessous la ligne qui commence par [Nature]...

[Nature].Offset(-1, 0).AdvancedFilter xlFilterCopy, , Me.Range("E1"), True

Cela éliminera le doublon.

Cordialement.

MFerrand a écrit :

En effet, l'anomalie m'avait échappée ! (J'avais cru pouvoir passer outre à l'inclusion d'un nom de champ...)

Rectification à faire : en E1 remplacer ListeNature par Nature.

Dans la procédure SelectionChange de la feuille, modifier comme ci-dessous la ligne qui commence par [Nature]...

[Nature].Offset(-1, 0).AdvancedFilter xlFilterCopy, , Me.Range("E1"), True

Cela éliminera le doublon.

Cordialement.

Ca ne fonctionne pas, je pense avoir tout bien fait. Quoi qu'il en soit c'est pas très dérangeant

Bonne nuit

Voilà.

Mais je ne comprends pas bien comment BaseGravité était devenue BaseGravitŽ.

problème de codage qui affectait aussi le nom de ton classeur, tu peux le vérifier dans ton dernier post.

Je ne vois pas l'origine...

Cordialement.

Rechercher des sujets similaires à "formule recherche criteres"