=PRENDRE(TRIER(FILTRE(A2:C37;$A2:$A37=J1);3;-1;0);3)
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [J1]) Is Nothing Then Exit Sub
Dim P As Range
Application.ScreenUpdating = False
With [A1].CurrentRegion
.AutoFilter 1, [J1] 'filtre automatique
Set P = .Offset(1).SpecialCells(xlCellTypeVisible)
.AutoFilter
Set P = Intersect(P, .Columns(2).Resize(, 2))
End With
With [J3].Resize(Rows.Count - 2, 2)
.Clear 'RAZ
If P Is Nothing Then Exit Sub
P.Copy .Cells(1) 'copier-coller
.RemoveDuplicates Array(1, 2), Header:=xlNo 'supprime les lignes doublons
.Sort .Cells(1, 2), xlDescending, .Cells(1), , xlAscending, Header:=xlNo 'tri sur 2 colonnes
End With
[J6].Resize(Rows.Count - 5, 2).Clear 'garde les 3 premiers
End Sub
=LET(
toto1;UNIQUE(FILTRE(Tableau1[Opération];Tableau1[Service]=J1));
toto2;SOMME.SI.ENS(Tableau1[Montant];Tableau1[Service];J1;Tableau1[Opération];toto1);
TRIER(ASSEMB.H(toto1;toto2);2;-1)
)
Bonjour,Bonjour
VB:=PRENDRE(TRIER(FILTRE(A2:C37;$A2:$A37=J1);3;-1;0);3)
=LET(
toto1;UNIQUE(FILTRE(Data[Opération];Data[Service]=J1));
toto2;SOMME.SI.ENS(Data[Montant];Data[Service];J1;Data[Opération];toto1);
PRENDRE(TRIER(ASSEMB.H(toto1;toto2);2;-1);3;2)
)
=PRENDRE(TRIER(FILTRE(Data[[Opération]:[Montant]];Data[Service]=J1);2;-1;0);3)
A placer en I4
=PRENDRE(TRIER(FILTRE(Data[[Opération]:[Montant]];(Data[Service]=J1)*(Data[Opération]<>"A4"));2;-1;0);3)
=LET(
toto1;UNIQUE(FILTRE(Data[Opération];(Data[Service]=J1)*(Data[Opération]<>"A4")));
toto2;SOMME.SI.ENS(Data[Montant];Data[Service];J1;Data[Opération];toto1);
PRENDRE(TRIER(ASSEMB.H(toto1;toto2);2;-1);3;2)
)