begin process at 2012 02 12 15:46:56
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Langages dérivés

 > 

VBA

 > 

Problème avec la formule Excel "sommeprod"


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème avec la formule Excel "sommeprod"

samedi 5 avril 2008 à 11:20:50 | Problème avec la formule Excel "sommeprod"

idieordeco

Bonjour,

Dans le cadre de mon boulot j'utilise tout le temps la formule "sommeprod" de façon à additionner les valeurs répondant aux critères de ma formule.
Cependant j'ai problème avec...
Un problème sur la longueur de la formule à cause d'un grand nombre de critères pour additionner.

Exemple d'une formule (volontairement raccourci) :
SOMMEPROD((Inventaire!$L$2:$L$2000)*(Inventaire!$M$2:$M$2000="Emprunt d'état"))+SOMMEPROD((Inventaire!$L$2:$L$2000)*(Inventaire!$M$2:$M$2000="Garanti"))
Dans cette formule je cherche à additionner les valeurs de la colonne L si dans la colonne M il y a écrit "emprunt d'état" + additionner les valeurs de la colonne L si dans la colonne M il y a écrit "Garanti" (et ça pour chaque ligne de 2 à 2000)

Jusqu'à la, pas de soucis mais ! Y a t'il possibilité de mettre dans un seul sommeprod les critères "garanti" et "emprunt d'état" ???

