Sommeprod et filtre

Résolu/Fermé
qhse60 - 10 déc. 2015 à 10:36
JvDo Messages postés 1978 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 28 septembre 2020 - 10 déc. 2015 à 12:48
Bonjour,

Là je sèche complètement. J'ai crée une liste de validation avec une macro pour filtrer une feuille "DATA" contenant des données genre date, nom, nbre de panneaux, etc...

Sur l'autre feuille "TABLEAU DE BORD" j'ai un tableau pour effectuer mes calculs.

Donc suivant le mois sélectionné, je cherche les occurrences avec la formule: =SOMMEPROD(1/NB.SI(DATA!G25:G100;DATA!G25:G100))

Mon problème est que la formule prends en compte les lignes masquées. Comment puis combiner cette formule avec une formule comme SOUSTOTAL pour n'avoir que les lignes visibles dans mon calcul.

Merci d'avance.

A voir également:

2 réponses

Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 412
10 déc. 2015 à 11:11
Bonjour
le plus simple semble être de créer une colonne hors champ incluse dans le filtrer, mais qui peut être masquée avec cette formule qui commence en ligne 25:

=SI(NB.SI($G$25:G25;G25)>1;0;1)

attention au $ pour tirer la formule jusqu'à 100

et ensuite il ne reste qu'à affecter un code =SOUSTOTAL(9;champ) à cette colonne quelque soit l'affichage du filtre.

crdlmnt


2
JvDo Messages postés 1978 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 28 septembre 2020 858
Modifié par JvDo le 10/12/2015 à 13:45
Bonjour à tous,

si tu as la possibilité d'installer Morefunc de Laurent Longre, tu peux utiliser
=NB(VALEURS.UNIQUES(TAB.FILTRE(G25:G100)))
ou
=NB.DIFF(TAB.FILTRE(G25:G100))

Sinon, tu vas sur le site de J. Boisgontier http://boisgontierjacques.free.fr/pages_site/sommeprod.htm#OccurUniquesFiltre
et tu trouves la formule matricielle
=SOMME(--(FREQUENCE(SI(SOUS.TOTAL(3;DECALER(G25:G100;LIGNE(INDIRECT("1:"&LIGNES(G25:G100)))-1;;1));EQUIV(G25:G100;G25:G100;0));LIGNE(INDIRECT("1:"&LIGNES(G25:G100))))>0))


cordialement
2