Bonsoir,
J'ai beau essayer de multiples façons de faire ce double tri, ça ne veut pas fonctionner.
Le tri n°1 et le tri n°2 fonctionnent séparément ; mais ils ne fonctionnent pas ensemble...
Par ailleurs, le tri n°2 se fait sur des surfaces.
Ces mêmes surfaces sont obtenues à travers l'application d'une formule (car je ne sais pas le faire en VBA)
Range("D3:D110").FormulaR1C1 = _
"=IF(SUMIF(CSV!R[-1]C[30]:R[107]C[30],'VNEI (EI)'!RC[-2],CSV!R[-1]C[41]:R[107]C[41])=0,"""",SUMIF(CSV!R[-1]C[30]:R[107]C[30],'VNEI (EI)'!RC[-2],CSV!R[-1]C[41]:R[107]C[41]))"
Il s'agit simplement de la formule "SOMME.SI, "codée" en VBA. (Pour quelqu'un qui sait utiliser VBA, c'est certainement effroyable).
Je recherche donc le contenu de la cellule "B3" dans la plage de données AH2:AH110 d'une autre feuille (1), à chaque fois que le contenu est répété dans cette plage, j'additionne les surfaces correspondantes dans la plage AS2:AS110.
(Le mieux serait "la dernière ligne utilisée, mais je pense que les BDD utilisées n’excéderont jamais 110 lignes).
J'ai donc des sommes de surfaces que je souhaite classer.
Le classement ne se fait pas bien lorsque je demande "du plus petit au plus grand", les données se retrouvent dans le désordre...
Voici le code que j'utilise pour faire le double tri:
Application.AddCustomList ListArray:=Array("Très fort", "Fort", "Modéré", "Faible", "Très faible", "Nul", "")
CustomOrder1 = Application.CustomListCount
With Table
Range(Cells(3, 1), Cells(110, 10)).Sort Key1:=Cells(3, 10), Key2:=Cells(3, 4), Order1:=CustomOrder1, Order2:=xlDescending, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, _
Header:=xlYes, Orientation:=xlTopToBottom, MatchCase:=False
End With
Bonne soirée !