Problème de calcul sur excel mac 2011

Résolu/Fermé
scalp77 Messages postés 7 Date d'inscription dimanche 9 janvier 2011 Statut Membre Dernière intervention 15 janvier 2011 - 9 janv. 2011 à 20:25
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 - 15 janv. 2011 à 23:46
Bonjour,




Bonjour à tous, et tout d'abord je vous souhaite mes meilleurs voeux pour cette nouvelle année 2011.
Je suis assez novice dans le monde excel, mais j'avais toujours réussi à me débrouiller... mais là, je sèche... Je vais essayer de vous expliquer le problème que je n'arrive pas à résoudre : J'utilise deux listes déroulantes pour remplir deux cellules (E4 et E5), m'indiquant un point de départ et un point d'arrivée (relatifs à la colonne R), et une cellule pour additionner les valeurs comprises entre ces deux points, avec la combinaison de "sommeprod" et "recherchev". Cela fonctionne très bien pour les colonnes S,T,U, mais hélas pas pour V et W où elle me donne des résultats incohérents. J'ai un tableau qui débute en colonne R avec une liste allant de 0 à 70, puis en S,T,U, des valeurs correspondantes à chaque numéro de la liste R, et en V,W, des valeurs correspondantes à différents rapports entre S et U. Les valeurs en R,S,T,U sont toutes dans un ordre croissant, mais V,W, étant des rapports sont décroissant sur les 15 premières lignes et deviennent croissant jusqu'à la 70ième ligne.
ex: R6=1; S6=0; T6=3900; U6=1555,2; V6=moyenne(S6/U6)donc 0; W=(S7/U6)donc 4,12808642
R7=2; S7=6420; T7=4173; U7=3110,4; V7=moyenne(S7/U7) donc 2,06404321; U7=moyenne(S8/U7)donc 2,208397634

La formule utilisée est:
=sommeprod((plage1 à additionner>=critère1)*(plage1 à additionner<=critère2)*plage1 à additionner) soit :
=SOMMEPROD(($S$6:$S$75>=RECHERCHEV($E$4;$R$6:$S$75;2;FAUX))*($S$6:$S$75<=RECHERCHEV($E$5;$R$6:$S$75;2;FAUX))*$S$6:$S$75) ceci fonctionne très bien pour la somme des valeurs de la colonne S, comprises entre E4 et E5 (représentant 2 cellules de dans la colonne R).
=SOMMEPROD(($W$6:$W$75>=RECHERCHEV($E$4;$R$6:$W$75;6;FAUX))*($W$6:$W$75<=RECHERCHEV($E$5;$R$6:$W$75;6;FAUX))*$W$6:$W$75) ne fonctionne pas.
J'aimerais bien comprendre pourquoi cette formule ne fonctionne pas avec des valeurs décimales qui ne sont pas dans un ordre croissants (j'ai essayé la formule =Arrondi(--;5), puis en multipliant par 1000, mais sans succès). Je cherche à indiquer, dans une cellule, la somme des valeurs de la colonne U se trouvant entre le point de départ (déterminé par E4 et correspondant à une des cellules de R) et le point d'arrivée (E5...), soit retrouver 6,33649 quand j'entre 1 en E4 et 2 en E5. La sélection dans E pouvant être aléatoire comme 11 et 15, ou, 4 et 69.
Merci de m'apporter votre aide.
Désolé du pavé mais c'est pas facile d'expliquer, et encore merci à tous d'avoir lu...
A voir également:

11 réponses

