Cherche code pour classement

jacky49

XLDnaute Impliqué
Bonsoir le forum,

je cherche à faire un classement par VBA , en classant dabord par Total Point(colonne P) puis par Catégorie (colonne K), j'ai esayé en enregistrant directement une macro mais cela ne fonctionne pas .
merci
jacky
 

Pièces jointes

  • ESSAI CLAS.zip
    18.6 KB · Affichages: 32

jacky49

XLDnaute Impliqué
Re : Cherche code pour classement

re JCGL,

oui, excuse moi, c'est moi qui ai fait l'erreur, on classe d'abord par catégorie et ensuite par point (colonne j MAINTENANT) et j'ai donc inversé dans ton code, l'ordre mais cela ne fonctionne toujours pas. il y a toujours un cadet qui n'est pas rassemblé avec l'autre.
Alors je m'explique mieux, si j'ai 2 cadet(ou plus), il doivent etre classé les uns en dessous des autres et dans l'ordre de leur point acquis ( du plus grand nombre au plus petit).
Pour mon code , j'ai changé la colonne que tu me l'as dit et c'est ok.
merci
jacky
 

JCGL

XLDnaute Barbatruc
Re : Cherche code pour classement

Bonjour à tous,

Dans le Module1 :

Option Explicit

Sub Tri()
Application.ScreenUpdating = 0
ThisWorkbook.Sheets("CoursePointHFTC").Unprotect "rollers"
Range("B14:J49").Sort Key1:=Range("E14"), Order1:=xlDescending, Key2:=Range( _
"J14"), Order2:=xlAscending, Header:=xlNo
Range("B13").Select
yaMasque
End Sub


Sub yaMasque()
Dim yaC As Range
Application.ScreenUpdating = 0
For Each yaC In ThisWorkbook.Sheets("CoursePointHFTC").Range("E14:E49")
ThisWorkbook.Sheets("CoursePointHFTC").Unprotect "rollers"
If IsEmpty(yaC) Then yaC.EntireRow.Hidden = True
ThisWorkbook.Sheets("CoursePointHFTC").Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:="rollers"
Next
End Sub
Il faudra être vigilant sur les Catégories : respect de l'orthographe

A+ à tous
 

jacky49

XLDnaute Impliqué
Re : Cherche code pour classement

Bonjour le forum, JCGL,

Pour mon code, c'est bon, j'ai hanger les colonnes comme tu m'as dit et cela fonctionne mais pour le code de TRI, je me suis trompé, il faut classer par catégorie et ensuite par temps; j'ai donc changé ton code en mettant la colonne E(catégorie) et ensuite la colonne J(total point)mais cela ne change rien, dans l'exemple, il y a un cadet qui est classé en 1er et l'autre devrait être 2ème et il est mis à la 11ème place(son total point correspond bien à cette place)mais il faut par ex pour les cadets qu'il soit classé les uns en dessous des autres (cela correspond à la catégorie ) et par temps.
j'espère avoir été plus clair .
je rejoins le fichier car j'ai ajouté une colonne pour qu' il classe par catégorie.
merci
jacky
 

Pièces jointes

  • JC%20ESSAI%20CLAS(1).zip
    19.1 KB · Affichages: 17
  • JC%20ESSAI%20CLAS(1).zip
    19.1 KB · Affichages: 18
  • JC%20ESSAI%20CLAS(1).zip
    19.1 KB · Affichages: 21

jacky49

XLDnaute Impliqué
Re : Cherche code pour classement

re le forum, JCGL,

je viens d'essayer, cela fonctionne , mais je voudrais que le classement Total Point se fasse du plus grand au plus petit car la il se classe du plus petit au plus grand.Pour le reste , tout fonctionne.
je te rejoins le fichier pour que tu vois.
merci
jacky
 

Pièces jointes

  • JC%20ESSAI%20CLAS(1).zip
    24.3 KB · Affichages: 18
  • JC%20ESSAI%20CLAS(1).zip
    24.3 KB · Affichages: 18
  • JC%20ESSAI%20CLAS(1).zip
    24.3 KB · Affichages: 20

JCGL

XLDnaute Barbatruc
Re : Cherche code pour classement

Bonjour à tous,

Dans le Module 1 :

