calcul conditionnelle

cg1980

XLDnaute Occasionnel
bonjour,
j'ai une requete sur un fichier que j'ai déjà utilisé.

mais pas contre là j'aimerais effectué un calcul.

Dans data, il faut prendre les lignes ou colF>0 et faire le calcul suivant:

(G-I)*J + (G-M)*N+(G-Q)*R + (G-U)*V. Il s'agit des perte potentiels par unité.

Ensuite, chacune de ces sommes est reporté dans l'onglet output à partir de C9 pour les codes correspondants. (la ligne 3 contient les memes codes que data col D mais en plus reduites)

Je ne suis pas sûr si le file conducteur est le meilleur pour procèder à cette étape..
merci de vos propositions
 

Pièces jointes

  • testB.xlsx
    17.9 KB · Affichages: 31
  • testB.xlsx
    17.9 KB · Affichages: 33
  • testB.xlsx
    17.9 KB · Affichages: 34

cg1980

XLDnaute Occasionnel
Re : calcul conditionnelle

bonjour. oui c'est bien ca:

je reformule peut etre plus simplement
Onglet « Data » :
1.Scanner la colonne F et traiter les lignes pour lesquels la colonne F est >0
2.Faire le caclul suivant :
(G-I)*J + (G-M)*N+(G-Q)*R + (G-U)*V. Il s'agit des perte potentiels par unité.
3.Copier-Coller la valeur dans l’onglet « output » en ligne 9 selon les code correpondants
Le match de code se fait entre la ligne 3 de « output » et colD de « data ».

J’espère que c’est plus clair comme ca.
merci
 

job75

XLDnaute Barbatruc
Re : calcul conditionnelle

Re,

C'est votre C9 qui est incohérent, alors je mets cette jolie formule en B9 :

Code:
=SIERREUR((INDEX(data!$G:$G;EQUIV(B3;data!$D:$D;0))-INDEX(data!$I:$I;EQUIV(B3;data!$D:$D;0)))*INDEX(data!$J:$J;EQUIV(B3;data!$D:$D;0))+(INDEX(data!$G:$G;EQUIV(B3;data!$D:$D;0))-INDEX(data!$M:$M;EQUIV(B3;data!$D:$D;0)))*INDEX(data!$N:$N;EQUIV(B3;data!$D:$D;0))+(INDEX(data!$G:$G;EQUIV(B3;data!$D:$D;0))-INDEX(data!$Q:$Q;EQUIV(B3;data!$D:$D;0)))*INDEX(data!$R:$R;EQUIV(B3;data!$D:$D;0))+(INDEX(data!$G:$G;EQUIV(B3;data!$D:$D;0))-INDEX(data!$U:$U;EQUIV(B3;data!$D:$D;0)))*INDEX(data!$V:$V;EQUIV(B3;data!$D:$D;0));"")
Nota : pour les formules matricielles en B3 et B8 voyez votre autre fil :

https://www.excel-downloads.com/threads/vba-copier-valeur-sous-condition.220557/

A+
 

Pièces jointes

  • testB(2).xlsx
    18.9 KB · Affichages: 18

job75

XLDnaute Barbatruc
Re : calcul conditionnelle

Re,

On peut simplifier la formule en définissant les noms T et lig :

Code:
=SIERREUR((INDEX(T;lig;7)-INDEX(T;lig;9))*INDEX(T;lig;10)+(INDEX(T;lig;7)-INDEX(T;lig;13))*INDEX(T;lig;14)+(INDEX(T;lig;7)-INDEX(T;lig;17))*INDEX(T;lig;18)+(INDEX(T;lig;7)-INDEX(T;lig;21))*INDEX(T;lig;22);"")
Fichier (2 bis).

A+
 

Pièces jointes

  • testB(2 bis).xlsx
    18.9 KB · Affichages: 22

cg1980

XLDnaute Occasionnel
Re : calcul conditionnelle

ce serait sympa en vba.

Mais c'est exactement comme tu as disposé le fichier. tu commences en C9 où tu as "73161.29032" comme output. B9 est le cash donc pas essentiel. mais tu commences à emplier les données`en C9 - D9... ainsi les données sont en ligne.

je commence en C car le premier code TRN se trouve là.
merci
 

job75

XLDnaute Barbatruc
Re : calcul conditionnelle

Re,

S'il n'y a qu'une ligne à remplir ou même quelques unes, mes formules font parfaitement l'affaire.

Et les calculs sont rapides.

Quand VBA est inutile pourquoi l'utiliser ? Cela évite tout problème si l'utilisateur désactive les macros.

J'aime beaucoup VBA vous savez, mais je ne l'ai jamais trouvé "sympa" comme vous dites.

A+
 

cg1980

XLDnaute Occasionnel
Re : calcul conditionnelle

merci pour ton aide.

Pour le forum j'ai allegé le fichier, mais je peux avoir plus de 200 positions et il y aura plusieurs onglet. sinon les formlues me conviendrait parfaitement.
c'est pour ca que j'ai besoin de passer par vba
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : calcul conditionnelle

Re,

Il faudrait vous donner la peine de tester...

Ajustez au mieux les plages des formules matricielles.

Mettez en place toutes les formules, et dites-nous combien de temps met le fichier pour s'ouvrir.

A priori aucune formule n'est volatile, il n'y aura donc pas de recalcul intempestif.

A+
 

job75

XLDnaute Barbatruc
Re : calcul conditionnelle

Re,

Vous pouvez d'ailleurs éviter une ligne de formules matricielles en entrant tout simplement en B8 :

Code:
=SIERREUR(INDEX(T;lig;24);"")
Fichier (3).

A+
 

Pièces jointes

  • testB(3).xlsx
    18.9 KB · Affichages: 18

Statistiques des forums

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