Plus de 3 critères de tri et concaténation

Résolu/Fermé
GIBO35 Messages postés 6 Date d'inscription samedi 22 décembre 2012 Statut Membre Dernière intervention 3 janvier 2013 - 2 janv. 2013 à 18:52
GIBO35 Messages postés 6 Date d'inscription samedi 22 décembre 2012 Statut Membre Dernière intervention 3 janvier 2013 - 3 janv. 2013 à 13:06
Bonsoir,
Tout d'abord j'adresse mes meilleurs voeux à tous les contributeurs de ce forum.

Je pensais en avoir fini ! Ultime test et voilà que je retrouve un bug que je ne m'explique pas. Je me résigne donc à faire appel aux experts.
Dans mon programme de gestion de courses, je dois départager les éventuels ex-aequo suivant plusieurs critères. (en plus du tri sur le cumul des points, cela fait 4 conditions de tri ...et c'est là mon problème).
1er critère = celui qui a pu retirer (joker) le meilleur score (aucun souci ça fonctionne colonne BI)
si l'égalité persiste,
2ème critère = Celui qui a battu l'autre le plus de fois (sur les quinze courses) et enfin si l'égalité persiste
Le 3ème critère = celui qui a réalisé la meilleure dernière course. (rang)
Limité à 3 conditions (excel 2003), pour pouvoir répondre à ces deux dernières conditions j'ai donc imaginé une concaténation (colonne CB) en ayant préalablement classé les valeurs (petite.valeur - colonnes BJ à BX) pour chacun des concurrents. Je vous joins ci-après la macro)
Problème : si je convertis la concaténation en numérique la meilleure dernière course (BY) ne s'affiche pas (voir 1er exemple ci-après). Si je laisse la concaténation en texte tout s'affiche correctement mais le tri ne s'exécute pas et j'ai toujours une inversion entre les 9ème et 10ème place. (Ici celui qui fait 18 (score) à la dernière course devrait être classé devant).
PS : La colonne G est le total des points cumulés qui est bien entendu le premier critère de tri avant le départage des ex-aequo.)

Quelqu'un pourrait t'il me venir en aide SVP.
Avec mes remerciements anticipés.

GIBO35


=CNUM(BJ9&BK9&BL9&BM9&BN9&BO9&BP9&BQ9&BR9&BS9&BT9&BU9&BV9&BW9&BX9&BY9)
Meil dernière course Concaténation

1 2400000000000000 4 2
2 2400000000000000 2 4
3 6600000000000000 6 6
4 8800000000000000 8 8
5 101200000000000000 12 10
6 101200000000000000 10 12
7 141400000000000000 14 14
8 161600000000000000 16 16
10 1820000000000000000 18 20
9 182000000000000000 20 18


=(BJ9&BK9&BL9&BM9&BN9&BO9&BP9&BQ9&BR9&BS9&BT9&BU9&BV9&BW9&BX9&BY9)
1 2400000000000001 4 2
2 2400000000000002 2 4
3 6600000000000003 6 6
4 8800000000000004 8 8
5 101200000000000005 12 10
6 101200000000000006 10 12
7 141400000000000007 14 14
8 161600000000000008 16 16
10 1820000000000000010 18 20
9 182000000000000009 20 18


Sub calculer_classement()
'
' calculer_classement Macro
'
Dim mdp As String
mdp = Sheets("feuil1").Range("A1").Value
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
ActiveWorkbook.Unprotect
Sheets("classement ").Visible = True
Sheets("classement ").Select
ActiveSheet.Unprotect mdp
Range("B9:CV132").Select
Selection.Sort Key1:=Range("G9"), Order1:=xlAscending, Key2:=Range("BI9") _
, Order2:=xlAscending, Key3:=Range("CB9"), Order3:=xlAscending, Header _
:=xlNo, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, DataOption3:= _
xlSortNormal
Sheets("classement ").Visible = False
Sheets("classement hommes").Visible = True
Sheets("classement hommes").Select
Range("A1").Select
ActiveSheet.Protect mdp
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic

End Sub
A voir également:

5 réponses

eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 211
2 janv. 2013 à 19:45
Bonjour,

Déposer le fichier xls (réduit au nécessaire et anonymisé) sur cjoint.com et coller ici le lien fourni.

eric

0
Eric,
Voir lien ci après
http://cjoint.com/?3AcuWdIsZ87

Avec mes remerciements

GIBO35
0
cousinhub29 Messages postés 881 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 16 avril 2024 333
2 janv. 2013 à 22:30
Bonsoir,

Sans regarder plus avant, pour faire un tri avec plus de 3 critères sur Xl 2003 (et antérieur), il suffit de commencer par un tri avec le 4ème critère, puis un tri normal, avec les 3 critères principaux....

Par exemple, pour départager tout le monde, on fait tout d'abord un tri sur le 4ème critère, puis un autre...

Bon courage
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 211
Modifié par eriiic le 2/01/2013 à 23:11
Re,

déjà je suis d'accord avec cousinduhub, fait ton tri en 2 temps.
Et avec des #NOMBRE! on ne peut pas tester grand chose sur ton fichier.

Par ailleurs ta clé en CB n'est pas correcte.
Si tu veux trier dessus il faut que tous les éléments fassent la même longueur : 2 caractères, et qu'elle reste en chaine.
=format(BJ21;"00") & format(BK21,"00") & ...
dans la mesure ou aucun nombre n'est supérieur à 99, sinon 3 car.

eric

Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bonjour cousinhub29 et Eric,
Encore une fois merci de votre disponibilté. je vais "revoir ma copie" et vous tiendrai informé. J'ai commencé mon apprentissage il y a maintenant 3 ans il se poursuit grâce à vous. merci.
A bientôt, bonne journée.

GIBO35
0
GIBO35 Messages postés 6 Date d'inscription samedi 22 décembre 2012 Statut Membre Dernière intervention 3 janvier 2013
3 janv. 2013 à 13:06
cousinhub29, Eric,
C'est nickel ! Merci
Encore un peu de boulot...en particulier pour définir automatiquement des zones d'impression. Je vais essayer de me débrouiller seul en consultant le forum !
Je vous renouvelle mes meilleurs voeux pour cette année 2013.

GIBO35
0