Tri automatique pour classement individuel

ctsblv

XLDnaute Nouveau
Bonjour
Je suis débutant sous excel ,mais depuis que j'ai trouvé votre forum j'ai appri bien des choses .Bravo et merci à tous les intervenants .Ceci est ma premiere
demande d'aide sur votre site.
Je suis licencié dans un club de tir (CTSBLV ,mon pseudo) et je voudrais améliorer la gestion des saisies des scores sans passer par des macros(si possible).

1 tri automatique lors de la saisie des scores(à ce jour il y a une macro soumise à la fin de la competition)
2 effectuer un Classement par equipe sur les 3 meilleurs scores.
- de 3 tireurs pas d'équipe .
Si vous avez des solutions merci de me détailler les formules je suis loin d'être un pro .
Merci d'avance et surtout continuez de garder la convivialite de ce site .

En PJ une des 9 feuilles du classeur.
 

Pièces jointes

  • Classeur1.xls
    39.5 KB · Affichages: 172
  • Classeur1.xls
    39.5 KB · Affichages: 174
  • Classeur1.xls
    39.5 KB · Affichages: 175

CISCO

XLDnaute Barbatruc
Re : Tri automatique pour classement individuel

Bonsoir

Il y a peut être deux problèmes :
*On a en AQ22
SI($E$4:$E$86=AP22;ENT($J$4:$J$86))
Cette formule "tire" toutes les valeurs de la plage J4:J86 placée sur une ligne contenant en colonne E le même contenu que AP22 (Aaaaaaaaa dans l'exemple), et pour les autres lignes, des FAUX.
Malheureusement, comme toute la plage J4:J86 n'est pas remplie, en face de certain Aaaaaaaaa, il y a un vide, par exemple en J27, remplacé par excel par un #VALEUR.
La liste est donc du style {325;258;FAUX;FAUX;#VALEUR;#VALEUR;385}.
Toujours en AQ22, on a
SOMME(GRANDE.VALEUR(SI($E$4:$E$86=AP22;ENT($J$4:$J$86));{1;2;3})
Excel doit faire avec cette formule la somme des trois plus grandes valeurs de cette liste, et ça, il ne sait pas le faire, car il ne sait pas classer les #VALEUR par rapport aux autres nombres de la liste ! D'où le message d'erreur #VALEUR.

Pour contrer ce problème, j'ai remplacé le "" dans la formule de la colonne J par des 0, (ainsi les cellules apparemment vide dans la colonne J contiennent en réalité des 0).

*Comme toute la colonne J n'est pas remplie, il ne faut pas faire un test NB.SI(E4:E86;AP22)<3, mais un test n'utilisant que les lignes remplies (à moins que la condition <3 ne soit pas demandée dans le cas des femmes).


Autre remarque :
Attention, dans ton fichier, il y a deux types de formules faisant presque la même chose :

*l'une, ne différenciant pas les vrais ex-aequo
en AC4
Code:
=SI(NB(N$4:N$9)<R4;"";ENT(GRANDE.VALEUR(N$4:N$9;R4))+LIGNE()/1000)

qui fait appel à la colonne N

ou encore en Z7
Code:
=SI(NB(J$4:J$9)<R7;"";ENT(GRANDE.VALEUR(J$4:J$9;R7))+LIGNE()/1000)

qui fait appel à la colonne J


*et l'autre les différenciant :
Code:
=SI(NB($N$4:$N$9)<$R4;"";INDEX(J$4:J$9;EQUIV(PETITE.VALEUR($K$4:$K$9;$R4);$O$4:$O$9;0)))
faisant appel à la colonne K (celle des rangs du score /400)


Je pense qu'il est risqué d'utiliser les deux types de formule sur le même fichier

@ plus
 

Pièces jointes

  • TirCtsblv8 400 et 600.zip
    31.8 KB · Affichages: 38
  • TirCtsblv8 400 et 600.zip
    31.8 KB · Affichages: 38
  • TirCtsblv8 400 et 600.zip
    31.8 KB · Affichages: 38
Dernière édition:

ctsblv

XLDnaute Nouveau
Re : Tri automatique pour classement individuel

Bonsoir Cisco
Le classement sur 400 est spécifique aux CF ,JF aux D1,D2,D3 .
c'est pour cela que j'avais laissé la colonne J vide pour les JG et S1,2 et 3.
Je vais encore essayer quelques tests ,si je n'y arrive pas ,je vais laisser tomber le classement sur 400 puisque tu penses que les 2 formules ne font pas bon ménage sur la même feuille.
Je te tiens au courant .
Merci encore et A+
 

ctsblv

XLDnaute Nouveau
Re : Tri automatique pour classement individuel

Bonjour à tous
Cisco,dans ton fichier :
je ne vois pas de 0 en colonne J dans les formules .
La condition <3 est valable pour les dames ;si <3 tireuses pas d'equipe .
Les 2 types de formule doivent être présentes;Le classement individuel sur 400 peut être different du classement sur 600. EX les JF et D1 en colonnes K et O .C'est pour cela que le classement sur 400 en K est <> de O.
OOOO ,QQQQ et TSB doivent être à blanc dans le classement par équipe comme TOV.
Pas de classement sur 400 pour les garçons .
Est-ce clair ??
Je joins le fichier qui reste à peaufiner .Je fais toujours des tests pour éliminer les qq erreurs du classement par equipe .Eliminer les lui sans score et mettre à blanc les club avec - de 3 tireuses .
A+
 

Pièces jointes

  • TirCtsblv8 400 et 600.zip
    30.3 KB · Affichages: 32
  • TirCtsblv8 400 et 600.zip
    30.3 KB · Affichages: 33
  • TirCtsblv8 400 et 600.zip
    30.3 KB · Affichages: 34

CISCO

XLDnaute Barbatruc
Re : Tri automatique pour classement individuel

Bonjour à tout le monde, et bon début de W.E.

Bonjour ctsblv

La condition <3 est valable pour les dames ;si <3 tireuses pas d'equipe .

Pour utiliser la condition <3 dans le cas des dames, il faut utiliser la fonction NB.SI uniquement sur les plages remplies et pas sur l'ensemble E$4:E$86 (puisque les AP22 sur les autres plages de la colonne E ne doivent pas être pris en compte). Cela donne en AQ22 :
Code:
=SI(OU(AP22="";NB.SI(E$4:E$9;AP22)+NB.SI(E$19:E$24;AP22)+NB.SI(E$34:E$41;AP22)+NB.SI(E$52:E$59;AP22)+NB.SI(E$70:E$77;AP22)<3);"";SOMME(GRANDE.VALEUR(SI($E$4:$E$86=AP22;ENT($J$4:$J$86));{1;2;3}))+LIGNE()/1000)

Il ya peut être moyen de faire avec un seul NB.SI, en regroupant les plages utiles, avec quelque chose du style
Code:
{=SI(OU(AP22="";NB.SI({E$4:E$9;E$19:E$24;E$34:E$41;E$52:E$59;E$70:E$77};AP22)<3);"";SOMME(GRANDE.VALEUR(SI($E$4:$E$86=AP22;ENT($J$4:$J$86));{1;2;3}))+LIGNE()/1000)}
mais je n'y suis pas arrivé, cela ne fonctionne pas. Si quelqu'un pourrait nous renseigner sur la question, histoire de simplifier l'écriture et la compréhension de la formule.

@ plus
 

CISCO

XLDnaute Barbatruc
Re : Tri automatique pour classement individuel

Rebonjour

je ne vois pas de 0 en colonne J dans les formules .
A+

mais ils y sont bien :p

Avec excel, il est possible de cacher les 0, histoire de rendre le fichier plus lisible.

Pour les faire réapparaitre dans mon dernier fichier, cliques :
* sur le bouton rond Microsot Office, en haut à gauche
*puis options excel en bas de la nouvelle fenêtre ouverte
*puis sur options avancées

Finalement, coches Afficher un zéro dans les cellules qui ont une valeur nulle.

Au besoin, au cas où j'aurai oublié quelqu chose, passes par l'aide d'excel et fais une recherche sur "Affichage des zéros".

@ plus
 

CISCO

XLDnaute Barbatruc
Re : Tri automatique pour classement individuel

Rebonjour

J'ai modifié les formules dans les cellules en bleu foncé, ce qui donne finalement le fichier ci-joint (Il faut mieux vérifier).

@ plus
 

Pièces jointes

  • TirCtsblv8TEST 400 et 600ter.zip
    32 KB · Affichages: 36
Dernière édition:

ctsblv

XLDnaute Nouveau
Re : Tri automatique pour classement individuel

rebonjour
Je connaisais la manip pour afficher les 0.Par défaut tous mes fichiers excel ne les affichent pas .
Sur ton dernier fichier ,je vois bien les 0 lorsque je sélecte les cellules .

Il y a un pb dans le classement par équipe ,le score du tireur est = au score + le n° de ligne et dépasse le score maximum 400.Sinon tout a l'air ok .

Je continue les tests.C'est un vrai plaisir de travailler avec des gens comme toi !!! merci
A+
 

CISCO

XLDnaute Barbatruc
Re : Tri automatique pour classement individuel

Rebonjour

J'ai oublié le /1000 dans certaines plages de la colonne Z, à partir de la ligne 19. Ceci explique cela.
Il faut donc le rajouter, ce qui donne +LIGNE()/1000, nécessaire pour différencier les totaux/400 identiques, les uns des autres, donc pour obtenir les bons résultats, non pas dans le classement par équipe, mais dans l'affichage des 4 premiers de chaque équipe (colonne AH, AJ, AL et AN) (cf ta remarque dans ton post 36 ci-dessus).

@ plus

PS : J'ai modifié mon dernier fichier en conséquence
 
Dernière édition:

ctsblv

XLDnaute Nouveau
Re : Tri automatique pour classement individuel

Bonsoir
Avec cette formule:
=SI(NB($N$19:$N$24)<$R19;"";ENT(INDEX(J$19:J$24;EQUIV(PETITE.VALEUR($K$19:$K$24;$R19);$K$19:$K$24;0)))+LIGNE()/1000),
dans la colonne Z j'ai le tireur IIIII qui se retrouve avec le score du tireur JJJJJ
Si je remplace K par O j'ai le score equivalent au bon tireur mais non classé.
Ce qui me convient
A+
 

CISCO

XLDnaute Barbatruc
Re : Tri automatique pour classement individuel

Bonjour à tous

Encore un oubli de ma part :

En faisant du copier-coller de Z9 à Z19, et après modification, j'avais écri
Code:
SI(NB($N$[B][SIZE="3"]4[/SIZE][/B]:$N$[B][SIZE="3"]9[/SIZE][/B])<$R19;"";ENT(INDEX(J$[B][SIZE="3"]4[/SIZE][/B]:J$[B][SIZE="3"]9[/SIZE][/B];EQUIV(PETITE.VALEUR($K$19:$K$24;$R19);$K$19:$K$24;0)))+LIGNE()/1000)
et oublié de modifier le 4 en 19 et le 9 en 24.

Il fallait écrire
Code:
SI(NB($N$[COLOR="Red"]19[/COLOR]:$N$[COLOR="red"]24[/COLOR])<$R19;"";ENT(INDEX(J$[COLOR="red"]19[/COLOR]:J$[COLOR="red"]24[/COLOR];EQUIV(PETITE.VALEUR($K$19:$K$24;$R19);$K$19:$K$24;0)))+LIGNE()/1000)

puisque le travail doit être fait par rapport aux lignes de 19 à 24.

Pour les autres plages de la colonne Z, c'est OK
Je modifie en conséquence mon dernier fichier ci-dessus (post 53).

@ plus
 
Dernière édition:

ctsblv

XLDnaute Nouveau
Re : Tri automatique pour classement individuel

Bonjour à tous
Cisco,j'avais fait la modif.Dans mon message d'hier que je recopie ci dessous:
Bonsoir
Avec cette formule:
=SI(NB($N$19:$N$24)<$R19;"";ENT(INDEX(J$19:J$24;EQUIV(PETITE.VALEUR($K$19:$K$24;$R19);$K$19:$K$24;0) ))+LIGNE()/1000),
dans la colonne Z j'ai le tireur IIIII qui se retrouve avec le score du tireur JJJJJ
Si je remplace K par O j'ai le score equivalent au bon tireur mais non classé.
Ce qui me convient
A+
L'erreur se retrouve pour les D1:Le classement sur 400 peut être différent que sur 600
Peux-tu jeter un oeil sur le dernier fic que je t'ai envoyé pour avis??
A+
 

CISCO

XLDnaute Barbatruc
Re : Tri automatique pour classement individuel

Bonjour

J'avais bien compris que le classement /400 n'était pas forcément identique à celui /600, mais je n'avais pas pensé que cela posait un problème du coté de l'affichage des résultats.

En pratique, le total/400 (colonne Z) doit être affiché dans le même ordre que le total / 600 (colonne AC), donc sans tenir compte du classement/400, mais en tenant compte du classement/600, donc de la colonne O.

Pour cela, on a plusieurs possibilités, par exemple, pour la plage Z4:Z9 :

*utiliser la même méthode qu'en colonne AC, mais au lieu d'afficher la valeur prise dans la colonne N avec INDEX(N$4:N$9..., afficher celle prise dans la colonne J avec INDEX(J$4:J$9... ce qui donne
Code:
=SI(NB($N$4:$N$9)<$R4;"";ENT(INDEX([SIZE="3"]J$4:J$9[/SIZE];EQUIV(PETITE.VALEUR($O$4:$O$9;$R4);$O$4:$O$9;0)))+LIGNE()/1000)

*en recherchant en C4:C9 le NOM contenu dans S4, et en affichant le contenu de la colonne J sur la même ligne avec
Code:
=SI(NB($N$4:$N$9)<$R4;"";ENT(INDEX(J$4:J$9;EQUIV([SIZE="3"]S4;C$4:C$9[/SIZE];0)))+LIGNE()/1000)

ou plus simplement avec, avec la fonction RECHERCHEV
Code:
=SI(NB($N$4:$N$9)<$R4;"";ENT([SIZE="3"]RECHERCHEV(S4;C$4:J$9;8))+[/SIZE]LIGNE()/1000)

ces deux dernières possibilités ne fonctionnant bien que si il ni a pas d'homonyme (puisqu'on travaille avec les noms contenus dans C$4:C$9).

@ plus

PS : Dans ces conditions, la colonne K ne sert plus à rien, il me semble.
 

Pièces jointes

  • TirCtsblv8TEST 400 et 600suite.zip
    32.2 KB · Affichages: 57
Dernière édition:

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 105
Messages
2 085 350
Membres
102 870
dernier inscrit
Armisa