Bonsoir
@job75
Formule :
=SOMMEPROD((A3:AC3=
0)*(MOD(
COLONNE(A3:AC3)-COLONNE(A3);
3)=
1)) '........... / Résultat = 4 pour les 0
Décomposition ci-dessous
On utilise MOD pour reproduire un pattern régulier sur une plage de cellules,
comme une expression régulière (regex) mais appliquée aux colonnes.
Le pattern
Chaque groupe contient 3 cellules :
[A , B , C] ' On veut travailler uniquement sur la cellule B de chaque groupe.
Deux conditions dans la formule
Condition 1 :
la cellule doit contenir la valeur recherchée (ex : 0) dans la cellule B de chaque groupe.
Condition 2 :
la cellule doit être la 2ᵉ cellule de chaque groupe de 3
MOD(COLONNE(plage) - COLONNE(première cellule); 3) = 1
Pourquoi COLONNE(plage) - COLONNE(première cellule)
COLONNE(A3:AC3) donne des indices Excel : Excel Base 1
1,2,3,4,...,29
Mais pour appliquer un pattern régulier, on travaille en
base 0 (Mémoire machine) :
0,1,2,3,...,28
Donc on écrit :
COLONNE(A3:AC3) - COLONNE(A3)
Pourquoi MOD(
...;
3)
MOD(x;3) donne la position de chaque cellule dans un groupe de 3 :
0,1,2 | 0,1,2 | 0,1,2 | ...
Groupes :
Avant MOD :
Groupe 1 : 0 1 2
Groupe 2 : 3 4 5
Groupe 3 : 6 7 8
Après MOD :
0 1 2 | 0 1 2 | 0 1 2 | ...
Pourquoi =
1
Parce que dans un groupe [0,1,2],
la position 1 correspond à la 2ᵉ cellule (B) du groupe : référence a en base 0 (mémoire machine)
0 = A ← Exclus de SOMMEPROD
1 = B ← celle qu’on garde (si elle contiennent 0) on fait la somme avec SOMMEPROD
2 = C ← Exclus de SOMMEPROD
Donc :
MOD(...;3)= 1 pour rappel [A , B , C] ' On veut travailler uniquement sur la cellule B de chaque groupe.
Logique : [A , B , C] | [D , E , F] | [G , H , I] | Etc.
sélectionne uniquement les cellules B, E, H, K, Etc.
Rôle de SOMMEPROD
SOMMEPROD combine les deux conditions :
la cellule est à la bonne position dans le pattern soit B, E, H, K, Etc.
la cellule contient la valeur recherchée soit 0
Et additionne les cas où les deux sont vrais.