Use the Rank() function with mode and format parameters to return a single value instead of a range:
Rank(Max(If(ConditionType = 'A' AND ConditionDate=vLastDate, Montant)), 4, 1)
That ", 4, 1" tells the Rank() function to return a single value for each row (4) and in case of coincidence, the lowest value (1). You will find further reading on the Rank() modes and formats in the Reference Manual. Some values may be repeated, but that's the way the Rank() function works at least in version 10 SR4 and version 11.
Hope that helps.