J'ai essayé ça :
SOMMEPROD((Inventaire!$L$2:$L$2000)*(et((Inventaire!$M$2:$M$2000="Emprunt d'état");(Inventaire!$M$2:$M$2000="Garanti"))
Ne marche pas (puisqu'il faut les deux critères dans la même cellule (emprunt d'état et Garanti) et ça c'est impossible.

J'ai essayé ça :
SOMMEPROD((Inventaire!$L$2:$L$2000)*(ou((Inventaire!$M$2:$M$2000="Emprunt d'état");(Inventaire!$M$2:$M$2000="Garanti"))
Ne marche pas ! (Et je ne comprends pas pourquoi d'ailleurs).
Dans ce cas il m'additionne tout même quand il n'y a pas "emprunt d'état" ou "garanti" dans la colonne M (je peux mettre "tartiflette" par exemple et il me l'additionne)

Voila ou j'en suis, quelqu'un a t'il une idée pour raccourcir ma formule du début ?

Merci pour tout

Bière qui roule bière qui mousse
samedi 5 avril 2008 à 14:50:47 | Re : Problème avec la formule Excel "sommeprod"

MPi

Premièrement, tu n'as pas besoin de répéter la colonne que tu veux additionner (ici L)
SOMMEPROD((Inventaire!$M$2:$M$2000="Emprunt d'état") *(Inventaire!$M$2:$M$2000="Garanti")*(Inventaire!$L$2:$L$2000))

Syntaxe:
SOMMEPROD((1ere condition)*(2e condition)*(3e condition)*(Plage à additionner))

Tu pourrais aussi utiliser une colonne vide et y concaténer toutes les conditions pour finalement faire un SOMME.SI sur cette colonne...

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI

samedi 5 avril 2008 à 14:55:11 | Re : Problème avec la formule Excel "sommeprod"

MPi

Je disais de concaténer, mais dans ton cas, comme tu sembles vérifier les conditions dans une même colonne, tu pourrais plutôt mettre une formule OU, du genre:
=SI(OU(M2="Emprunt d'état";M2="Garanti"); "X"; "")

Ce qui aurait pour but d'inscrire un "X" si une des conditions est remplie. Et faire un SOMME.SI sur les "X"

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI

samedi 5 avril 2008 à 15:58:51 | Re : Problème avec la formule Excel "sommeprod"

idieordeco

Merci pour ta réponse mais la solution
"SOMMEPROD((Inventaire!$M$2:$M$2000="Emprunt d'état") *(Inventaire!$M$2:$M$2000="Garanti")*(Inventaire!$L$2:$L$2000))"
ne marche pas
Il cherche dans la colonne M garanti et emprunt d'etat.

La formule longue d'origine est celle là chez moi :
=(SOMMEPROD((Inventaire!$B$2:$B$2000=77002)*(Inventaire!$I$2:$I$2000="UEM")*(Inventaire!$L$2:$L$2000)*(Inventaire!$M$2:$M$2000="Emprunt d'état"))+SOMMEPROD((Inventaire!$B$2:$B$2000=77002)*(Inventaire!$I$2:$I$2000="UEM")*(Inventaire!$L$2:$L$2000)*(Inventaire!$M$2:$M$2000="Garanti")))/$B$23

Le résultat est 178.03%
Le but pour moi est de raccourcir la formule en virant le "+" et donc l'un des deux "sommeprod"

Avec ta proposition ça fait cela :
=SOMMEPROD((Inventaire!$B$2:$B$2000=77002)*(Inventaire!$I$2:$I$2000="UEM")*(Inventaire!$L$2:$L$2000)*(Inventaire!$M$2:$M$2000="Emprunt d'état")*(Inventaire!$M$2:$M$2000="Garanti"))/$B$23

Le résultat est 0% (il cherche les 2 conditions dans la même cellule colonne M à chaque fois alors que c'est impossible : c'est soit l'un soit l'autre soit autre chose)

Il n'y a donc pas de solution avec le sommeprod ?
Je dois obligatoirement refaire une colonne avec des conditions (une sorte d'intermédiaire ?). Je peux faire ça mais bon... je vais le prévoir dans ma macro alors (qui importe des trucs et ces trucs sont triés par les sommeprod en fonction de critères etc.)

Bière qui roule bière qui mousse
samedi 5 avril 2008 à 16:01:20 | Re : Problème avec la formule Excel "sommeprod"

idieordeco

Question en plus qui m'intrigue :
Pour ce qui suis ne marche pas
"SOMMEPROD((Inventaire!$L$2:$L$2000)*(ou((Inventaire!$M$2:$M$2000="Emprunt d'état");(Inventaire!$M$2:$M$2000="Garanti"))"
dans mon cas ?
Dans ce cas il m'additionne tout même quand il n'y a pas "emprunt d'état" ou "garanti" dans la colonne M (je peux mettre "tartiflette" par exemple et il me l'additionne)

Je suis chiant hein  mais ça m'intrigue que le "ou" ne marche pas

Bière qui roule bière qui mousse
samedi 5 avril 2008 à 16:09:29 | Re : Problème avec la formule Excel "sommeprod"

MPi

Dans ton cas, comme les conditions sont dans une même colonne, tu n'as pas vraiment le choix que d'utiliser le +

Le * dans SOMMEPROD agit comme un ET
Peut-être y a-t-il moyen d'utiliser autre chose que le * pour avoir un OU, mais je connais pas...

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI

samedi 5 avril 2008 à 18:07:26 | Re : Problème avec la formule Excel "sommeprod"

idieordeco

C'est pas grâve, merci pour ton aide.
Je creuse un peu là mais à part un "*" ou un ";" (qui revient au même), je ne vois pas trop quoi mettre entre les critères.

Donc je modifie la macro qui importe les données pour pré-trier la base de données.

A bientôt

Bière qui roule bière qui mousse
samedi 5 avril 2008 à 18:23:01 | Re : Problème avec la formule Excel "sommeprod"

MPi

Réponse acceptée !
Essaie ceci
Ça semble fonctionner

SOMMEPROD(((Inventaire!$M$2:$M$2000="Emprunt d'état") + (Inventaire!$M$2:$M$2000="Garanti"))*(Inventaire!$L$2:$L$2000))

Attention aux parenthèses qui entourent les conditions et pas la formule globale.

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI

dimanche 6 avril 2008 à 13:37:35 | Re : Problème avec la formule Excel "sommeprod"

idieordeco

Merci, ça marche parfaitement !

Je vais tenter voir si ça marche avec du multi conditions dans plusieurs colonnes ; genre :

sommeprod(((condition 1 colonne M)+(condition 2 colonne M))*((condition 1 colonne B)+(condition 2 colonne B))*(valeur colonne I))

Normalement oui.
En tout cas merci pour aide, bien alléger mes formules

Bière qui roule bière qui mousse
dimanche 6 avril 2008 à 14:53:27 | Re : Problème avec la formule Excel "sommeprod"

MPi

Si ça fonctionne, reviens nous montrer ta formule et accepte ta réponse. Ça pourra être utilie pour les prochains qui passeront...

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI


1 2

Cette discussion est classée dans : état, formule, sommeprod, emprunt, inventaire


Répondre à ce message

Sujets en rapport avec ce message

Formule Sumproduct (sommeprod) [ par snorki ] Bounjour, J'e crée la formule SUMPRODUCT (sommeprod) en VBA avec des reference en Excel.Voici le code:Set ref1 = Range(Cells(14, 8), Cells(100, 8))ref Formule Sommeprod [ par snorki ] Bonjour, Je crée la formule SUMPRODUCT (sommeprod) en VBA avec des references en Excel. Voici le code: Set ref1 = Range(Cells(14, 8), Cells(100, 8)) Champ Crystal Report qui n'apparait pas [ par lucio57 ] Bonjour,J'ai créé un état Crystal Report. Dans cet état, j'ai placé 2 sous-états contenant chacun un champ de formule (même formule d'affichage pour l formules [ par web35 ] Bonjour a tous , j espère que vous répondez à ce genre de question et que je suis dans la bonne section !J'ai créé un tableau reprennant 5 résultats s SOMMEPROD et conditions variables [ par phlhostis ] bonjour j'essaye en vain d'utiliser une formule SOMMEPROD avec la formule ci-dessous =SOMMEPROD(F1:F201=A1;G1:G201) afin d'additionner toutes les Traduire une formule en code VBA [ par thomasdu40 ] Bonsoir, Je n'arrive pas à traduire en code VBA la formule suivante : C6=si(F20="x";"1";si(G20"x";"0";si(H20="x";"-1";"/"))) La formule fonctionne m l'état du CheckBox [ par etoile100100 ] salut, Comment on peut garder l'état du CheckBox même aprés la fermeture du programme? Est ce que une base access est le meilleure choix? Est ce que l Peut-on utisiser un état access dans vb6? [ par minimoyz ] Bonjour , Je réalise un projet VB6 relié en ADO à une base de données, et je souhaiterai utiliser un état de ma base de donnée dans mon projet vb6. [Catégorie modifiée VB6 -> VBA] formule excel to vba [ par pinem ] Salut à tous. Je me galère depuis un petit moment à transformer une formule excel pour l'adapter à une macro. (Et mon boss commence à me mettre la pre Macro ou formule [ par RichRich59 ] Bonjour, J'aimerais créer une formule ou un VB. Voila ce que j'ai J'ai deux feuilles Feuille1 et Feuille2 J'aimerais que dans la colonne E de l


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,827 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales