Pour moi il y a une nouvelle erreur...
en effet en colonne S c'est un trop perçu, donc il faut compter que les soins dépassant le quotas non ?
Hors dans le fichier pour la journée du 02/01/2016 si on inverse les 1 et 2 des lignes Excel 27 et 28, la macros mettra en trop perçu 15.90 au lieu de 7.95 car sur les deux soins de la ligne 28 (après inversion) un seul sera en trop perçu et non pas les deux, non ?
Donc voici le code qui prend en compte un seul paiement de soins sur les deux s'il le faut...
Option Explicit
Dim i, nclD, nbM, nbS, ln, dte, dep
Sub Dépassements()
'Initialisation
Range("M5:M" & Range("M" & Rows.Count).End(xlUp).Row).Interior.Color = xlNone
Range("S5:S" & Range("M" & Rows.Count).End(xlUp).Row).ClearContents
nclD = Range("B5")
dte = Range("L5")
For i = 5 To Range("B" & Rows.Count).End(xlUp).Row
nbM = 0
nbS = 0
ln = i
While Range("B" & ln) = nclD And Range("L" & ln) = dte
If Range("M" & ln) = "SOINS" Then
nbS = nbS + 1 * Range("N" & ln)
If nbS = 4 Then
dep = True
ElseIf nbS > 4 Then
Range("M" & ln).Interior.Color = RGB(255, 0, 0)
If dep = True Then
Range("S" & ln) = Range("R" & ln) * Range("N" & ln)
Else
Range("S" & ln) = Range("R" & ln) - (Range("R" & ln) / (Range("N" & ln)) * (nbS - 4))
dep = True
End If
End If
ElseIf Range("M" & ln) = "MASSAGE" Then
nbM = nbM + 1
If nbM > 3 Then
Range("M" & ln).Interior.Color = RGB(255, 0, 0)
Range("S" & ln) = Range("R" & ln)
End If
End If
ln = ln + 1
Wend
nclD = Range("B" & ln)
dte = Range("L" & ln)
i = ln - 1
dep = False
Next i
End Sub
@ bientôt
LouReeD