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

Résolu Classement de course à étape

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
104
Deleted member 453598
D
Réponses
3
Affichages
927
Réponses
5
Affichages
399
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…