Bonjour,
Voilà la formule que je propose :
1 2 3 4 5 6 7 8
|
=SOMMEPROD( (MOD((LIGNE(H9:T45)-1);8)<3)
* ( ((COLONNE(H9:T45)=8) + (COLONNE(H9:T45)=16)) * (H9:T45<=3)
+(COLONNE(H9:T45)=12)*(H9:T45<=2)
+(COLONNE(H9:T45)=20)*H9:T45<=4)))
/NB( H9:H11; L9:L11; P9:P11; T9:T11;H17:H19;L17:L19;P17:P19;T17:T19;
H25:H27;L25:L27;P25:P27;T25:T27;H33:H35;L33:L35;P33:P35;T33:T35;
H41:H43;L41:L43;P41:P43;T41:T43) |
Un peu d'explications...
Tout d'abord, la fonction NB() permet les plages disjointes, on peut donc écrire
1 2 3
| NB( H9:H11; L9:L11; P9:P11; T9:T11;H17:H19;L17:L19;P17:P19;T17:T19;
H25:H27;L25:L27;P25:P27;T25:T27;H33:H35;L33:L35;P33:P35;T33:T35;
H41:H43;L41:L43;P41:P43;T41:T43) |
Ensuite, pour la partie NB.SI(), la fonction SOMMEPROD() est plus puissante.
On va travailler sur la plage H9:T45 puis appliquer des filtre pour sélectionner les blocs intéressants, qui sont répartis de manière régulière.
Les blocs sont de 3 lignes toutes les 8 lignes, ce qui donne la première partie de la fonction :
(MOD((LIGNE(H9:T45)-1);8)<3)
On va multiplier cette première partie avec le reste, pour faire un "et" logique.
Pour les colonnes, en position 8 et 16 on a pour critère <=3, en position 12 le critère est <=2 et en position 20 on a pour critère <=4.
Pour la colonne 20, on écrit donc colonne = 20 ET valeur <=4 :
(COLONNE(H9:T45)=20)*H9:T45<=4)
Pour la colonne 12, colonne = 12 ET valeur <=2
(COLONNE(H9:T45)=12)*(H9:T45<=2)
Et enfin pour les colonnes 8 et 16, ( colonne = 8 OU colonne = 16 ) ET valeur <=3
1 2 3
| * ( ((COLONNE(H9:T45)=8) + (COLONNE(H9:T45)=16)) * (H9:T45<=3)
+(COLONNE(H9:T45)=12)*(H9:T45<=2)
+(COLONNE(H9:T45)=20)*H9:T45<=4))) |
Et voilà... bon courage pour la digestion !
Partager