Excel- Formule matricielle

YOUSS34

XLDnaute Nouveau
Bonjour à tous,

J'aurais besoin d'aide concernant une formule matricielle que j'ai faîtes s'il-vous-plaît.
Dans les colonnes G, H et I de ma feuille WOC, j'ai des erreurs liés à des absences de données ou à des données égal à 0 dans ma base de données (Woc Query). J'ai essayé pas mal de chose mais étant donné que c'est une formule matricielle je n'arrive pas à contre-passer ces erreurs. C'est pour cela que je sollicite votre aide. Je voulais savoir comment fait t'on pour que la formule matricielle ne prenne pas en compte une donnée absente ou égal à 0 s'il-vous-plaît ? je précise également que dans la formule ci-contre :
=SOMME(SI(($A10='WOC QUERY'!$B$7:$B$1000)*(G$1='WOC QUERY'!$D$2:$BI$2)*(G$2='WOC QUERY'!$D$3:$BI$3)*(G$3='WOC QUERY'!$D$4:$BI$4)*(G$4='WOC QUERY'!$A$7:$A$1000);'WOC QUERY'!$D$7:$BI$1000))/NB(SI(($A10='WOC QUERY'!$B$7:$B$1000)*(G$1='WOC QUERY'!$D$2:$BI$2)*(G$2='WOC QUERY'!$D$3:$BI$3)*(G$3='WOC QUERY'!$D$4:$BI$4)*(G$4='WOC QUERY'!$A$7:$A$1000);'WOC QUERY'!$D$7:$BI$1000))
Le [ / NB(Si(( ] me permet d'éliminer les valeurs en double au niveau de la hiérarchie par exemple vous pouvez voir ci-dessous dans ma feuille WOC query qui est la base de donnée que j'ai une hiérarchie qui reprends la valeur total de l'activité spares : pour l'activité spares par exemple, le résultat que je veux retourner n'est pas la somme (41,039+41,039) mais uniquement 41,039 :
Gross Raw Material [+] Spares 41,039 31,285 3,697 20,938 15,555
Gross Raw Material [-] Spares 41,039 31,285 3,697 20,938 15,555

Je vous remercie pour votre aide,

Cordialement.
 

Pièces jointes

  • classeur 1 testxlsx.xlsx
    65.1 KB · Affichages: 35

Jocelyn

XLDnaute Barbatruc
Bonjour le Forum,
Bonjour Youss34,

Hum hum vraiment pas sur d'avoir compris le besoin car je ne vois pas vraiment ou doit apparaitre ton exemple avec 41,039 mais bon un essai quand même pour éviter la division si 2 lignes

A tester en H10 de la feuille WOC formule matricielle

Code:
=SOMME(SI((G$1='WOC QUERY'!$D$2:$BI$2)*(G$2='WOC QUERY'!$D$3:$BI$3)*(G$3='WOC QUERY'!$D$4:$BI$4);DECALER('WOC QUERY'!$D$7:$BI$7;EQUIV($A10&G$4;'WOC QUERY'!$B$7:$B$1000&'WOC QUERY'!$A$7:$A$1000;0)-1;)))

et a étirer vers la droite et le bas

Cordialement
 

Dugenou

XLDnaute Barbatruc
Bonjour Youss, Jocelyn,
S'il y a un div0 c'est qu'il n'y a pas de données ?
dans le cas : sierreur(...;0) pourrait suffire ?
Code:
=SIERREUR(SOMME(SI(($A10='WOC QUERY'!$B$7:$B$1000)*(I$1='WOC QUERY'!$D$2:$BI$2)*(I$2='WOC QUERY'!$D$3:$BI$3)*(I$3='WOC QUERY'!$D$4:$BI$4)*(I$4='WOC QUERY'!$A$7:$A$1000);'WOC QUERY'!$D$7:$BI$1000))/NB(SI(($A10='WOC QUERY'!$B$7:$B$1000)*(I$1='WOC QUERY'!$D$2:$BI$2)*(I$2='WOC QUERY'!$D$3:$BI$3)*(I$3='WOC QUERY'!$D$4:$BI$4)*(I$4='WOC QUERY'!$A$7:$A$1000);'WOC QUERY'!$D$7:$BI$1000));0)
Cordialement
 

Jocelyn

XLDnaute Barbatruc
re,
Bonjour l'ami Dugenou,

Si la formule sans la division peut convenir on est pas obligé de passer par une formule a valider matriciellement mais par un simple sommeprod()

du genre toujours a mettre en G10 avec le plus de Dugenou le sierreur
Code:
=SIERREUR(SOMMEPROD((G$1='WOC QUERY'!$D$2:$BI$2)*(G$2='WOC QUERY'!$D$3:$BI$3)*(G$3='WOC QUERY'!$D$4:$BI$4)*DECALER('WOC QUERY'!$D$7:$BI$7;EQUIV($A10&G$4;'WOC QUERY'!$B$7:$B$1000&'WOC QUERY'!$A$7:$A$1000;0)-1;));"")

Cordialement
 

YOUSS34

XLDnaute Nouveau
1000;0)-1;));"")
Bonjour Jocelyn, je te remercie pour ta réponse rapide, en effet sommeprod à l'air de bien marcher.
Pour ma culture j'ai essayer de comprendre ta formule mais je n'y arrive pas à partir du decaler, serait'il possible pour toi de m'expliquer rapidement comment elle fonctionne? au moins je pourrais la faire tous seul sur des cas similaires la prochaine fois
Merci encore et bonne journée.
 

YOUSS34

XLDnaute Nouveau
Bonjour Youss, Jocelyn,
S'il y a un div0 c'est qu'il n'y a pas de données ?
dans le cas : sierreur(...;0) pourrait suffire ?
Code:
=SIERREUR(SOMME(SI(($A10='WOC QUERY'!$B$7:$B$1000)*(I$1='WOC QUERY'!$D$2:$BI$2)*(I$2='WOC QUERY'!$D$3:$BI$3)*(I$3='WOC QUERY'!$D$4:$BI$4)*(I$4='WOC QUERY'!$A$7:$A$1000);'WOC QUERY'!$D$7:$BI$1000))/NB(SI(($A10='WOC QUERY'!$B$7:$B$1000)*(I$1='WOC QUERY'!$D$2:$BI$2)*(I$2='WOC QUERY'!$D$3:$BI$3)*(I$3='WOC QUERY'!$D$4:$BI$4)*(I$4='WOC QUERY'!$A$7:$A$1000);'WOC QUERY'!$D$7:$BI$1000));0)
Cordialement
Bonjour Dugenou,
Merci pour ta réponse, effectivement si il y a un div0 c'est qui'l n'y as pas de donnée mais aussi que dès fois il y a un 0, 'est pour cela que si il divise par un 0 cela ne peux fonctionner

Meri à toi
 

Discussions similaires

Réponses
3
Affichages
157
Réponses
17
Affichages
333
Réponses
14
Affichages
645

Statistiques des forums

Discussions
312 196
Messages
2 086 097
Membres
103 116
dernier inscrit
kutobi87