Bonjour,
Problème :
Il arrive qu'il faille dans une colonne obtenir une valeur cumulée (heures, crédits, débits, nombres, quantités), ce que nous faisons avec des formules de type
=B1+A2
formule tirée vers le bas
Une telle formule est incompatible avec ARRAYFORMULA car elle induit une dépendance circulaire.
Principe :
Nous allons utiliser le principe du produit de 2 matrices, l'une carrée de taille (n,n) et l'autre de taille (n,1)
avec une matrice carrée composée de 1 et 0 comme suit
le résultat est bien celui attendu
Solution :
La matrice carrée sera constituée en comparant les n° de lignes, une fois en colonne, et une fois en ligne avec transpose; les valeurs VRAI et FAUX sont transformées en 0 et 1
=arrayformula(1*(transpose(row(B2:B))<=row(B2:B)))
Elle sera ensuite multipliée avec les valeurs de la colonne par MMULT
=ArrayFormula(mmult(1*(transpose(row(B2:B))<=row(B2:B));1*B2:B))
puis en enlevant les lignes sans valeur :
=ArrayFormula(if(isblank(A2:A);;mmult(1*(transpose(row(B2:B))<=row(B2:B));1*B2:B)))