Re,
CB60, avec cette formule tu n'élimines pas les doublons. Pour les éliminer il faut introduire une multiplication par 1/NB.SI(plage;plage) sur la colonne MEMS mais en limitant plage à une journée pour avoir le résultat. Il faudrait donc décaler toutes les plages pour qu'elles se correspondent sur la même journée-patient, ce qui suppose une base triée par patient et journée, et qu'on n'ait pas de confusion possible, ce qui n'est jamais garanti...
Je propose une fonction personnalisée, avec quelques réserves (sur nombre de lignes) mais on peut essayer de tester.
Function NBPRISESJOUR(mems As Range, patient, daterel)
Dim d As Object, i&, pdm$, k, n%
Set d = CreateObject("Scripting.Dictionary")
With mems
For i = 1 To mems.Rows.Count
pdm = .Cells(i, 1) & .Cells(i, 3) & .Cells(i, 2)
d(pdm) = .Cells(i, 4)
Next i
End With
pdm = patient & daterel & "*"
For Each k In d.keys
If k Like pdm Then n = n + d(k)
Next k
NBPRISESJOUR = n
End Function
Sur un petit échantillon, pas de problèmes. Je pense que jusqu'à une centaine de milliers de lignes ça devrait aller. Je n'ai toutefois pas osé mettre en recalcul automatique.
A utiliser comme une fonction d'excel : =NBPRISESJOUR(tableauPatientsMemsDatesNombres;PatientCherché;DateCherchée)
Un tableau patients-dates sans doublon avec formule en regard limiterait le nombre de formules...
Cordialement.
Le fichier. Le code de la fonction est dans Module1.