Comment trier automatiquement ?

Fermé
EspGre67 Messages postés 19 Date d'inscription dimanche 17 mai 2015 Statut Membre Dernière intervention 19 février 2017 - 14 févr. 2017 à 20:58
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 - 19 févr. 2017 à 09:09
Bonjour,

Alors voilà,
J'ai un fichier excel, concernant Eurovision, et je fais des statistiques des pays qui ont le plus de chance de gagner. Pour cela, je met chaque points de différents classements de personnes différentes dans le tableau excel.
Les points sont 1,2,3,4,5,6,7,8,10 et 12.

Bref, tout ça pour dire que je dois après avoir rempli la ligne pour chaque pays, supprimer tous les points et marquer le total dans la première case pour que le classement ne bouge pas.
Dès que je rentre des points dans chaque case, le classement se fait automatiquement; mais je voulais savoir comment il était possible de mettre chaque nouveaux points reçus par le pays dans la même case dont le classement se ferait automatiquement, ce qui éviterait de remplir des lignes de points...

Je sais pas si j'ai été clair, désolé...

Le lien pour le document Excel:
https://www.cjoint.com/c/GBot5CeCsrr

Merci beaucoup d'avance !
Cordialement

1 réponse

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
15 févr. 2017 à 09:32
Bonjour,
Code modifie pour clasement seulement si toutes les notes sont entrees pour une colonne(si j'ai compris la demande)

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim MaPlage As Excel.Range
    Dim Derlig As Long, Col_Point As String, CelNVid_Point As Long
    
    If Target.Count > 1 Then Exit Sub
    Set MaPlage = Range(Cells(1, 1), Cells(100, 100))
    Derlig = Range("B" & Rows.Count).End(xlUp).Row      'Nombre de pays (derniere cellule non vide colonne B)
    If Not Application.Intersect(Target, MaPlage.Offset(0, 3).Resize(, 100)) Is Nothing Then
        Cells(Target.Row, 3) = Application.Sum(Cells(Target.Row, 4).Resize(, 100))      'cumul point ligne
        Col_Point = Split(Cells(8, Target.Column).Address, "$")(1)     'lettre colonne
        CelNVid_Point = WorksheetFunction.CountA(Range(Col_Point & "1:" & Col_Point & Derlig))      'nbr cellules non vides
        If CelNVid_Point = Derlig Then
            MaPlage.Sort Key1:=Cells(1, 3), Order1:=xlDescending, Header:=xlNo      'tri
        End If
    End If
End Sub
0
EspGre67 Messages postés 19 Date d'inscription dimanche 17 mai 2015 Statut Membre Dernière intervention 19 février 2017
19 févr. 2017 à 03:41
Bonjour,

Merci pour votre réponse, mais maintenant que j'ai rentré cela, le classement ne se fait plus automatiquement..
J'ai sûrement dû mal m'exprimer.

Par exemple quand je donne des points à un pays, j'aurai aimé les mettre dans la même colonne (et s'additionnent tout seuls) et non pas marquer chaque points dans une autre colonne
En gros, marquer tout dans une seule colonne sans que les points qui ont été ajoutés avant ne soient oubliés
+ Un tri automatique après

C'est difficile à expliquer :')

Merci beaucoup
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701 > EspGre67 Messages postés 19 Date d'inscription dimanche 17 mai 2015 Statut Membre Dernière intervention 19 février 2017
19 févr. 2017 à 09:09
Bonjour,

pour avoir le tri a chaque entree de point, deux lignes a mettre en commentaire

'If CelNVid_Point = Derlig Then
            MaPlage.Sort Key1:=Cells(1, 3), Order1:=xlDescending, Header:=xlNo      'tri
'End If


C'est difficile à expliquer :')
"Ce qui se conçoit bien s’énonce clairement, et les mots pour le dire arrivent aisément"
Nicolas BOILEAU
0