Microsoft 365 [FORMULES] Tableau de synthèse avec SOMMEPROD, sans TCD, ni VBA

  • Initiateur de la discussion Initiateur de la discussion ralph45
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

ralph45

XLDnaute Impliqué
Bon samedi et weekend, ami.e.s excellien.ne.s !

Je butte depuis tôt ce matin (et je n'ai pas fait la fête hier soir...) sur une solution que je pensais simple, et finalement pas tant que ça...

Dans le fichier joint("Pays_Produits"), vous trouverez un tableau basique (A2:O13) où sont référencés 10 pays dans lesquels sont dispatchés (ou pas !) 13 produits.

Je veux dans un tableau de synthèse (Q2:S7) obtenir le nombre de produits agrégés en gammes (ça c'est bon, tout de même) et compter le nombre de pays référencés. Et c'est là où je coince avant d'aller prendre mon 4ème café (tellement cela m'énerve) !

--> En gros, compter le nombre de pays où la gamme de produits (A, B, C, D) est bien valorisée (<>0) dans les cellules (Q3:Q6)

Je tiens à préciser que le gabarit du tableau ne peut-être modifié (mis à part le nombre de lignes)

Une bonne âme pourrait-elle me désembrouiller les pauvres neurones du matin ?
Encore merci !
 

Pièces jointes

Solution
Décidemment ChatGPT devient de plus en plus mon ami. 🙂
En PJ un essai avec :
VB:
=SOMMEPROD(--(PRODUITMAT(--(PRODUITS_A<>0);TRANSPOSE(COLONNE(C3:F3)^0))<>0))
( A valider par Maj+Ctrl+Entrée sur les anciennes versions XL, inutile avec 365 )

Add, bonjour Job.

NB: Pour les possesseurs de 365, ChatGPT propose :

Variante sans colonne intermédiaire (formule matricielle)​

Tu peux utiliser une formule matricielle (fonction BYROW si tu as Excel 365 ou Excel 2021) :


=COUNT(FILTER(BYROW(C3:F12, LAMBDA(row, SUM(row))), BYROW(C3:F12, LAMBDA(row, SUM(row)<>0))))
Cette formule compte directement le nombre de lignes dont la somme est non nulle.
Evidemment non testé, je n'ai que 2007.
Bonjour Ralph,
Pas trouvé de solution par formules alors en PJ un essai avec une fonction perso, en attendant mieux.
( Je sais, "Sans VBA", mais ça peut servir à d'autres. Je suis sur qu'un esprit éclairé trouvera la solution )
VB:
Function NbComptes(Plage)
Dim T, Nb%, S%, i%, j%
T = Plage: Nb = 0
For i = 1 To UBound(T)
    S = 0
    For j = 1 To UBound(T, 2): S = S + T(i, j): Next j
    If S <> 0 Then Nb = Nb + 1
Next i
NbComptes = Nb
End Function
 

Pièces jointes

Décidemment ChatGPT devient de plus en plus mon ami. 🙂
En PJ un essai avec :
VB:
=SOMMEPROD(--(PRODUITMAT(--(PRODUITS_A<>0);TRANSPOSE(COLONNE(C3:F3)^0))<>0))
( A valider par Maj+Ctrl+Entrée sur les anciennes versions XL, inutile avec 365 )

Add, bonjour Job.

NB: Pour les possesseurs de 365, ChatGPT propose :

Variante sans colonne intermédiaire (formule matricielle)​

Tu peux utiliser une formule matricielle (fonction BYROW si tu as Excel 365 ou Excel 2021) :


=COUNT(FILTER(BYROW(C3:F12, LAMBDA(row, SUM(row))), BYROW(C3:F12, LAMBDA(row, SUM(row)<>0))))
Cette formule compte directement le nombre de lignes dont la somme est non nulle.
Evidemment non testé, je n'ai que 2007.
 

Pièces jointes

Dernière édition:
Bah tu le fais par formule, c'est plus simple manuellement.
Perso, je trouve au contraire que c'est plus compliqué puisqu'il faut modifier chaque "étiquette" une par une.

Ça évite de modifier les données initiales du demandeur, et en plus c'est moche ce "souligné" non caché. 😅


Mais c'est juste une histoire de goût personnel. 😉
 
Dernière édition:
Bonsoir,

@ralph45, vu que j'aime bien la logique et comprendre, pourrais-tu m'expliquer en quoi

=SOMMEPROD(--(PRODUITMAT(--(PRODUITS_A<>0);TRANSPOSE(COLONNE(C3:F3)^0))<>0))

est plus simple que

=SOMME((BYROW(INDIRECT(R3);SOMME)<>0)*1)
ou si tu préfères
=SOMME((BYROW(PRODUITS_A;SOMME)<>0)*1)

(ce n'est pas que je veux avoir raison mais je trouvais simplement amusant cette "justification")
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour