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

Microsoft 365 Fonction Produit sur plages de cellules de différentes longueurs

  • Initiateur de la discussion Initiateur de la discussion klin89
  • 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 !

klin89

XLDnaute Accro
Bonsoir le forum, 🙂

Comme illustré sur la capture d'image, je cherche à calculer en colonne A avec la même formule, le produit des nombres figurant dans les cellules se trouvant à droite de la colonne A, sachant que ces plages de cellules peuvent avoir différentes longueurs.
Comment adapter la formule pour la rendre dynamique si je rajoutes le nombre 2 en F4 par exemple, j'aimerais obtenir 8 en A4.
Vous allez me dire "t'as qu'à mettre =PRODUIT(B4:AA4) en A4", ben non, j'aimerais que ça aille me chercher la cellule contenant le nombre le plus à droite.


J'ai l'impression que ma question est un peu stupide 🙄
klin89
 

Pièces jointes

  • Produit.png
    6.4 KB · Affichages: 9
Dernière édition:
Bonsoir à @klin89 🙂, @TooFatBoy 🙂,

avec O365 : =PRODUIT(FILTRE(B1:XFD1;B1:XFD1<> 0))

avec des versions plus anciennes : =PRODUIT(SI(B1:XFD1=0;1;B1:XFD1)) (peut-être à valider matriciellement). Il faudra adapter XFD par l'en-tête de la dernière colonne de votre version d'Excel.
 
Re à tous,

Ok mapomme ça fonctionne 👍
Si je mets ceci, cela fonctionne aussi :
VB:
=PRODUIT(B1:XFD1)
Par contre, j'imaginais un truc plus alambiqué du genre :
Code:
=PRODUIT(B1: & la cellule la plus à droite en partant de la gauche)

klin89
 
Re,
Je crois bien que j'ai utilisé une seule fois Produit() et il y a bien longtemps.

En fait, je ne savais pas que Produit() éliminait les valeurs vides. Donc en résumé, Produit() élimine les valeurs qui ne sont pas des nombres (vide, texte, boolean).

Si tu veux quelque chose du type "=PRODUIT(B1:B & la cellule la plus à droite en partant de la gauche)", on peut essayer :
=PRODUIT(DECALER(B1;0;0;1;EQUIV(9999999;B1:XFD1)))
 
Re,
En fait, je voulais une formule dynamique pour calculer un produit qu'il soit composé de 2 ou 10 facteurs par exemple en évitant de prendre en compte la plage entière avec cette fonction Produit.
Je ne sais pas si je me fais bien comprendre, après tout ma question est peut-être absurde au final.
Précision : les facteurs placés dans une plage ne seront jamais séparés par des cellules vides.
Autre précision : il y a toujours au minimum 2 facteurs dans la plage à partir de la colonne B.
J'essaie de vous répondre dès que possible, j'ai une journée très chargée.

klin89
 
Dernière édition:
Bonsoir,

Vu que je ne les ai jamais utilisées, je tente les nouvelles références Trim
VB:
=PRODUIT(B1:.XFD1)

(remarquer le point à gauche du X)

ou en version longue
Code:
=PRODUIT(SUPPR.PLAGE(B1:XFD1;;2))

Je n'ai pas pris le temps de faire des tests de vitesse ou d'en rechercher sur le web
 
En fait, je voulais une formule dynamique pour calculer un produit qu'il soit composé de 2 ou 10 facteurs par exemple en évitant de prendre en compte la plage entière avec cette fonction Produit.
Dans tous les cas tu es obligé de donner la plage maximale possible, sauf à utiliser un Tableau Structuré, mais il faut que ton tableau soit en vertical au lieu d'horizontal.
 
Je n'avais pas vu la Supp.Plage du message de Jean-Eric mais il est vrai qu'elle prendra en compte des valeurs placées après une cellule vide ce qui ne correspond pas à la demande.

Sinon pour rester dans le "bizarre" une LAMBDA récursive qui s'arrête à la 1ère cellule vide trouvé à droite

Nommer la fonction prod
=LAMBDA(i;SI(INDIRECT(ADRESSE(LIGNE();i+1))="";1;INDIRECT(ADRESSE(LIGNE();i+1))*prod(i+1)))

Edit : pour l'utiliser saisir =prod(1)

Version de test sans avoir à définir la fonction prod
=LET(prod;LAMBDA(Fct;i;SI(INDIRECT(ADRESSE(LIGNE();i+1))="";1;INDIRECT(ADRESSE(LIGNE();i+1))*Fct(Fct;i+1)));prod(prod;1))
 
Dernière édition:
Re @klin89,

La formule =PRODUIT(FILTRE(B1:XFD1;B1:XFD1<> 0)) du message #3
et la formule =PRODUIT(DECALER(B1;0;0;1;EQUIV(9999999;B1:XFD1))) du message #5
ne sont-elles pas dynamiques ???

nota :
première formule pour O365 et seconde formule pour toutes les versions.
 
- 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

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…