Raymond PENTIER Messages postés 58397 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 26 avril 2024 17 094
10 janv. 2011 à 04:14
Tu aurais simplifié ta vie (et la nôtre) en envoyant le fichier (copier le lien créé avec https://www.cjoint.com/ ou http://cijoint.fr/).
0
scalp77 Messages postés 7 Date d'inscription dimanche 9 janvier 2011 Statut Membre Dernière intervention 15 janvier 2011
10 janv. 2011 à 19:37
désolé pour le désagrément, voici une partie du fichier qui vous permettra de mieux comprendre... merci encore
https://www.cjoint.com/?3bktI7EYcLg
0
Raymond PENTIER Messages postés 58397 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 26 avril 2024 17 094
11 janv. 2011 à 05:17
Désolé : le fichier est compressé, et je ne suis pas parvenu à le dézipper !
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 396
Modifié par Vaucluse le 11/01/2011 à 09:27
Bonjour

j'ai pu jeter un oeil sur votre fichier.
1° j'ai trouvé la dernière ligne du tableau en colonne W affichée à #REF, ce qui est un premier problème, mais ce n'est pas le problème majeur.

Sauf erreur de ma part, si on prend séparément vos deux items RECHERCHE de la formule SOMMEPROD():

le premier =RECHERCHEV($E$4;$R$6:$W$75;6;FAUX) renvoi :2,208...
le second =RECHERCHEV($E$5;$R$6:$W$75;6;FAUX) renvoi :1,0823...

vous demandez donc à la formule SOMMEPROD de faire la somme des W qui sont plus grands que 2,208 et plus petit que 1,083

Toujours sauf erreur de ma part , il est normal que Excel vous renvoi 0

Indépendamment de la formule recherche qui comprend bien le code faux, comme il se doit pour trouver la valeur exacte, la colonne W doit être classée si vous voulez trouver les valeurs limites correspondantes en ligne!
Ce qui est le cas de la colonne S

Si vous voulez travailler sans classer W il faut trouver un autre argument que RECHERCHE, peut être avec grande valeur et rang?Mais là, on ne sait pas quels sont vos critères de classement.

ou alors travailler avec des mini maxi, par exemple:

=SOMMEPROD(($W$6:$W$75<=MAX(RECHERCHEV($E$4;$R$6:$W$75;6;0);RECHERCHEV($E$5;$R$6:$W$75;6;0)))*$W$6:$W$75)-SOMMEPROD(($W$6:$W$75<MIN(RECHERCHEV($E$4;$R$6:$W$75;6;0);RECHERCHEV($E$5;$R$6:$W$75;6;0)))*$W$6:$W$75)

attention aux blancs créés par la copie sur CCM si vous copiez la formule

Mais je peux me tromper.

Crdlmnt

Ps: merci pour vos voeux, je vous retourne les miens et je prend sur moi de vous retourner ceux de CCM.:-)

Ps 2 où alors sur même principe:
=SOMMEPROD(($W$6:$W$75<=MAX(RECHERCHEV($E$4;$R$6:$W$75;6;0);RECHERCHEV($E$5;$R$6:$W$75;6;0)))*($W$6:$W$75>=MIN(RECHERCHEV($E$4;$R$6:$W$75;6;0);RECHERCHEV($E$5;$R$6:$W$75;6;0)))*$W$6:$W$75)


Demandons nous si nous ne sommes pas seuls à comprendre ce que l'on explique?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
scalp77 Messages postés 7 Date d'inscription dimanche 9 janvier 2011 Statut Membre Dernière intervention 15 janvier 2011
12 janv. 2011 à 15:35
Avant d'essayer vos réponses, je tiens à vous remercier, et pour répondre à vos analyses :
 j'ai trouvé la dernière ligne du tableau en colonne W affichée à #REF, ce qui est un premier problème, mais ce n'est pas le problème majeur. 

Ceci est normal car j'ai essayer, en vain, de réduire la taille du fichier en supprimant beaucoup de tableaux, colonnes indépendantes et des lignes du tableaux envoyé.
La cellule W48 indique #REF, car elle fait la moyenne S49/U48, le tableau ayant été coupé (réduit) volontairement, il n'y a rien d'anormal.

Sauf erreur de ma part, si on prend séparément vos deux items RECHERCHE de la formule SOMMEPROD(): 

