Bonsoir,
J'avais bien signalé que la formule renvoyait la même valeur que la fonction RANG, si celle-ci avait pu être utilisée. Il m'avait semblé que c'était ce que tu voulais d'ailleurs, mais ce n'est apparemment pas le cas...
Faire ce que tu demandes en formules est un peu compliqué , même en utilisant plusieurs colonnes...
NB.SI n'accepte que des plages de cellules, et refuse des matrices calculées, et FREQUENCE serait d'un emploi malaisé... On va donc opérer de façon plus simple par VBA .
Sub RangClientJour()
Dim aa, rng(), i%, r%
With ActiveSheet.Range("A1").CurrentRegion
.Sort key1:=.Cells(1, 2), key2:=.Cells(1, 3), key3:=.Cells(1, 1), _
order1:=xlAscending, order2:=xlAscending, order3:=xlAscending, _
Header:=xlYes
aa = .Value
End With
ReDim rng(1 To UBound(aa), 0)
For i = 2 To UBound(aa)
If aa(i, 2) = aa(i - 1, 2) And aa(i, 3) = aa(i - 1, 3) Then
If aa(i, 1) <> aa(i - 1, 1) Then r = r + 1
rng(i, 0) = r
Else
r = 1: rng(i, 0) = r
End If
Next i
rng(1, 0) = "Rang"
ActiveSheet.Range("E1").Resize(UBound(aa)).Value = rng
End Sub
Beaucoup moins compliqué qu'avec formules, aussi simpliste que si on numérotait à la main !
Cordialement.