Résolu Classement de course à étape

Nplayer76

XLDnaute Nouveau
Bonjour à tous,
j'ai cherché sur internet une solution à mon problème mais je n'ai rien trouvé de probant, je m'en remets une nouvelle fois au savoir du forum.

Voilà mon problème :
J'ai un tableau de classement général où figurent les noms et nombres de points totaux de chaque participant à une course, et j'ai un tableau de résultat pour chaque étape avec les noms des participants et les points reçus.
Je souhaiterais que dans le classement général, le nombre de points total se calcule automatiquement en allant chercher dans chaque étape le nombre de points que le participant a obtenu.

J'ai essayé avec une formule du style {=SI($H$4:$H$15=C11;$I$4:$I$15)+SI($L$4:$L$15=C11;$M$4:$M$15)} mais ça ne prend en compte que si la personne est 1ère.

Est-ce que quelqu'un a une idée, via une formule ou une macro ? J'espère avoir été assez clair (pas facile à expliquer, j'ai joint un exemple).

D'avance merci
 

Pièces jointes

  • Test.xlsx
    13.7 KB · Affichages: 25

job75

XLDnaute Barbatruc
Bonsoir Nplayer76, CISCO,

Voyez le fichier joint et ces macros dans le code de la feuille :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim d As Object, c As Range, a, b
Application.EnableEvents = False
On Error Resume Next 'si aucune SpecialCell (aucun joueur)
Set d = CreateObject("Scripting.Dictionary")
For Each c In [H3:AB14,H17:AB28].SpecialCells(xlCellTypeConstants, 2)
  d(c.Value) = d(c.Value) + c(1, 2)
Next
a = d.items: b = d.keys
tri a, b, 0, UBound(a)
[C11].Resize(d.Count) = Application.Transpose(b)
[E11].Resize(d.Count) = Application.Transpose(a)
Range("C" & d.Count + 11 & ":E" & Rows.Count) = "" 'RAZ en dessous
Application.EnableEvents = True
End Sub

Sub tri(a, b, gauc, droi)  ' Quick sort
Dim ref, g, d, temp
ref = a((gauc + droi) \ 2)
g = gauc: d = droi
Do
    Do While a(g) > ref: g = g + 1: Loop
    Do While ref > a(d): d = d - 1: Loop
    If g <= d Then
      temp = a(g): a(g) = a(d): a(d) = temp
      temp = b(g): b(g) = b(d): b(d) = temp
      g = g + 1: d = d - 1
    End If
Loop While g <= d
If g < droi Then Call tri(a, b, g, droi)
If gauc < d Then Call tri(a, b, gauc, d)
End Sub
A+
 

Pièces jointes

  • Test(1).xlsm
    27.1 KB · Affichages: 19

Discussions similaires

Réponses
3
Affichages
770
Réponses
4
Affichages
601
Réponses
11
Affichages
700

Membres actuellement en ligne

Statistiques des forums

Discussions
314 628
Messages
2 111 337
Membres
111 105
dernier inscrit
Joffrette