ARRAYFORMULA et NBVAL Le sujet est résolu

Avatar de l’utilisateur
TheZig
Messages : 32
Inscription : 18 mars 2023 18:08
A remercié : 7 fois
Remercié : 3 fois

ARRAYFORMULA et NBVAL

Message par TheZig »

Bonjour,

J'utilise ArrayFormula dans Google Sheets, afin de ne pas avoir besoin de saisir des formules dans certaines colonnes à chaque nouvelle ligne.

Pour les sommes, produits et concaténations, je n'ai aucun souci: tout fonctionne impecc.

Par contre ça coince avec  les fonctions de type NB, NB.SI ou NBVAL:

Par exemple, je suis bénévole dans une association de loisirs de village, et pour gérer les adhérents et leurs activités, dans une feuille, les premières colonnes me servent pour les coordonnées des adhérents, puis les colonnes H à P, représentent chacune une activité, pour lesquelles on renseigne un tarif (qui peut être de zéro) lorsqu'elle est pratiquée par l'adhérent.

Pour l'instant, dans la colonne P, la ligne 6 étant ma 1ère ligne de tableau, j'ai les formules =NBVAL(H6:O6), à la 2ème ligne =NBVAL(H7:O7) etc , qui comptent le nombre de cellules contenant une valeur (et donc le nombre d'activités pratiquées par chaque adhérent).
Je voudrais faire un ArrayFormula, de façon à ne pas avoir besoin de devoir saisir une formule systématiquement à chaque nouvelle ligne, mais je n'arrive pas à trouver la syntaxe adéquate:

par exemple si je mets la formule
=ARRAYFORMULA
(SI(ESTVIDE(B6:B50);;NBVAL(H6:H50)+NBVAL(I6:I50)+NBVAL(J6:J50)+NBVAL(K6:K50)+NBVAL(L6:L50)+NBVAL(M6:M50)+NBVAL(N6:N50)+NBVAL(O6:O50)))
bien sûr, ça me calcule à chaque ligne le total global de la plage H6:O100, c'est à dire vu qu'il y a au total 126 activités comptées, à chaque ligne ça m'indique 126 !!! Ce n'est pas du tout cela que je veux, sinon j'aurais fait directement un NBVAL(H6:O50)


Quelqu'un pourrait-il me mettre sur la voie ?
 
Ce qui se conçoit bien, s'énonce clairement (Boileau) 
Avatar de l’utilisateur
NC-Ahmet

Coach Numericoach
Invétéré
Messages : 86
Inscription : 19 sept. 2022 14:09
A remercié : 16 fois
Remercié : 19 fois

Re: ARRAYFORMULA et NBVAL

Message par NC-Ahmet »

Hello,

J'espère que tu vas bien ! 

Saches que toutes les formules ne fonctionnent pas forcément avec ArrayFormula.

Étant en déplacement dans le train actuellement j'utilise mon téléphone pour t'écrire et ça va être difficile pour moi de rentrer dans les détails. 

Cependant tu dois utiliser la fonction ByRow, qui permet d'exécuter une fonction Lambda ligne par ligne.

Voici la formule à renseigner dans ton cas de figure :
=ByRow(H6:O50; LAMBDA(ligne; NBVAL(ligne)))

Pour plus d'informations, voici un article du blog qui peut t'aider à mieux comprendre le fonctionnement de ByRow.

Tiens moi au courant, en espérant que ça t'aide.
A+ !

 
Avatar de l’utilisateur
TheZig
Messages : 32
Inscription : 18 mars 2023 18:08
A remercié : 7 fois
Remercié : 3 fois

Re: ARRAYFORMULA et NBVAL

Message par TheZig »

A dire vrai, j'avais trouvé une solution, mais un peu lourde:
D'abord j'avais mis cette formule: =ArrayFormula(SI(ESTVIDE(B5:B);"";(SI(NON(ESTVIDE(H5:O));1;0)))) qui me donnait un tableau avec les valeurs 0 ou 1 selon qu'il y avait qqchose ou non dans les cellules (tableau que je mettais dans des colonnes ensuite masquées)
puis =ArrayFormula(SI(ESTVIDE(B5:B);"";Q5:Q+R5:R+S5:S+T5:T+U5:U+V5:V+W5:W+X5:X))  pour calculer le total par ligne de ce tableau.

Avec la formule que tu me donnes là, j'obtiens exactement le même résultat, mais c'est beaucoup plus simple  !  Vraiment super ! Je n'en attendais pas tant.

Je vais effectivement bûcher les fonctions ByRow et LAMBDA, parce que j'aime bien comprendre.

Merci beaucoup, et bonne journée


PS. Par contre, je suis obligé de toutes façons de passer par un ArrayFormula pour rajouter une condition permettant de ne rien afficher pour les lignes vides de ma plage:  =ArrayFormula(SI(ESTVIDE(B5:B50);;ByRow(H5:O50;LAMBDA(ligne;NBVAL(ligne)))))
et heu, si je puis me permettre une question: à propos de LAMBDA, où peut-on trouver une liste des différents nom de variables que l'on peut passer (par exemple comme: ligne) ?
Ce qui se conçoit bien, s'énonce clairement (Boileau) 
Avatar de l’utilisateur
vesseldepth

Membre tout neuf
Messages : 3
Inscription : 08 nov. 2023 03:49

Re: ARRAYFORMULA et NBVAL

Message par vesseldepth »

 PS. Par contre, je suis obligé de toutes façons de passer par un ArrayFormula pour rajouter une condition permettant de ne rien afficher pour les lignes vides de ma plage:  =ArrayFormula(SI(ESTVIDE(B5:B50);;ByRow(H5:O50;LAMBDA(ligne;NBVAL(ligne))))) penalty kick online
et heu, si je puis me permettre une question: à propos de LAMBDA, où peut-on trouver une liste des différents nom de variables que l'on peut passer (par exemple comme: ligne) ?
 
Existe-t-il une solution à ça? Je suis très curieux. 
Répondre

Rejoignez la discussion 💬

Vous devez être enregistré pour participer à la discussion et échanger avec les différents membres

Inscrivez-vous dès aujourd'hui

Vous n'êtes pas encore membre ? Rejoignez-nous gratuitement dès aujourd'hui et contribuer en postant votre réponse ou question sur tous les forums disponibles

Inscription

Connectez-vous