le premier =RECHERCHEV($E$4;$R$6:$W$75;6;FAUX) renvoi :2,208... 
le second =RECHERCHEV($E$5;$R$6:$W$75;6;FAUX) renvoi :1,0823... 

vous demandez donc à la formule SOMMEPROD de faire la somme des W qui sont plus grands que 2,208 et plus petit que 1,083 

Non, je cherche à additionner les valeurs de la colonne W comprises entre les numéros déterminés par la sélection E4 et E5 (correspondant aux différents numéros de la colonne S).
Chaque ligne de la colonne W indique un temps (donc une moyenne) pour chaque ligne de la colonne S. C'est pour cette raison que la colonne W ne peut être classée par ordre croissant.

Indépendamment de la formule recherche qui comprend bien le code faux, comme il se doit pour trouver la valeur exacte, la colonne W doit être classée si vous voulez trouver les valeurs limites correspondantes en ligne! 
Ce qui est le cas de la colonne S 

La colonne S est dans un ordre croissant comme les colonnes T et U, car ce sont des cumuls, or la colonne W est le résultat d'un rapport. Comment établir un classement, un tri ou autre tout en laissant les résultats à leur place ?

Encore merci de vos suggestions que je vais essayer de suite...
0
scalp77 Messages postés 7 Date d'inscription dimanche 9 janvier 2011 Statut Membre Dernière intervention 15 janvier 2011
Modifié par scalp77 le 12/01/2011 à 15:50
les formule n'indiquent pas le bon résultat, mais je trouve une valeur qui a l'air d'être cohérente... je vais continuer à chercher en partant du fait que les résultats de la colonne W ne sont pas dans un ordre croissant ou décroissant sur toute la plage de recherche... espérant trouver une formule qui additionne les valeurs de la colonne W comprises entre tel et tel numéro de la colonne S...
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 396
12 janv. 2011 à 18:08
Bonjour

vous demandez donc à la formule SOMMEPROD de faire la somme des W qui sont plus grands que 2,208 et plus petit que 1,083

