Retourner la valeur la plus frequente en fonction d'une autre valeur

Bonjour à tous,

Voici mon problème sur Excel:

J'ai un fichier qui contient 3 onglets. Le premier onglet, Role Dep, est le tableau dans lequel je voudrais obtenir mon résultat final. L'idée ici serait d'afficher le département en fonction de la valeur que je peux avoir dans la colonne Role.

Dans mon onglet, Mapping, j'ai le département qui correspond à mon utilisateur dont le nom est affiché en colonne Name. Comme vous pouvez le voir dans le fichier joint, un utilisateur peut avoir plusieurs Role, mais il sera toujours assigné au même département.

En bref, je voudrais que dans l'onglet Role Dep, le departement soit affiche pour chaque role seulement s'il y a une majorite. Pour m'expliquer, dans l'onglet Mapping, si je filtre la colonne Role pour ne garder que "user" je vois que j'ai 2 utilisateurs en Management mais un seul en Accounting. Du coup, dans l'onglet Role Dep, Management doit s'afficher à côté de "user" et idealement que je puisse dérouler la formule pour que cela fonctionne avec les autres roles.

Est-ce possible avec une formule ou seulement avec du VBA? J'ai bien trouvé une formule qui me permet de sortir la valeur texte qui ressort le plus fréquemment mais pas en fonction d'une autre valeur comme explique et seulement sur une plage fixe. De plus, dans le cas où je n'aurais pas de majorité (resultat>50%), il faudrait ressortir un blanc "". Auriez-vous une idée de comment faire ca svp? :)

Salut,

je sais pas si ça peut t'avancer un peu mais j'ai trouvé cette formule (matricielle : ctrl+shift+entré)

=INDEX(C2:C13;EQUIV(MAX(NB.SI(C2:C13;C2:C13));NB.SI(C2:C13;C2:C13);0))

ca permet de trouver la valeur la plus utilisé on va dire.. mais j'arrive pas a l'inclure dans une autre formule pour qu'il puisse donner la valeur la plus utilisé par rapport au rôle j’attends de voir si quelqu'un a un complément (ou bien la réponse) ça me casse la tête mais ça m'intéresse grave.

Salut,

Merci de la reponse. J'ai effectivement trouve quelque chose d'assez similaire:

=IFERROR(INDEX(C15:C19,MATCH(MAX(FREQUENCY(MATCH(C15:C19,C15:C19,0),MATCH(C15:C19,C15:C19,0))),FREQUENCY(MATCH(C15:C19,C15:C19,0),MATCH(C15:C19,C15:C19,0)),0)),"")

Et avec une plage de donnee en C15:C19, ca te renvoi la valeur texte qui ressort le plus souvent. Comme toi je n'arrive pas a l'associer avec le role afin que ca soit 'dynamique'.

Je serqis vrqiment reconnaissant si quelqu'un pouvait m'aider la dessus :)

Bonjour,

Bon, j'ai trouvé le début d'une fin de solution mais je dois procéder en deux temps, il semblerait qu'excel ne supporte pas la formule, du coup :

- je créer une premier colonne avec comme formule

{=SI(B2:B13=F2;C2:C13;LIGNE(C2:C13))}

avec F2 le critère

et ensuite dans département je met la formule suivante (merci Lunissia ;) )

{=INDEX(C2:C13;EQUIV(MAX(NB.SI(M2:M13;M2:M13));NB.SI(M2:M13;M2:M13);0))}

avec M2:M13 la colonne que j'ai du créer

bonjour

un essai

cordialement

12charleliec.xlsx (12.11 Ko)

@McCharon Effectivement ca a l'air de fonctionner à peu près. Par contre je ne comprends pas tellement comment les matrices fonctionnes sur excel donc j'ai eu un peu de mal à l'appliquer à tous mes rôles. Je n'ai pu faire qu'un essai à partir du role "user" déjà ciblé dans la formule.

En revanche, lorsqu'on a deux départements en même quantité, par exemple:

charles / user / Marketing

charles / admin / Marketing

Josh / user / Management

Josh / admin / Management

Etant donné qu'il n'y a pas de majorité ici si on prend "user", le résultat devrait être un blanc idéalement pour bien différencier d'une majorité absolue.

