Si tu avais indenté, tu aurais vu qu'il manquait un End If.
Sub test1009()
For i = 2 To Range("e65536" ).End(xlUp).Row
'trouve le max dans la plage
y = i
Do Until Cells(i, 5) <> Cells(i + 1, 5)
' Dans la ligne suivante, tu fais un test
' sur une variable non initialisée
If Cells(i, 9).Value > maxi Then
maxi = Cells(i, 9).Value
' Ici tu affecte une valeur à une variable
' qui ne sera pas utilisée
ligne = Cells(i, 9).Row
End If
i = i + 1
Loop
'test dans la plage
For z = y To i
If Cells(z, 9) < (maxi - 0.5) Then
Cells(z, 9).Interior.ColorIndex = 4
End If ' <- ICI
Next z
maxi = 0
Next i
End Sub
Je travaille à un code un peu plus propre et je te l'envoie dès que j'ai le temps (cfr taff)