Renvoie du nombre max d'occurence d'une cellule dans un tableau
Bonjour à tous,
Cela fait bien longtemps que je ne suis pas passé par ici, d'habitude je me débrouille toujours pour trouver une solution, mais là, je sèche... Peut-être ne sais-je tout simplement pas "exprimer" ce que je recherche concrètement, une telle question à surement été posée avant.
Je vais faire simple, je commence a planter le décors et je complexifie ensuite. Je prends un exemple 'simple' de tableau commercial.
Alors, j'ai un tableau (quelle surprise n'est-ce pas?), dans lequel j'ai plusieurs lignes/colonnes (promis, j'arrête d'enfoncer les portes ouvertes après cette ligne):
Colonne A: J'ai "l'état" de mon produit. Dans mon exemple si il est déjà vendu ou si il est en stock.
Colonne B: J'ai les produits eux-même. Dans l'exemple, Produit 1 à 4
C'est maintenant qu'on s'accroche...
Ce qui je cherche a faire, c'est à savoir quel est le produit "qui se vend le mieux".
Je cherche donc a savoir quel est le "Produit" dont l'état est "Vendu" qui revient le plus souvent.
La plupart des formules que j'ai pu tester/trouver me rapporte 'le nombre de fois' ou mon 'meilleur produit' est vendu, mais ce que je cherche c'est à savoir le NOM du produit en question.
Pour le moment ma "solution" temporaire consiste à lister "manuellement" mes produit et de faire un NB.SI.ENS.
Je vous joint un fichier simplifié d'exemple de ce que je cherche à faire.
Par avance merci!
Fox_Zak
- Messages
- 3'678
- Excel
- 365, 2019
- Inscrit
- 11/04/2020
- Emploi
- Formateur bureautique, dvpt de fichiers
Bonjour,
Voici ci-joint une proposition avec Tableau croisé Dynamique et segment.
Tu dis que tu dois récupérer l'information. Tu ne dis pas si tu dois la récupérer dans une cellule pour en faire quelque chose ensuite. Dans le 2ème cas, il y a des solutions aussi.
Bonjour et merci du retour.
Je viens de voir que la version de mon fichier uploadé n'est pas celle que je pensais, j'ai fait quelques modifications qui aideront peut-être à comprendre ce que je cherche.
La solution proposée est proche de ce que je fais actuellement. l'idée c'est plus "d'isoler ce qui marche le mieux".
Merci encore =)
- Messages
- 3'678
- Excel
- 365, 2019
- Inscrit
- 11/04/2020
- Emploi
- Formateur bureautique, dvpt de fichiers
Bonjour,
C'est à cette solution que je pensais en 2ème recours.
Mais cela oblige à faire une extraction sans doublon des critères, et à avoir les nb.si déjà en place. Pas forcément plus pratique qu'un TCD, qui peut se mettre à jour tout seul.
- Messages
- 3'678
- Excel
- 365, 2019
- Inscrit
- 11/04/2020
- Emploi
- Formateur bureautique, dvpt de fichiers
Bonjour Tulipe.
Pouah, la claque que je prends !
Pourrais-tu, s'il-te plaît, détailler quelques points de ta formule?
en fait, toute cette partie m'est incompréhensible pour le moment :
EQUIV(0;NB.SI(Tableau1[Objet];"<"&Tableau1[Objet])-SOMME(NB.SI(I$6:I7;Tableau1[Objet]))
Comment peut-on mettre comme valeur 0 cherchée ? Quelle beauté pour définir la plage de recherche ! (mais je ne comprends pas)
Je précise que je connais et utilise toutes les fonctions que ut as utilisées ici, de même que les fonctions matricielles. C'est juste ce merveilleux mélange qui coince.
Allez hop, tu rejoins directement la liste de mes idoles
Par avance merci pour ton aide.
re
merci ; mais c'est le fruit de 200 ans de recherches intensives
donc
NB.SI (......."<" ) ne fait que compter que des valeurs numeriques qui sont en realité la valeur numerique de chaque mot
alors fatalement ,il y en aura au moins un qui ne trouvera pas son supérieur => un 0
mais pour pouvoir eliminer les doublons qui subsistent ,lors de l'incrementation on ote la somme des deja apparus c'est ;
somme(nb.si( i$6:i6; la plage )
a noter que ce I6 est la première cel au dessus ou à coté de la plage de resultat à obtenir ,elle doit etre vide ou contenir autre chose , ne pas oublier le $ pour que la formule soit "auto alimantée" au fur et a mesure de l'incrementation
bien entendu ,comme pour beaucoup de formules , la plage de données ne doit pas avoir de vides
cordialement
- Messages
- 3'678
- Excel
- 365, 2019
- Inscrit
- 11/04/2020
- Emploi
- Formateur bureautique, dvpt de fichiers
Merci beaucoup Tulipe, je vais essayer de regarder plus attentivement cela, et d'en comprendre le maximum.
De même que la formule qui sort directement la valeur qui revient le plus souvent, d'ailleurs !
Re-bonjour!
Merci tulipe_4, ton exemple fonctionne bien dans le fichier d'exemple mais pour une raison que j'ignore:
- Impossible de le faire fonctionner dans mon 'fichier définitif'
- Impossible de le faire fonctionner si je touche à la cellule. 0o
Enfin, j'ai fini par trouver une solution (c'est moche mais ça fonctionne), et quelle prise de tête!!!
Je vous explique comment je procède en développant la logique, si jamais quelqu'un venait à vouloir faire la même chose.
Je commence, tout comme vous, par exporter mes valeurs de produit dans un autre tableau ( "Tableau2", en pratique je le fais carrément sur une autre page) puis le le trie et supprime les doublons. à partir de là: On peut bosser.
Dans ce Tableau2 j'ai ma colonne "Objet" et ma colonne "Vendu"' ou j'ai le nombre d'objet vendu (valeur que j'obtiens du 1er tableau avec un NB.SI.ENS qui recherche le nombre d’occurrence de l'objet en fonction de l'état):
La formule de ma colonne "Vendu":
=NB.SI.ENS(Tableau1[Etat];"Vendu";Tableau1[Objet];Tableau2[Objet])
Note: ici j'ai mis "Tableau2[Objet] pour aider le néophyte à s'y retrouver, on peut le simplifier en "[Objet]" vu qu'on travail directement DANS le Tableau2.
Ensuite et toujours dans Tableau2, je commence par rechercher ma valeur maximum du produit vendu (vu que c'est "le Best Seller" c'est 'forcément' la plus élevée alors on fait ça "à la brutasse"):
=MAX(Tableau2[Vendu])
Note: Ici il est important de préciser l'origine de la colonne (aka 'Tableau2'), l'objectif étant d'utiliser cette valeur en dehors du-dit tableau.
Maintenant que je connais "mon max", je cherche le N° de la ligne sur laquelle se trouve cette valeur. Ici j'utilise un EQUIV ou je recherche ma valeur dans la colonne "Vendu".
=EQUIV(MAX(Tableau2[Vendu]);Tableau2[Vendu]
Pour le détail à l'attention du néophyte:
=EQUIV(-Ce que je recherche-;-Où je le cherche-;-Emplacement pour le "Type" dont on ne se sert pas ici mais qui est nécessaire au bon fonctionnement-)
Comme je connais maintenant "la Ligne" ou se trouve la valeur que je recherche, j'ai plus qu'a faire un INDEX pour avoir la première colonne (Objet) de mon Tableau.
=INDEX(Tableau;EQUIV(MAX(Tableau[Vendu]);Tableau5[Vendu]
=INDEX(-Où je cherche-;-Le N° de ligne obtenu avec la formule précédente-;-Le N° de la colonne ou se trouve la valeur que je veux, dans mon cas c'est la Colonne A, donc: 1-)
Ok, j'admets que c'est bourré de faiblisses:
- Si je rentre un "nouveau" produit (j'entends: "Non existant") faut que je mette mon tableau intermédiaire à jour manuellement pour que ça fonctionne.
- En cas d'égalité c'est seulement "le premier de la liste" qui ressort.
- Etc etc...
Mais dans l'immédiat -et surtout pour une utilisation non professionnelle- ça va le faire.
Incroyable comme une petite chose "aussi simple" finalement devient incroyablement complexe quand on veut l'automatiser non?
En tout cas, merci à tous pour votre temps et votre implication.
Tulipe: Je ne doute pas que ta solution fonctionne, encore faudrait-il que j'arrive à la faire fonctionner! XD
Bonne fin de journée à tous!
- Messages
- 3'678
- Excel
- 365, 2019
- Inscrit
- 11/04/2020
- Emploi
- Formateur bureautique, dvpt de fichiers
Ensuite et toujours dans Tableau2, je commence par rechercher ma valeur maximum du produit vendu (vu que c'est "le Best Seller" c'est 'forcément' la plus élevée alors on fait ça "à la brutasse"):
=MAX(Tableau2[Vendu])
Note: Ici il est important de préciser l'origine de la colonne (aka 'Tableau2'), l'objectif étant d'utiliser cette valeur en dehors du-dit tableau.
Maintenant que je connais "mon max", je cherche le N° de la ligne sur laquelle se trouve cette valeur. Ici j'utilise un EQUIV ou je recherche ma valeur dans la colonne "Vendu".
=EQUIV(MAX(Tableau2[Vendu]);Tableau2[Vendu]
De rien, j'imagine.
As-tu laissé les fonctions en matricielles ? J'en doute, sinon ça fonctionnerait.