Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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 :
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 :
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
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…