Evolution d'un classement

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 !

seblosc1

XLDnaute Nouveau
Bonjour à tous,
j'ai un tableau excel qui classe des équipes de foot selon leurs résultats quotidiens. Chaque jour j'entre leurs scores, et j'execute une petite macro pour classer mon tableau par points.

J'aimerai savoir s'il est possible d'avoir quelque chose comme une petite flèche, associée à chaque nom d'équipe, qui permet de montrer l'évolution du classement d'une équipe entre chaque jour, mais de manière automatique. Cela supposerait qu'excel se "souvienne" du classement précédent le tri à chaque fois mais je ne sais pas si ça existe...

Merci d'avance !
 
Re : Evolution d'un classement

Salut Seblosc, Hulk,

Voici une piste :

L'évènement WorkSheet_Activate retient le classement précédent dans un tableau "Rang".
Lorsque le nombre de points est modifié, le nouveau classement est comparé au tableau "Rang" et la colonne D reçoit une des trois flèches.

A+
Horatio
 

Pièces jointes

Dernière édition:
Re : Evolution d'un classement

C'est nickel chrome ! ! exactement ça ! Merci beaucoup Lord Nelson !
Par contre je ne comprends pas comment marche la colonne D, il n'y a aucune formule dedans... C'est surement ce que tu appelles "Form_Activate" mais je ne sais pas comment ça s'active.
En tout cas merci encore !
 
Re : Evolution d'un classement

Re,

Tu trouveras le code en tapant Alt F11 pour basculer sous VBA puis un double-clic sur "Feuil1".

Tu verras alors ceci :

Code:
Dim Rang(9) As Long

Private Sub Worksheet_Activate()
Dim I As Long
For I = 3 To 9
  Rang(I) = Range("C" & I)
Next

End Sub

Cette boucle mémorise le classement des équipes.

Puis ceci :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim I As Long
If Not Intersect(Target, Range("B3:B9")) Is Nothing Then
  For I = 3 To 9
    If Range("C" & I) < Rang(I) Then
      Range("D" & I) = Chr(246)
    ElseIf Range("C" & I) > Rang(I) Then
      Range("D" & I) = Chr(248)
    Else
      Range("D" & I) = Chr(243)
    End If
  Next
End If
End Sub

Là on guette les changements survenus dans la colonne B (attribution des points) et, pour chaque équipe, on compare le nouveau classement (colonne C) avec le classement précédent.
Si le nouveau classement est inférieur, on fait apparaître en colonne D une flèche montante (le caractère 246 de la police Wingdings). S'il est supérieur, on appelle le caractère 248 (flèche descendante), sinon la flèche horizontale (code 243).

Content d'avoir pu t'aider.

A+
Horatio
 
- 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
11
Affichages
606
Réponses
15
Affichages
2 K
Retour