Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2013 Trouver la position de la somme max, ligne par ligne, dans une plage

CISCO

XLDnaute Barbatruc
Bonjour à tous

Soit le tableau ci-dessous.

Est-ce que vous auriez une formule pour trouver le prénom de la personne ayant eu le plus de points au total, donc en faisant la somme ligne par ligne, sans utiliser la formule (ni ses déclinaisons, en remplaçant le ET par un OU, ou par un *, ou par...)
Code:
SI(ET(SOMME(C3:F3)>SOMME(C4:F4);SOMME(C3:F3)>SOMME(C5:F5));"Paul";SI(SOMME(C4:F4)>SOMME(C5:F5);"Pierre";"Julie"))
ni une formule matricielle, ni Power-Query, ni du VBA ?
Dans l'exemple ci-dessus, on doit trouver Julie.
D'avance merci

@ plus
 

job75

XLDnaute Barbatruc
Autre solution avec le nom défini ST :
Code:
=SOUS.TOTAL(9;DECALER(Feuil1!$C$2:$F$2;LIGNE(INDIRECT("1:1000"));))
et la formule en H4 :
Code:
=INDEX(B3:B1002;EQUIV(MAX(ST);ST;0))
 

Pièces jointes

  • Classeur1.xlsx
    10.1 KB · Affichages: 7

CISCO

XLDnaute Barbatruc
Bonjour

Merci Job75
Et oui, avec une colonne intermédiaire ou une plage nommée, ou une formule nommée, c'est possible.
Et sans cela, est-ce qu'il y a une autre solution ?

@ plus
 
Dernière édition:

CISCO

XLDnaute Barbatruc
Bonsoir

Mais justement, je cherchais une solution encore plus simple (sans...), et si possible plus polyvalente...
Avec des colonnes intermédiaires, on peut faire beaucoup de chose. Avec une plage ou une formule nommées, on peut raccourcir la formule affichée. Avec du matriciel...

@ plus
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil, @CISCO, @job75

Avec 365, je ne trouve pas Julie mais la somme de Julie
=MAX(BYROW($C$3:$F$5;LAMBDA(a;SOMME(a))))
Je ne maitrise pas assez ces fonctions pour aller plus loin.

Si des formulistes du 365ième passent pas ici, qu'ils n'hésitent pas
 

Staple1600

XLDnaute Barbatruc
Re

Finalement, j'ai trouvé Julie

(sans Macro, sans PowerQuery, sans colonne auxiliaire et sans recours à ChatGPT)

Le seul problème, @CISCO, c'est que cela t'oblige à upgrader ton Excel car ces fonctions ne sont pas hélas sur Excel 2013.

(C'est ce qui fait j'ai franchi le pas il y pas si longtemps )
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour @CISCO , @job75 , @Staple1600 ,

Pour faire varier le plaisir, une autre formule en H2 sans colonne supplémentaire. Avec Excel 2013, PRODUITMAT() nécessite sans doute une validation matricielle.

La formule en H2 est :
VB:
=INDEX(B3:B5;EQUIV(MAX(PRODUITMAT(C3:F5;TRANSPOSE(COLONNE(C3:F3)/COLONNE(C3:F3))));PRODUITMAT(C3:F5;TRANSPOSE(COLONNE(C3:F3)/COLONNE(C3:F3)));0))

COLONNE(C3:F3)/COLONNE(C3:F3) retourne une matrice à seule ligne et à autant de colonnes qu'il y a de colonnes dans la matrice des données sources (ici x4). Cette matrice ne comporte que des valeurs 1 soit la matrice (1, 1, 1, 1).

TRANSPOSE(COLONNE(C3:F3)/COLONNE(C3:F3)) transpose la matrice en ligne en une matrice à une colonne soit la matrice (1; 1; 1; 1).

PRODUITMAT(C3:F5;TRANSPOSE(COLONNE(C3:F3)/COLONNE(C3:F3)) le PRODUITMAT fait la multiplication de la matrice des données sources par la matrice uni-colonne des 1.

On obtient une matrice à une seule colonne et 3 lignes. Chaque valeur de ligne est la somme des valeurs de la ligne correspondante de la matrice source.

Après on applique un simple MAX de la matrice du produit pour trouver le max des sommes des lignes.

Le reste n'est qu'un classique Index( Equiv( ...
 

Pièces jointes

  • CISCO-max somme ligne- v1.xlsx
    17.7 KB · Affichages: 6
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
ni une formule matricielle, ni Power-Query, ni du VBA ?
Et pourquoi toutes ces restrictions ?

D'ailleurs, je ne vois pas de formule unique qui ne soit pas matricielle pour faire cela puisque justement on travaille sur une matrice de lignes !

Les solutions avec des noms sont des matricielles qui ne le montrent pas puisque les noms eux-mêmes renvoient des matrices. Donc les formules les employant sont aussi matricielles mais c'est caché.

Fondamentalement, la simple fonction SOMMEPROD est aussi une formule matricielle. Excel nous dispense juste de la validation matricielle car il le fait pour nous.

Excel sait se passer de validation matricielle depuis longtemps quand on utilise une formule matricielle dans une MFC, formule matricielle qui n'est jamais validée par Ctrl+Maj+Entrée.

O365 a étendu cela aux formules des feuilles de calcul.

Donc pas de validation matricielle n'implique pas (n'implique plus pour O365) que la formule n'est pas matricielle.

Pour ma part, la méthode avec la colonne supplémentaire est la plus simple, avec les formules les plus courtes et les plus compréhensibles (donc formules dont on assure le plus facilement la maintenance dans le temps).
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,

Juste pour comparer les méthodes avec le nom ST, avec une colonne supplémentaire et avec la fonction ProduiMat().

Voir le fichier joint. Cliquez sur le bouton "Comparer".
 

Pièces jointes

  • CISCO- compar- v2.xlsm
    60.3 KB · Affichages: 9
Dernière édition:

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…