Récuperer la valeur max d'une ligne

michel

XLDnaute Nouveau
Bonjour à tous,

Je suis désolé pour ce titre un peu confus, mais je dois vous avouer que je ne sais pas réellement comment exprimer dans un titre ce que je souhaite récupérer ;)

Dans le cadre d'un tableau de score établi sur Excel (dupliqué également sur Google Spreadsheet pour le partage) je cherche en vain depuis quelques jours une formule me permettant d'afficher le nom d'un joueur qui a le plus haut score dans sa ligne, le tout en fonction de la colonne qui a le score maximal.



En gros, j'effectue un =max(B6 : D6) pour trouver quelle partie a le plus haut score, et ensuite je voudrais vérifier qui a la valeur maximale dans cette colonne et afficher son nom...

J'ai déja cherché avec des vlookup, des nb.si, des index et plein d'autres formules, mais je dois vous avouer que je suis un peu perdu ;)

Si jamais quelqu'un a une solution miracle, je suis preneur !

Bon WE a tous !
 

Tibo

XLDnaute Barbatruc
Re : Récuperer la valeur max d'une ligne

Bonjour Michel et bienvenue sur XLD,

Essaye avec cette formule, basée sur l'utilisation de la fonction DECALER :

Code:
=INDEX(A2:A5;EQUIV(MAX(DECALER(A2;;EQUIV(MAX(B6:D6);B6:D6;0);4));DECALER(A2;;EQUIV(MAX(B6:D6);B6:D6;0);4);0))
@+
 

ROGER2327

XLDnaute Barbatruc
Re : Récuperer la valeur max d'une ligne

Bonjour michel, Tibo
Une autre :
Code:
=INDEX(A2:A5;EQUIV(MAX(INDEX(B2:D5;;EQUIV(MAX(B6:D6);B6:D6;0)));INDEX(B2:D5;;EQUIV(MAX(B6:D6);B6:D6;0));0))
(Gaffe aux ex æquo !)​
ROGER2327
#5039


Mercredi 11 Pédale 138 (Testament de Saint P. Ucello, le mal illuminé, SQ)
15 Ventôse An CCXIX
2011-W09-6T08:45:55Z
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Récuperer la valeur max d'une ligne

Bonjour Michel, salut Tibo, Roger, James,

Merci James pour le fichier :)

Une solution VBA avec cette fonction qui traite tous les cas de doublons :

Code:
Function Gagnant$(plage As Range, doublon As Byte)
Dim maxi As Double, lig As Long, col As Byte, i As Byte
maxi = Application.Max(plage)
With plage
  For lig = 1 To .Rows.Count
    For col = 1 To .Columns.Count
      If .Cells(lig, col) = maxi Then
        i = i + 1
        If i = doublon Then
          Gagnant = .Cells(lig, 1).Offset(, -1)
          Exit Function
        End If
        Exit For 'changement de ligne
      End If
    Next
  Next
End With
End Function
Et formule en B9, tirée sur la droite :

=Gagnant($B2:$D5;COLONNE()-1)

A+
 

Pièces jointes

  • TestMichelMaxVBA(1).xls
    31.5 KB · Affichages: 81

job75

XLDnaute Barbatruc
Re : Récuperer la valeur max d'une ligne

Re,

Ben y a mieux...

Il vaut mieux inclure la colonne des noms dans l'argument plage.

Avec la macro précédente la fonction ne se recalculait pas si l'on modifiait un nom.

Sauf à utiliser Application.Volatile, mais je préfère m'en passer.

Code:
Function Gagnant$(plage As Range, doublon As Byte)
Dim maxi As Double, lig As Long, col As Byte, i As Byte
maxi = Application.Max(plage)
With plage
  For lig = 1 To .Rows.Count
    For col = 2 To .Columns.Count
      If .Cells(lig, col) = maxi Then
        i = i + 1
        If i = doublon Then
          Gagnant = .Cells(lig, 1)
          Exit Function
        End If
        Exit For 'changement de ligne
      End If
    Next
  Next
End With
End Function
A+
 

Pièces jointes

  • TestMichelMaxVBA(2).xls
    40.5 KB · Affichages: 77

Discussions similaires

Statistiques des forums

Discussions
312 504
Messages
2 089 073
Membres
104 019
dernier inscrit
pascal la