Non, je cherche à additionner les valeurs de la colonne W comprises entre les numéros déterminés par la sélection E4 et E5 (correspondant aux différents numéros de la colonne S).
ma remarque n'était qu'un constat qui dit que votre formule ne peut pas marcher tant que les valeurs mini et maxi seront déterminées par E4 et E5.... (ou ;alrs une fois de temps en temps selon les valeurs trouvées en W

dans le cas de votre modéle, E4 renvoi une valeur plus grande dans W que E5, il n'y a donc aucune chance pour que votre formule trouve des valeurs dans ses limites inversées!!!..

D'ou l'idèe notémment dans la dernière formule , de laisser le choix entre les deux valeurs pour être plus petit que la maxi et plus grand que la mini (ou égal, voir suite)

Si vous avez des écarts dans les résultat avec l'une de mes deux propositions, ils sont surement dus à l'insertion ou non du signe = en complément de > ou < pour inclure ou non les limites trouvées.

Crdlmt
0
scalp77 Messages postés 7 Date d'inscription dimanche 9 janvier 2011 Statut Membre Dernière intervention 15 janvier 2011
13 janv. 2011 à 15:53
Eurêka, j'ai enfin fini par trouver...
Les valeurs max ou min n'étaient pas la bonne piste, mais un bon aiguillage... Merci.
Quelques explications ne seront pas de trop...
Du fait que les valeurs de la colonne W étaient décroissante sur 15 lignes puis croissantes jusqu'à la fin, j'ai fait plusieurs essais pour trouver le bon résultat, et quelque soit la recherche proposée en E4 et E5, uniquement pour la partie décroissante, donc en me limitant à une recherche comprise entre 1 et 15.
1° étape: En limitant la rechercheV aux cellules correspondantes à toute la plage décroissante et en inversant les signes < et >, le résultat est correct.
D'où la formule:
=SOMMEPROD(($W$6:$W$20<=RECHERCHEV($E$4;$R$6:$W$20;6;FAUX))*($W$6:$W$20>=RECHERCHEV($E$5;$R$6:$W$20;6;FAUX))*$W$6:$W$20)

2° étape: Faire la même chose pour toute la plage croissante, et là, la formule initiale fonctionne très bien, juste en adaptant la plage de recherche.
D'où la formule:
=SOMMEPROD(($W$20:$W$47>=RECHERCHEV($E$4;$R$20:$W$47;6;FAUX))*($W$20:$W$47<=RECHERCHEV($E$5;$R$20:$W$47;6;FAUX))*$W$20:$W$47)

Restait à combiner les deux pour répondre à une recherche comprise entre 1 et 30 par exemple. Et là, se fût très long et fastidieux pour un débutant comme moi...
J'ai fini par trouver comment additionner les deux formule, après un certain nombre d'essais:
En remplaçant "le résultat de recherche en E5" pour la plage décroissante et "le résultat de recherche en E4" pour la plage croissante, par la cellule commune à la liste décroissante et à la liste croissante (soit: W20).
Et là, miracle, ça marche.
D'où la formule:
=SOMMEPROD(($W$6:$W$20<=RECHERCHEV($E$4;$R$6:$W$20;6;FAUX))*($W$6:$W$20>=W20)*$W$6:$W$20)+SOMMEPROD(($W$20:$W$47>W20)*($W$20:$W$47<=RECHERCHEV($E$5;$R$20:$W$47;6;FAUX))*$W$20:$W$47)

Mais je n'avais pas de réponse pour une recherche comprise de 16 à 30.
Plusieurs heures de lecture m'ont permis d'essayer une multitude de possibilités avant de tenter "les conditions" dans la formule, et en passant par: "la formule entrée contient une erreur", "parenthèse ouvrante ou fermante manquante", "#nom", "#valeur", "#N/A", "trop arguments ont été entrés pour cette fonction"... bref, de quoi perdre patience et péter les plombs... j'ai fini par trouver le bon ordre et tout ce qu'il fallait pour que le résultat, si durement recherché, soit correct.
D'où la formule (à rallonge, je dois l'admettre):
=SOMME(SI(E5<=15;SOMMEPROD(($W$6:$W$20<=RECHERCHEV($E$4;$R$6:$W$20;6;FAUX))*($W$6:$W$20>=RECHERCHEV($E$5;$R$6:$W$20;6;FAUX))*$W$6:$W$20);(SI(E4>=15;SOMMEPROD(($W$20:$W$45>=RECHERCHEV($E$4;$R$20:$W$45;6;FAUX))*($W$20:$W$45<=RECHERCHEV($E$5;$R$20:$W$45;6;FAUX))*$W$20:$W$45);(SOMMEPROD(($W$6:$W$20<=RECHERCHEV($E$4;$R$6:$W$20;6;FAUX))*($W$6:$W$20>=W20)*$W$6:$W$20)+SOMMEPROD(($W$20:$W$47>W20)*($W$20:$W$47<=RECHERCHEV($E$5;$R$20:$W$47;6;FAUX))*$W$20:$W$47))))))

