Verification si un classement est correcte

Bonjour a tous et a toutes,

Voici mon problème :

Je recois des resultats de courses et je veux tester si les classements sont bons

J'ai 2 colonnes que je veux vérifier:

la première est la colonne Temps que je trie du plus petit au plus grand, la seconde est Place que je trie de la meme facon (donc trie sur 2 colonnes, en premier critère la colonne Temps, puis la colonne Place).

Il faut que je teste sur la colonne Place : si le premier nombre est plus petit que le suivant, et ainsi de suite. Si ce n'est pas le cas, on colorie la cellule.

Il n'y a pas de place ex aequo dans les fichiers.

Ca fonctionne jusque la boucle for, qui ne detecte pas une mauvaise place : 1 2 3 5 4 par exemple

Sub testClassement()

Dim Rng As Range

Dim Place As Range

Range("A" & tempLigne & ":K" & tempIlasrow).Sort Key1:=tempsOfficiel, Order1:=xlAscending, Key2:=place _

, Order2:=xlAscending

pas = 1

For Each Rng In place

For i = 1 To Rng.Value Step pas

If (i) > (i + pas) Then

'Cells(t(i, 1), 1).Interior.ColorIndex = 3

Cells(place(i, 1)).Interior.ColorIndex = 3

End If

Next i

Next Rng

End Sub

Avez vous une idée ? Auriez vous fait autrement ?

Merci d'avance pour votre aide.

Salut Olive,

tu te compliques la vie inutilement!

Puisque tu dis qu'il n'y a pas d'ex-aequo, après le tri, il te suffit d'écrire les n° par boucle!

Dans ton instruction de tri, sauf erreur de ma part, n'ayant pas ton fichier, il y avait une erreur :

).Sort Key1:=tempsOfficiel

Sauf si tempsOfficiel est le nom d'une cellule, tu dois mentionner l'adresse de la cellule qui commande le tri, ici, Range("A2")

    iRow = Range("A" & Rows.Count).End(xlUp).Row
    Range("A2:K" & iRow).Sort Key1:=Range("A2"), Order1:=xlAscending, Orientation:=xlTopToBottom
    For x = 2 To iRow
        Cells(x, 2) = x - 1
    Next

A tester, comme on dit

A+

Bonjour curulis57,

tempsOfficiel est un range, de meme que place d'ou le tri selon ces 2 clés.

Set tempsOfficiel = Range(Cells(tempLigne, tempColonne), Cells(tempIlasrow, tempColonne))

Set place = Range(Cells(tempLigne2, tempColonne2), Cells(tempIlasrow2, tempColonne2))

Je vais regarder apres etre aller faire dodo...

Au lieu de faire la cellule du dessus est inferieur a celle du dessous, tu soustraits les cellules qui forcement doit etre egale a 1. Il est vraiment temps que j'aille me coucher la... LOL

Je te dis demain. Merci pour cette lumière...

Rechercher des sujets similaires à "verification classement correcte"