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
NextA 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...