Il y a certainement plus simple, mais pour le moment, je m'en contenterait très bien... tant qu'elle fonctionne...
Merci à tous les participant de ce forum, car sans l'aide de vos réponses aux questions posés sur ce forum, cette solution ne me serait jamais venu à l'esprit ...
Un grand MERCI à tous.
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 396
13 janv. 2011 à 16:59
bonsoir
(à rallonge, je dois l'admettre):
c'st rien de le dire!
si vous croyez que c'est mieux... à vous de voir, mais effectivement c'est lourd!
crdlmnt
0
scalp77 Messages postés 7 Date d'inscription dimanche 9 janvier 2011 Statut Membre Dernière intervention 15 janvier 2011
13 janv. 2011 à 19:28
Bonsoir
C'est pas que je crois que c'est mieux... cette formule répond exactement à ma requête... à travailler certainement pour trouver plus simple...
En moins lourd il y aura peut-être "nomination" des formules, à moins que quelqu'un ait une meilleur idée.
Je reste à l'écoute, merci.
0
Raymond PENTIER Messages postés 58397 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 26 avril 2024 17 094
13 janv. 2011 à 20:37
=SOMME(SI(E5<=15;SOMMEPROD(($W$6:$W$20<=RECHERCHEV($E$4; $R$6:$W$20;6;FAUX))*($W$6:$W$20>=RECHERCHEV($E$5;$R$6:$W$20;6;FAUX) )*$W$6:$W$20);(SI(E4>=15;SOMMEPROD(($W$20:$W$45>=RECHERCHEV($E$4; $R$20:$W$45;6;FAUX))* ($W$20:$W$45<=RECHERCHEV($E$5;$R$20:$W$45;6;FAUX))*$W$20:$W$45);(SOMMEPROD(($W$6:$W$20<=RECHERCHEV($E$4;$R$6:$W$20;6;FAUX))*($W$6:$W$20>=W20)*$W$6:$W$20)+SOMMEPROD( ($W$20:$W$47>W20)*($W$20:$W$47<=RECHERCHEV($E$5;$R$20:$W$47;6;FAUX))*$W$20:$W$47))))))

Déjà en donnant le nom
"w_0" à la plage $W$6:$W$20, "w_5" à $W$20:$W$45 et "w_7" à $W$20:$W$47
la formule devient
=SOMME(SI(E5<=15;SOMMEPROD((w_0<=RECHERCHEV($E$4;$R$6:$W$20; 6;FAUX))*(w_0>=RECHERCHEV($E$5;$R$6:$W$20;6;FAUX) )*w_0);(SI(E4>=15; SOMMEPROD((w_5>=RECHERCHEV($E$4;$R$20:$W$45;6;FAUX))* w_5<=RECHERCHEV($E$5;$R$20:$W$45;6;FAUX))*w_5); (SOMMEPROD((w_0<=RECHERCHEV($E$4;$R$6:$W$20;6;FAUX))*(w_0>=W20)*w_0)+SOMMEPROD((w_5>W20)*(w_7<=RECHERCHEV($E$5;$R$20:$W$47;6;FAUX))*w_5))))))

et de plus en donnant le nom
"r_0" à la plage $R$6:$W$20, "r_5" à $R$20:$W$45, "r_7" à $R$20:$W$47
la formule devient
=SOMME(SI(E5<=15;SOMMEPROD((w_0<=RECHERCHEV($E$4;r_0;6;FAUX))*(w_0>=RECHERCHEV($E$5;r_0;6;FAUX))*w_0);(SI(E4>=15;SOMMEPROD( (w_5>=RECHERCHEV($E$4;r_5;6;FAUX))*w_5<=RECHERCHEV($E$5;r_5;6;FAUX))* w_5);(SOMMEPROD((w_0<=RECHERCHEV($E$4;r_0;6;FAUX))*(w_0>=W20)*w_0)+ SOMMEPROD((w_5>W20)*(w_7<=RECHERCHEV($E$5;r_7;6;FAUX))*w_5))))))
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 214
13 janv. 2011 à 22:14
Bonsoir tout le monde,

Peut-être que qcq chose m'échappe (il y a beaucoup à lire...) mais que vient faire le recherchev() dans cette galère ?
=SOMMEPROD(($R$5:$R$47>=E4)*($R$5:$R$47<=E5)*(W5:W47))
ce n'est pas bon ?

eric
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 396
Modifié par Vaucluse le 14/01/2011 à 07:44
bonjour Eric

Tu as peut être raison, ce qui dans ce cas simplifierait le problème....mais pour moi, il s'agissait de calculer la somme en colonne W des valeurs situées entre la valeur W correspondant à E4 et la valeur W correspondant à E5, et non pas entre les valeurs de E4 et E5.C'est pour ça que je croyais que ma, proposition ici pouvait faire l'affaire

