Problème avec la formule sommeprod excel
Résolu
Queek
-
michel_m Messages postés 16602 Date d'inscription Statut Contributeur Dernière intervention -
michel_m Messages postés 16602 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je viens ici car j'ai vraiment besoin d'aide. Je vous remercie par avance de m'accorder de votre temps.
Je m'explique, mon fichier permet de savoir facilement si un délai de livraison est respecté. Quand le délai est respecté un "O" apparait, sinon un "T".
Gràce a la formule sommeprod, je peux calculer pour chaque mois, le nombre de délai de livraison respecté ("O").
Jusqu'ici aucun problème, mais dans ce fichier, chaque ligne correspond à une livraison, et chaque ligne est rempli automatiquement chaque jour, j'ai donc glisser la formule pour qu'elle s'applique à chaque nouvelle entrée. Malheuresement, les cellules étant vides, car aucune information n'y est encore saisie un erreur #valeur apparait, et impossible de connaître le nombre de "O".
Voici le liens d'un fichier excel pour illustrer mon propos:
http://www.cijoint.fr/cjlink.php?file=cj201105/ciji7Q6y7l.xls
J'espère m'être montré clair.
Merci de votre aide.
Cordialement, Queek
Ps: je suis sur excel 2003
Je viens ici car j'ai vraiment besoin d'aide. Je vous remercie par avance de m'accorder de votre temps.
Je m'explique, mon fichier permet de savoir facilement si un délai de livraison est respecté. Quand le délai est respecté un "O" apparait, sinon un "T".
Gràce a la formule sommeprod, je peux calculer pour chaque mois, le nombre de délai de livraison respecté ("O").
Jusqu'ici aucun problème, mais dans ce fichier, chaque ligne correspond à une livraison, et chaque ligne est rempli automatiquement chaque jour, j'ai donc glisser la formule pour qu'elle s'applique à chaque nouvelle entrée. Malheuresement, les cellules étant vides, car aucune information n'y est encore saisie un erreur #valeur apparait, et impossible de connaître le nombre de "O".
Voici le liens d'un fichier excel pour illustrer mon propos:
http://www.cijoint.fr/cjlink.php?file=cj201105/ciji7Q6y7l.xls
J'espère m'être montré clair.
Merci de votre aide.
Cordialement, Queek
Ps: je suis sur excel 2003
A voir également:
- Problème avec la formule sommeprod excel
- Formule si et excel - Guide
- Formule moyenne excel plusieurs colonnes - Guide
- Formule somme excel colonne - Guide
- Excel mise en forme conditionnelle formule - Guide
- Liste déroulante excel - Guide
4 réponses
Bonjour
pas besoin de VBA!
utilise cette formule transformée
Michel
pas besoin de VBA!
utilise cette formule transformée
=SOMMEPROD(($H$37:$H$48<>"")*(MOIS($H$37:$H$48)=$C53)*($K$37:$K$48="O"))
Michel
Est ce que tu t'y connais en VBA? Si oui, on va pouvoir développer un petit code qui te permettra de limiter le champ d'action de ta formule.
à la rigueur, tu pourrais rajouter un SI dans ton calcul de base qui fait que si une des cases où tu comptes tes O est égale à #VALEUR tu ne la prend pas en compte.
Mais je suis pas sur que ça soit possible sans le VBA
Essaye de commencer à regarder le VBA, ce n'est pas simple au début mais une fois la logique de base comprise, tu pourras faire énormément de choses relativement facilement. De plus l'aide est relativement bien faite.
Mais je suis pas sur que ça soit possible sans le VBA
Essaye de commencer à regarder le VBA, ce n'est pas simple au début mais une fois la logique de base comprise, tu pourras faire énormément de choses relativement facilement. De plus l'aide est relativement bien faite.
Ce n'est pas la première fois qu'on me conseil d'étudier se language, visiblement le VBA ouvre bien des portes!
Je vais essayer de regarder en bidouillant, sinon je vais commencer par regarder comment fonctionne le VBA.
Dans le cas ou je trouverais une solution, je la posterais ici.
Merci de votre aide.
Cordialement.
Je vais essayer de regarder en bidouillant, sinon je vais commencer par regarder comment fonctionne le VBA.
Dans le cas ou je trouverais une solution, je la posterais ici.
Merci de votre aide.
Cordialement.
pour te donner une idée rapide de ce que je pensais faire en VBA c'est:
compter le nombre d'éléments dans la colonne H du fichier exemple que tu as donné et me servir de ce nombre d'éléments pour conditionner le compte du nombre de O
Au passage, dans la formule que tu as faite, pourquoi avoir séparé 20 et 11? ça aurait pas été plus simple de mettre l'année dans une seule case? (juste une demande hein ^^)
compter le nombre d'éléments dans la colonne H du fichier exemple que tu as donné et me servir de ce nombre d'éléments pour conditionner le compte du nombre de O
Au passage, dans la formule que tu as faite, pourquoi avoir séparé 20 et 11? ça aurait pas été plus simple de mettre l'année dans une seule case? (juste une demande hein ^^)
bonjour à tous
une autre solution en nommant les plages (insertion/nom/definir) (un peu complique pour plagecode ...
plagecode = DECALER(Feuil1!$K$37;0;0;NB.SI(Feuil1!$K$37:$K$48;"O")+NB.SI(Feuil1!$K$37:$K$48;"T");1)
plagedate = DECALER(Feuil1!$H$37;0;0;NB(Feuil1!$H$37:$H$48);1)
la formule devient
=SOMMEPROD((MOIS(plagedate)=$C51)*(plagecode="O"))
bonne suite
une autre solution en nommant les plages (insertion/nom/definir) (un peu complique pour plagecode ...
plagecode = DECALER(Feuil1!$K$37;0;0;NB.SI(Feuil1!$K$37:$K$48;"O")+NB.SI(Feuil1!$K$37:$K$48;"T");1)
plagedate = DECALER(Feuil1!$H$37;0;0;NB(Feuil1!$H$37:$H$48);1)
la formule devient
=SOMMEPROD((MOIS(plagedate)=$C51)*(plagecode="O"))
bonne suite
Je m'en vais tester ça de suite :)
Je vous tien au courant.
Cordialement, Queek.
J'étais sur la même idée mais elle ne fonctionne pas car il évalue de toute façon MOIS() et ça provoque une erreur si il y a des cellules vides.
La seule solution que j'ai trouvée est cette formule :
{=SOMMEPROD((SI(($H$37:$H$48)<>"";MOIS($H$37:$H$48)=$C51;FAUX)*(($K$37:$K$48="O"))))}
En validant avec <Ctrl><Shift><Entrée> pour avoir une formule matricielle...
Pas très satisfaisant...
A+
En revanche, j'ai essayer ta formule Pilas31, elle correspond exactement à mes attentes, et résout mon problème.
Pourquoi dis-tu que ce n'est pas très satisfaisant? ^^
Merci de votre aide.
Cordialement.
bonjour Pilas, ca va ?
on peut feinter en écrivant
=SI(ESTVIDE(C37);0;DATE(C37*100+D37;F37;E37))
et en cochant l'option masquer leszéros dans H37:H48 ou en utilisant une mise en forme conditionnelle blanc/blanc si valeur=0
Mais je trouve la formule complexe. SOMMEPROD est déjà une formule nativement matricielle mais il faut quand même valider en matriciel ma formule pour que le test fonctionne.
En réalité l'erreur vient de la fonction MOIS(). Si on peut s'en passer alors la formule redevient simple. Par exemple en testant directement sur le numéro de mois de la colonne F :
=SOMMEPROD(($F$37:$F$48=$C51)*($K$37:$K$48="O"))
Salut michel oui ça va mais je n'ai plus trop l'accasion de venir dans ton beau pays!
A+