Stock : comparaison d'une valeur et comptage

Bonjour,

Je tente de produire un état de stock. J'ai fait un tableau des références à évaluer (feuille "état du stock"). L'usage d' un NB.SI aurait pu convenir pour un comptage simple mais :

- étape 1>Pour chacune des lignes de la feuille "état de stock" il faut voir si on retrouve la valeur en colonne A (isbn) dans la colonne C de la feuille "liste des pb".

- étape 2> Si l'isbn est présent dans la feuille "liste des pb" il faut compter, pour cet isbn, le nombre de fois ou apparait la valeur "TA" en colonne I.

Même raisonnement pour les colonnes G, H de "état de stock".

S'ajoute au pb le fait que si l'état (colonne I de "liste de pb") ne nécessite pas de commentaire, la cellule reste vide. Je soupçonne que ça ajoute de la difficulté.

En écrivant mes contraintes je réalise que c'est assez complexe. Peut être y-a-t'il une façon plus simple de raisonner pour le résultat escompté.

Qu'en pensez vous ?

En gros il faut la quantité globale, puis le dispatch dans chaque état ?

Si oui, plutôt que de chercher des informations dans plusieurs feuilles, dans votre état des stocks, ajouter les différents états possible (perdu, très bon état, mauvais, etc...) à partir de la liste des problèmes (un simple =RECHERCHEX sur l'isbn), mettez aussi une colonne « status stock » si une remontée a été faite dessus = OK, sinon = FAUX

ensuite, pour votre récapitulatif :

Total quantitée

état : très bon

état : mauvais

=NB.SI(status stock; "OK")

=QUERY(plage état du stock;select sum(colonne ISBN) where colonne colonne état trèsbon <> '' ")=QUERY(plage état du stock;select sum(colonne ISBN) where colonne colonne état mauvais <> '' ")

Il y a sans doute d'autres moyens, à l'aide de NB.SI.ENS( ou FILTER(

Bonjour,

Tu peux utiliser ça :

En G :

=byrow(A6:A;lambda(n;SIERREUR(query('liste des pb'!A2:I;"select count(I) where (I = 'TA' or I = 'ta') and C = '"&n&"' Label count(I)'' ";0);"")))

En H :

=byrow(A6:A;lambda(n;SIERREUR(query('liste des pb'!A2:I;"select count(I) where (I = 'IN' or I = 'in') and C = '"&n&"' Label count(I)'' ";0);"")))

En I :

=byrow(A6:A;lambda(n;SIERREUR(query('liste des pb'!A2:I;"select count(I) where (I = 'NR' or I = 'nr') and C = '"&n&"' Label count(I)'' ";0);"")))


Cordialement,

Fil.

Merci à tous les deux.

Je viens de tester les longues formules "byrow..." : Firefox trouve que ça lui demande de la ressource mais le compte semble bon, super.

Comme je n'ai pas indiqué de valeur quand le livre est ok la cellule est vide. Là ça coince. Je suppose qu'il faut que je remplace le vide par un ok pour pouvoir appliquer ce type de formule en F ?

Tu peux essayer ça:

Mettre en F6 et tirer vers le bas...

=SIERREUR(query('liste des pb'!$B$2:$I;"select count(C) where I is Null and C = '"&A6&"' and B contains '"&C6&"' and E matches '"&D6&"' label count(C)''";0);"")


Je viens de tester : ça fonctionne parfaitement semble-t-il. Merci beaucoup.

Pour le fun:

Mettre en F6, sans rien en dessous:

=query(map(A6:A;C6:C;D6:D;lambda(n;m;o;SIERREUR(query('liste des pb'!$B$2:$I;"select count(C) where I is Null and C = '"&n&"' and B contains '"&m&"' and E matches '"&o&"' label count(C)''";0);"")));"select Col1 where Col1 !=0")

Les formules sont très gourmandes et peuvent ralentir le fonctionnement de ton script.

Tu peux accélérer en adaptant les formules à tes besoins...

Par exemple, tu limites la taille au nombre max de lignes que tu penses devoir utiliser ( A6:A200 et A2:I200):

=byrow(A6:A200;lambda(n;SIERREUR(query('liste des pb'!A2:I200;"select count(I) where (I = 'TA' or I = 'ta') and C = '"&n&"' Label count(I)'' ";0);"")))
Rechercher des sujets similaires à "stock comparaison valeur comptage"