Code:
Option Explicit

Sub Tri()
    Application.ScreenUpdating = 0
    ThisWorkbook.Sheets("CoursePointHFTC").Unprotect "rollers"
    Range("B14:J49").Sort Key1:=Range("E14"), Order1:=xlDescending, Key2:=Range( _
            "J14"), Order2:=[B][COLOR=Red]xlDescending[/COLOR][/B], Header:=xlNo
    Range("B13").Select
    yaMasque
End Sub


Sub yaMasque()
    Dim yaC As Range
    Application.ScreenUpdating = 0
    For Each yaC In ThisWorkbook.Sheets("CoursePointHFTC").Range("E14:E49")
        ThisWorkbook.Sheets("CoursePointHFTC").Unprotect "rollers"
        If IsEmpty(yaC) Then yaC.EntireRow.Hidden = True
        ThisWorkbook.Sheets("CoursePointHFTC").Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:="rollers"
    Next
End Sub

A+ à tous
 

JCGL

XLDnaute Barbatruc
Re : Cherche code pour classement

Bonjour à tous,

Tu as rajouté une ligne dans la feuille...
Il faut en tenir compte dans le code

Code:
Sub Tri()
    Application.ScreenUpdating = 0
    ThisWorkbook.Sheets("CoursePointHFTC").Unprotect "rollers"
    Range("B13:K49").Sort Key1:=Range("E13"), Order1:=xlDescending, Key2:=Range( _
            "J13"), Order2:=xlDescending, Header:=xlNo
    Range("B13").Select
    yaMasque
End Sub


Sub yaMasque()
    Dim yaC As Range
    Application.ScreenUpdating = 0
    For Each yaC In ThisWorkbook.Sheets("CoursePointHFTC").Range("F13:F49")
        ThisWorkbook.Sheets("CoursePointHFTC").Unprotect "rollers"
        If IsEmpty(yaC) Then yaC.EntireRow.Hidden = True
        ThisWorkbook.Sheets("CoursePointHFTC").Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:="rollers"
    Next
End Sub

A+ à tous
 

jacky49

XLDnaute Impliqué
Re : Cherche code pour classement

re le forum, JCGL,

merci beucoup, cela fonctionne.
je voulais ouvrir une nouvelle discussion pour une MFC mais peut être que comme c'est le même fichier, autant continuer ici.
C'est vous qui me le direz.
Je voudrais mettre des traits double ou traits épais pour séparer les différentes catégories lorsqu'elle sont classées et j'aimarais connaitre la formule à mettre dans la MFC .
merci
jacky
 

jacky49

XLDnaute Impliqué
Re : Cherche code pour classement

bonsoir le forum, JCGL,

je joins mon fichier sur cjoint car je n'arrive pas à faire que le code me classe parcatégorie d'abord(ca c'est ok) et ensuite par temps( colonne I), cela ne va pas car j'ai ligne 15 et 16 senior H, mais celui qui as le moins de points est 1er alors que c'set celui qui as le plus de point qui devarit être 1er et aussi ligne 23 et 24 n'est pas bonne.

http://cjoint.com/?dwvcdSSGW0


merci
jacky
 

JCGL

XLDnaute Barbatruc
Re : Cherche code pour classement

Bonjour à tous,

Modifie ta formule en K13 et suivantes en :

Code:
=SI(B13="";"";SOMMEPROD((E$13:E$49=E13)*(I$13:I$49[COLOR=Red][B]>=[/B][/COLOR]I13)))
Modifie le code tri en :

Code:
Sub Tri()
    Application.ScreenUpdating = 0
    ThisWorkbook.Sheets("CoursePointHFTC").Unprotect "rollers"
    Range[COLOR=Red][B]("B13:K49")[/B][/COLOR].Sort Key1:=Range("E13"), Order1:=xlDescending, Key2:=Range( _
            "I13"), Order2:=xlDescending, Header:=xlNo
    Range("B12").Select
    yaMasque
End Sub
A+ à tous
 
Dernière édition:

Discussions similaires

Réponses
18
Affichages
787
Réponses
16
Affichages
931
Réponses
18
Affichages
563

Statistiques des forums

Discussions
312 321
Messages
2 087 265
Membres
103 500
dernier inscrit
Suk Ram