Tri automatique suivant un temps

Salut à tous...

tout d'abord, j'ai cherché un peu partout sur le net mais pas vraiment de réponse à ma question et les macros ne me parlent pas vraiment... Je me tourne donc vers vous...

J'ai besoin de faire un tableau pour un championnat de course automobile... Dans ce tableau, j'aurai :

  • Nom, prénom
  • Temps tour #1
  • Temps tour #2
  • Temps tour #3
  • Meilleur temps au tour

Ce que je voudrai, c'est d'abord savoir si mon format de cellule est le bon pour les temps :

Format de cellule -> Personnalisé -> mm:ss,000

Ensuite, je classe le meilleur des 3 temps de chaque pilote par la formule suivante (si vous avez plus simple, je prends) :

=SI(G2<H2;G2;SI(H2<I2;H2;I2))

Ensuite, je cherche un moyen pour automatiser le tri croissant dès qu'un temps est entré...

Et enfin, bin je sais plus donc si ça me revient, j'éditerai mon post...

Voilà à quoi ça devrait ressembler...

classement

Merci d'avance pour vos réponses...

Bonsoir

Il aurait mieux valu que tu joignes ton fichier.

Bon, c'est dimanche et j'ai du temps.

Regarde si c'est ce que tu attends :

99gtt.zip (11.91 Ko)

Amicalement

Nad

Ah désolé, je pensais qu'un screen serait plus simple pour ceux qui savent faire, j'y penserai la prochaine fois...

Donc, je viens de lire ton fichier et dans le fonctionnement, c'est bien ça... Mais (oui, il y a toujours un mais) y'a-t-il moyen d'automatiser le tout le monde soit dans le bon ordre (1, 2, 3, 4 etc au lieu de 2, 3, 1, 4 etc) dès le meilleur temps entré dans le tableau ?

Mis à part ça, c'est tout bon... Merci à toi...

Edit : pour le format des cellules (mm:ss,000), j'ai bon où il y a mieux/plus simple ?

Re

Peux-tu être plus explicite ? Dans mon fichier, la colonne A est le classement du coureur selon le meilleur temps de la colonne H.

Edit : le format de cellule est OK

Nad

Alors en fait, je voudrai que la liste des pilotes se cale automatiquement dans le bon ordre...

Dans le fichier actuel, ça donne :

2    LUI    lui    01:01,234    01:00,123    01:02,736    01:00,123
3    MOI    moi    01:01,123    01:00,456    01:02,789    01:00,456
1    TOI    toi    01:02,432    00:59,835    01:01,645    00:59,835
4    EUX    eux    01:02,562    01:02,296    01:03,127    01:02,296

Et je voudrais que ça donne :

1    TOI    toi    01:02,432    00:59,835    01:01,645    00:59,835
2    LUI    lui    01:01,234    01:00,123    01:02,736    01:00,123
3    MOI    moi    01:01,123    01:00,456    01:02,789    01:00,456
4    EUX    eux    01:02,562    01:02,296    01:03,127    01:02,296

Comme ça, les meilleurs temps sont classés par ordre croissant... Je sais que je peux actualiser ces données via la fonction "Trier du plus petit au plus grand" mais si une fonction permet de le faire automatiquement, c'est mieux...

OK - Il faut une macro.

Quand tu fais ENTREE dans une cellule, le curseur se place dans la colonne de droite ou dans la cellule du dessous ?

Nad

Dans la cellule du dessous... Je n'ai jamais vu l'autre cas (si tu peux m'expliquer le pourquoi du comment, je prends aussi)...

Re

Le déplacement du curseur est un choix personnel. Moi, je préfère qu'il se déplace vers la droite car je saisis plus souvent par colonnes que par lignes et je m'en sors mieux avec certaines macros comme celle qui est dans le fichier.

Pour modifier, Bouton Excel, Options excel, Options avancées

capture

Dans ce nouveau fichier, dès que tu auras saisi le Temps#3 (avec la validation vers la droite), ou en cliquant sur une cellule de la colonne H, le tri se fera.

69gtt-v02.zip (15.26 Ko)

Amicalement

Nad

Nickel !!! Sauf pour la première ligne... Elle reste toujours à la première ligne même si le temps est supérieur aux autres...

J'aimerai bien savoir comment tu as fait pour faire tout ça aussi rapidement, ça m'intéresse pour mes futurs fichiers...

Re

Zut ! Je n'avais pas vu !

Par contre, je ne comprends pas pourquoi.

Si quelqu'un peut regarder pourquoi se code ne trie pas la ligne 2 :

Sub Tri()
    Dim LastRow As Integer
    LastRow = ActiveSheet.Range("C65536").End(xlUp).Row
    Range("C2:H" & LastRow).Sort Key1:=Range("H2"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End Sub

Merci

Amicalement

Nad

Bonjour

Dan m'a donné la correction. Il suffisait de modifier

Range("C2:H" & LastRow).Sort Key1:=Range("H2"),

par

Range("C1:H" & LastRow).Sort Key1:=Range("H1"),

Amicalement

Nad

Bonjour,

Ou Header:=xlGuess par Header:=xlNo

Re

Merci OOoiste ; c'est noté.

Amicalement

Nad

C'est royal, merci Nad !!!

Je n'ai pas testé l'astuce de OOoiste mais tant que la première soluce fonctionne, c'est bien...

Par contre, il faut penser à changer le code de la macro si on rajoute des colonnes; j'ai rajouté 1 colonne et changé le code :

Range("C1:H" & LastRow).Sort Key1:=Range("H1"), Order1:=xlAscending, Header:=xlGuess, _

Par :

Range("C1:I" & LastRow).Sort Key1:=Range("I1"), Order1:=xlAscending, Header:=xlGuess, _

Tout bon, je commence à piger le truc, sauf que je ne saisis pas un brin de code...

Merci encore...

bonjour,

je crois que tu tries à partir

de c2,bloc de départ du tri dans la macro.

Mettre plutot range=C1:H et key1=rangeH1

et hop ça roule......

Non non, comme je viens de le dire, j'ai rajouté une colonne (qui n'a rien à voir avec les calculs) donc j'ai du décaler aussi la valeur dans la macro... J'ai testé et ça fonctionne...

Rechercher des sujets similaires à "tri automatique suivant temps"