@tulipe_4 Merci pour ta réponse mais je n'ai pas l'impression que les résultats dans ton exemple dépendent de la colonne Role.

Peut-être que la meilleure méthode serait d'utiliser une loop qui parcourt tous les roles sur VBA? Quelqu'un aurait-il une idée de ce à quoi cela ressemblerait svp?

Hey !!

j'ai trouver une petite formule (sans matrice)

je joint le fichier parce que j'ai tout mis sur la même feuille !

(j'espère que ça fonctionne, en tout cas j'en ai l'impression)

Incroyable! Si simple et pourtant si efficace que j'en comprends parfaitement la logique! Merci beaucoup!

Dit moi, est-ce que tu penses que c'est possible d'inclure une logique qui distingue un score de 100% pour un departement?

En bref, etre capable de distinguer si pour un role donné, 4 users sur 4 font partie du meme departement, tandis que sur un autre role, seulement 3 users sur 4 font partie de ce departement.

Peut etre un check additionel dans une colonne a coté?

A tester je crois que ca fonctionne

(enfin si j'ai bien compris ..~)

Edit : je pense que j'ai mal compris j'ai fait par rapport à tout les départements

j'ai ajouter la bonne formule (MAJ du fichier j'ai laisser l'autre au cas où..)

Vraiment super Lunissia, merci beaucoup!!

Par contre j'ai un problème avec la formule. Dans l'exemple que je t'ai donné, il n'y avait que 3 départements. Ayant analysé comment la formule était construite, j'ai essayé de l'étendre un peu afin d'avoir 6 département au total. Étrangement, lorsque j'etends la formule afin d'inclure le 4ème départment, en cellule K5, pas de soucis, mais lorsque je poursuis avec le 5ème departement, en cellule K6, Excel m'indique que la formule n'est pas correct. J'ai beau essayé de chercher où était mon erreur, si une virgule ou une paranthèse manquait quelque part, mais je n'ai rien trouvé. Je m'y prends exactement de la meme manière pour ajouter le 5ème département que pour le 4ème et il continue de me mettre le message d'erreur "Problème avec la formule".

Est-il possible qu'il y ai une limite au nombre de variable qui puissent etre integré ou suis-je simplement passé à coté d'un element?

role :

=SI(ET(NB.SI.ENS($B:$B;J5;$C:$C;$K$2)>(NB.SI.ENS($B:$B;J5;$C:$C;$K$3));NB.SI.ENS($B:$B;J5;$C:$C;$K$2)>NB.SI.ENS($B:$B;J5;$C:$C;$K$4));(NB.SI.ENS($B:$B;J5;$C:$C;$K$2)/NB.SI(B:B;J5));SI(ET(NB.SI.ENS($B:$B;J5;$C:$C;$K$3)>(NB.SI.ENS($B:$B;J5;$C:$C;$K$2));NB.SI.ENS($B:$B;J5;$C:$C;$K$3)>NB.SI.ENS($B:$B;J5;$C:$C;$K$4));(NB.SI.ENS($B:$B;J5;$C:$C;$K$3)/((NB.SI(B:B;J5))));SI(ET(NB.SI.ENS($B:$B;J5;$C:$C;$K$4)>(NB.SI.ENS($B:$B;J5;$C:$C;$K$2));NB.SI.ENS($B:$B;J5;$C:$C;$K$4)>NB.SI.ENS($B:$B;J5;$C:$C;$K$3));(NB.SI.ENS($B:$B;J5;$C:$C;$K$4)/((NB.SI(B:B;J5))));SI(ET(NB.SI.ENS($B:$B;J5;$C:$C;$K$7)>(NB.SI.ENS($B:$B;J5;$C:$C;$K$6));NB.SI.ENS($B:$B;J5;$C:$C;$K$7)>NB.SI.ENS($B:$B;J5;$C:$C;$K$5));(NB.SI.ENS($B:$B;J5;$C:$C;$K$7)/NB.SI(B:B;J5));SI(ET(NB.SI.ENS($B:$B;J5;$C:$C;$K$6)>(NB.SI.ENS($B:$B;J5;$C:$C;$K$7));NB.SI.ENS($B:$B;J5;$C:$C;$K$6)>NB.SI.ENS($B:$B;J5;$C:$C;$K$5));(NB.SI.ENS($B:$B;J5;$C:$C;$K$6)/((NB.SI(B:B;J5))));SI(ET(NB.SI.ENS($B:$B;J5;$C:$C;$K$5)>(NB.SI.ENS($B:$B;J5;$C:$C;$K$7));NB.SI.ENS($B:$B;J5;$C:$C;$K$5)>NB.SI.ENS($B:$B;J5;$C:$C;$K$6));(NB.SI.ENS($B:$B;J5;$C:$C;$K$5)/((NB.SI(B:B;J5))));""))))))

formule affichage :

=SI(ET(NB.SI.ENS($B:$B;J5;$C:$C;$K$2)>(NB.SI.ENS($B:$B;J5;$C:$C;$K$3));NB.SI.ENS($B:$B;J5;$C:$C;$K$2)>NB.SI.ENS($B:$B;J5;$C:$C;$K$4));$K$2;SI(ET(NB.SI.ENS($B:$B;J5;$C:$C;$K$3)>(NB.SI.ENS($B:$B;J5;$C:$C;$K$2));NB.SI.ENS($B:$B;J5;$C:$C;$K$3)>NB.SI.ENS($B:$B;J5;$C:$C;$K$4));$K$3;SI(ET(NB.SI.ENS($B:$B;J5;$C:$C;$K$4)>(NB.SI.ENS($B:$B;J5;$C:$C;$K$2));NB.SI.ENS($B:$B;J5;$C:$C;$K$4)>NB.SI.ENS($B:$B;J5;$C:$C;$K$3));$K$4;SI(ET(NB.SI.ENS($B:$B;J5;$C:$C;$K$7)>(NB.SI.ENS($B:$B;J5;$C:$C;$K$6));NB.SI.ENS($B:$B;J5;$C:$C;$K$7)>NB.SI.ENS($B:$B;J5;$C:$C;$K$5));$K$7;SI(ET(NB.SI.ENS($B:$B;J5;$C:$C;$K$6)>(NB.SI.ENS($B:$B;J5;$C:$C;$K$7));NB.SI.ENS($B:$B;J5;$C:$C;$K$6)>NB.SI.ENS($B:$B;J5;$C:$C;$K$5));$K$6;SI(ET(NB.SI.ENS($B:$B;J5;$C:$C;$K$5)>(NB.SI.ENS($B:$B;J5;$C:$C;$K$7));NB.SI.ENS($B:$B;J5;$C:$C;$K$5)>NB.SI.ENS($B:$B;J5;$C:$C;$K$6));$K$5;""))))))

essaye avec ca après sans fichier joint je ne peux pas te dire..

après c'est une formule à rallonge j'ai peut être fait une boulette

Edit : les formules si dessus pour 6 départements sont fausses car ils faut aussi en prendre compte sur les 3 premiers départements soit :

=SI(ET(NB.SI.ENS($B:$B;J5;$C:$C;$K$2)>(NB.SI.ENS($B:$B;J5;$C:$C;$K$3));NB.SI.ENS($B:$B;J5;$C:$C;$K$2)>NB.SI.ENS($B:$B;J5;$C:$C;$K$4);NB.SI.ENS($B:$B;J5;$C:$C;$K$2)>NB.SI.ENS($B:$B;J5;$C:$C;$K$5);NB.SI.ENS($B:$B;J5;$C:$C;$K$2)>NB.SI.ENS($B:$B;J5;$C:$C;$K$6));$K$2)

(formule pour un seul rôle pour 6 départements après il faut modifier cette formule pour les autres rôles)

Alors j'ai copié la formule que tu m'as mise en tout dernier après ton edit et ait ajouté 3 autres département. La formule m'affiche FALSE (désolé j'ai excel en anglais )

Je me suis mal exprimer ce bout de formule permet de voir le département de "user" si c'est "accounting" en majorité, il faut la reprendre pour tout les département.

Bonjour à tous,

avec un TCD (0 formule) et un filtre dessus.

2020 07 07 13 42 56

eric

Merci à vous tous mais surtout à toi Lunissia. J'ai fait exactement ce que je souhaitais faire :) Encore un grand merci pour ton aide.

Ah, je viens de voir que le fichier n'était pas passé.
Le voici
eric

Merci Eric! Effectivement ca marche aussi! :)

Rechercher des sujets similaires à "retourner valeur frequente fonction"