=SOMMEPROD(($W$6:$W$75<=MAX(RECHERCHEV($E$4;$R$6:$W$75;6;0);RECHERCHEV($E$5;$R$6:$W$75;6;0)))*($W$6:$W$75>=MIN(RECHERCHEV($E$4;$R$6:$W$75;6;0);RECHERCHEV($E$5;$R$6:$W$75;6;0)))*$W$6:$W$75)


Ce qui se fait bien dans la colonne S du fichier puisque elle est classée en croissant, ce qui n'est pas le cas de la colonne W

Si par contre on prend cette phrase dans un des messages:

Non, je cherche à additionner les valeurs de la colonne W comprises entre les numéros déterminés par la sélection E4 et E5 (correspondant aux différents numéros de la colonne S).

il reste un double sens, entre les valeurs de E ou de W ?? dans le premier cas ta proposition est correcte, mais on ne voit, pas pourquoi, alors, c'est si difficile à résoudre?



Mais j'avoue ne plus rien comprendre avec la dernière tartine du demandeur.

Bonne journée
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 214
14 janv. 2011 à 16:55
Salut vaucluse,

J'ai comparé le résultat de ma formule et de la sienne, à-priori c'est la même chose.
Sa mauvaise direction avec recherchev() a embrouillé tout le monde j'ai l'impression....

eric
0
scalp77 Messages postés 7 Date d'inscription dimanche 9 janvier 2011 Statut Membre Dernière intervention 15 janvier 2011
15 janv. 2011 à 23:00
Salut à tous,
C'est exact Eric, la mauvaise direction prise avec "recherchev()", intégré dans une formule faite pour un tableau dont les valeurs sont dans l'ordre croissant, a embrouillé tout le monde, et moi le premier. Doublé d'une difficulté certaine à expliquer le problème clairement et succinctement, et surenchéri par l'absence de connaissance sur Excel... Effectivement, ça vient en rajouter pas mal à cette mélasse...

Ta formule me plaît beaucoup, elle fonctionne à merveille... Merci

Une accumulation de formule m'ont induit en erreur :
-E4 et E5 sont des listes déroulantes représentant la colonne R, et faisant découlé plusieurs formules différentes.
-la recherchev() me donne la valeur recherchée (en colonne S), par rapport à un numéro de ligne (en colonne R) de mon tableau.
-le sommeprod() me donne la somme des valeurs de la colonne S comprises entre 2 numéros de la colonne R.
En partant de la formule de base
=sommeprod(colonne S>=Sx')*(colonne S<=Sx'')*(colonne S)
Sx' et Sx'' sont représentés, dans mon cas par E4 et E5, j'ai donc intégré recherchev(E4...) et recherchev(E5...) à leur place pour obtenir la valeur exacte de la colonne S.
Comme la formule fonctionnait je n'ai pas cherché plus loin. Je suis donc parti de ma formule modifiée pour calculer d'autres valeurs dans différentes colonnes, comprises entre 2 données de la colonne R, jusqu'à ce que je me retrouve dans une impasse quand les valeurs du tableau étaient désordonnées, notamment la colonne W.
Je n'ai jamais pensé à effectuer les recherches sur une plage de cellules différente de celle à additionner...
C'est beau d'être obstiné dans l'ignorance quand même... l'homme qui creuse la neige après avoir été enseveli dans une avalanche, sans savoir où est le haut...
J'ai creusé et j'suis quand même arrivé de l'autre côté de la montagne...

Merci aussi à Raymond et à Vaucluse d'avoir pris le temps de me lire et essayer de m'aider et encore toutes mes excuses pour ces explications.
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 214
15 janv. 2011 à 23:46
Bah, ça arrive souvent après plusieurs modifications ou évolutions de se retrouver avec un truc lourdingue alors qu'il y a 10 fois plus simple...
N'oublie pas de mettre en résolu :-)
eric
0