problème avec fonction SOMME.SI ...

penelope

XLDnaute Nouveau
Bonjour le forum,
Je reviens avec mon petit programme de gestion des résultats de chevaux de courses, pour ceux qui m'ont déjà aidé ou vu ma discussion précédente...
Je rencontre actuellement un problème avec la fonction SOMME.SI. En effet, j'ai créé une feuille qui résume les données d'une autre feuille. J'ai plusieurs fonctions à enregistrer, suivant ce que je veux savoir. Mais dès la première, je n'y arrive pas!!:(
Pour la première, j'ai besoins que la fonction me calcule la somme des gains dans un intervale de date. (somme des gains entre le 01.01.10 et le 30.06.11). Donc j'ai opté pour la fonction SOMME.SI qui me semble la plus appropriée. Ma fonction ne semble pas contenir d'erreur à première vue, car il y a un résultat, mais le résultat est 0, donc il y a forcément une erreur!
J'ai essayé plusieurs formulations concernant le critère de date, mais le résultat reste toujours 0.
Dans une autre case, je dois insérer une fonction qui calcule la somme des gains acquis uniquement en 1ere place, dans le même intervalle de date que précédemment... Donc, ça fait 2 critères... Pour celle ci, faut-il utiliser une fonction matricielle?
Je mets mes feuilles en fichiers joint pour que ce soit plus clair...
Merci pour votre aide!
penelope
 

Pièces jointes

  • exemple.xls
    41 KB · Affichages: 113
  • exemple.xls
    41 KB · Affichages: 132
  • exemple.xls
    41 KB · Affichages: 126

Modeste

XLDnaute Barbatruc
Re : problème avec fonction SOMME.SI ...

Bonjour penelope, le forum,

Avec SOMME.SI, tu pourrais écrire:
Code:
=SOMME.SI('détails Blue'!A4:A100;">"&DATE(2010;1;1);'détails Blue'!K4:K100)-SOMME.SI('détails Blue'!A4:A100;">"&DATE(2010;7;1);'détails Blue'!K4:K100)

Une autre solution:
Code:
=SOMMEPROD(('détails Blue'!$A$4:$A$11>DATE(2010;1;1))*('détails Blue'!$A$4:$A$11<DATE(2010;7;1))*('détails Blue'!$K$4:$K$11))
... donne le même résultat ... et te sera nécessaire pour la suite des calculs, lorsque les conditions se multiplient.

Dis-nous si tu as besoin de plus d'explications.
 

penelope

XLDnaute Nouveau
Re : problème avec fonction SOMME.SI ...

Re-bonjour le forum, Davidc57 et Modeste,
Merci pour vos solutions. En effet, celle de Modeste m'aide plus par rapport à ce qui suit. La fonction fonctionne très bien et j'ai du coup pu directement faire la suivante (seul. 1er place...) qui fonctionne aussi.
Cela dit, j'aurait volontier pris quelques explications au passage...:
Pourquoi lors de la définition de plage, parfois il y a $ et parfois pas???
dans la 1ere solution, pourquoi mettre le signe entre guillemet suivi de & et DATE... et non pas comme je l'avais fait dans un de mes essai DATE(...):DATE(...)? Vous allez me dire simplement "parceque ça ne marche pas comme ça!!!"
Combien de critère au max puis-je mettre dans la martice 1 de SOMMEPROD?
Merci encore pour votre aide!
A+
penelope
 

Modeste

XLDnaute Barbatruc
Re : problème avec fonction SOMME.SI ...

re-bonjour,

Pourquoi lors de la définition de plage, parfois il y a $ et parfois pas???
Dans le cas présent, si la formule n'est pas recopiée (dans les lignes ou colonnes suivantes), le fait d'ajouter ou non les '$' n'a aucune incidence (tu peux donc en déduire que c'est juste un instant de distraction de ma part :rolleyes:). Si, par contre, la question est "à quoi peuvent bien servir les '$' dans les formules?" ... la réponse devra être plus longue et circonstanciée.

************
pourquoi mettre le signe entre guillemet suivi de & et DATE [...] Vous allez me dire simplement "parce que ça ne marche pas comme ça!!!"
c'est gagné !! :D
L'aide (XL2007 est plus "détaillée") stipule ce qui suit, pour la fonction NB.SI:
=NB.SI(A2:A5;"pommes") Nombre de cellules contenant la chaîne « pommes » dans la première colonne ci-dessus
=NB.SI(A2:A5;A4) Nombre de cellules contenant la chaîne « pêches » dans la première colonne ci-dessus
=NB.SI(A2:A5,A3)+NB.SI(A2:A5;A2) Nombre de cellules contenant les chaînes « oranges » et « pommes » dans la première colonne ci-dessus
=NB.SI(B2:B5;">55") Nombre de cellules dont la valeur est supérieure à 55 dans la seconde colonne ci-dessus
=NB.SI(B2:B5;"<>"&B4) Nombre de cellules dont la valeur n'est pas égale à 75 dans la seconde colonne ci-dessus
=NB.SI(B2:B5;">=32")-NB.SI(B2:B5;">85") Nombre de cellules dont la valeur est supérieure ou égale à 32 et inférieure ou égale à 85 dans la seconde colonne ci-dessus
Ce qui est certain, par contre, c'est que la syntaxe:
=SOMME.SI('détails Blue'!A4:A100;"DATE(2010;1;1):DATE(2011;6;30)";'détails Blue'!K4:K100)
Que tu avais utilisée ... ne peut pas l'être!

************
Combien de critère au max puis-je mettre dans la martice 1 de SOMMEPROD?
Une réponse peut-être trouvée par le biais d'une recherche ... J'ai trouvé celle-ci, par exemple.
 
Dernière édition:

penelope

XLDnaute Nouveau
Re : problème avec fonction SOMME.SI ...

Re-bonjour le forum et Modeste.
Merci pour tes éclaircissements!:rolleyes:
Bon je déduis que j'ai de la marge concernant le nombre de criteres, au vu du lien que tu as mis...
J'ai poursuivi dans l'élaboration de mes formules et suis arrivée à celle où j'ai besoins du nombre de course en 2010 par ex.
Ma formule, très influencée par ton dernier message sur NB.SI, ne fonctionne pas:confused:
Code:
=NB.SI('détails Blue'!$A$4:$A$100;">="&DATE(2010;1;1))-NB.SI('détails Blue'!$A$4:$A$100;"<="&DATE(2010;12;31))
Au cas où, reprendre le fichier joint du 1er message.
Bon, j'ai aussi essayé ça, mais sans résultats non plus (c'est à dire plutôt que le résultat est faux donc il y a une erreur!)
Code:
=NB.SI('détails Blue'!A4:A100;ANNEE(40293))
Où sont mes erreurs???
 

penelope

XLDnaute Nouveau
Re : problème avec fonction SOMME.SI ...

Bonjour Modeste et le forum.
Désolée pour mon absence...
Modeste, ta formule fonctionne très bien. Je n'ai juste pas compris à quoi correspond le "1" placé à la fin?

Voici ma fonction pour la cellule où il est question du nombre de fois où le cheval est 1er en 2010 par ex.:
Code:
=SOMMEPROD((ANNEE('détails Blue'!A4:A100)=2010)*1*(('détails Blue'!J4:J100)=1))
Elle fonctionne, mais est-ce bien la bonne solution?
 

Modeste

XLDnaute Barbatruc
Re : problème avec fonction SOMME.SI ...

Bonjour penelope,

Si tu sélectionnes, dans la barre de formule cette partie de la formule:
Code:
ANNEE('détails Blue'!A4:A100)=2010
puis, cette partie étant sélectionnée, tu appuyes sur la touche F9 du clavier, Excel évalue la partie de formule sélectionnée. Dans le cas présent, tu verras apparaître une matrice de VRAI/FAUX ... chaque VRAI*1=1, tandis que FAUX*1=0. Comme SOMMEPROD fait (comme son nom l'indique) la somme des produits et que nous venons de nous occuper des produits, Excel additionne les 1 et les 0 obtenus.

En revanche, ta formule peut être (très légèrement) simplifiée:
Code:
=SOMMEPROD((ANNEE('détails Blue'!A4:A100)=2010)*('détails Blue'!J4:J100=1))
Dans ce cas-ci, tu multiplies entre elles deux matrices de VRAI/FAUX ... Chaque VRAI*VRAI valant 1.

... Mais tout ceci est-il clair :confused:
 

penelope

XLDnaute Nouveau
Re : problème avec fonction SOMME.SI ...

En fait, maintenant que j'y suis... je me rend compte de l'importance de la tâche. (il y a (pour l'instant) une vingtène de chevaux...) Donc, re-écrire ou copier et modifier cette fonctions... ça prend du temps. Et je viens de penser que je vais devoir les modifier chaque annéee!:p
Alors je me demandais, comme ça en passant, pour pousser le vice un peu plus loins:eek:, s'il étai immaginable et possible de créer une fonction qui comprend tout... J'explique ma pensée, mais je crois qu'il va plutôt s'agir du domaine VBA...
Imaginons: Vu que toutes mes feuilles sont formatées de la même manière (voir exemple en fichier joint), créer un code qui comprend le calcul (somme des gains en 2010 par ex.), mais qui sais aussi où aller chercher les infos - au lieu de mettre "2010", on va mettre quelque chose comme "année en cours - 1", comme ça, pas besoins de changer chaque année... Et au lieu de mettre le nom de la feuille où il doit aller chercher les infos, on imagine qu'il va directement (via un code) chercher l'info dans la feuille qui porte le même nom de cheval, ce qui permet d'avoir un seul code qui fonctionne pour toutes mes feuilles identiques...
Je ne sais pas si j'ai réussi à formuler mon idée et qu'elle soit surtout comprise...:confused:
Merci de me donner des nouvelles!
A+
PS: toutes les feuilles de mon classeurs concernant les cehvaux sont faites et nommées pareils, seulement le nom du cheval change: ex 'détails Blue' et 'résumé Blue' ou 'détails Ailton' et 'résumé Ailton' ou 'détails Debby haies' et 'résumé Debby haies', etc
 

Modeste

XLDnaute Barbatruc
Re : problème avec fonction SOMME.SI ...

re-bonjour,

au lieu de mettre "2010", on va mettre quelque chose comme "année en cours - 1
=ANNEE(AUJOURDHUI())-1 devrait faire l'affaire, me semble-t-il

Et au lieu de mettre le nom de la feuille où il doit aller chercher les infos, on imagine qu'il va directement (via un code) chercher l'info dans la feuille qui porte le même nom de cheval,
... Et pour ceci, la fonction INDIRECT me paraît toute indiquée.

Tu ne nous déposerais pas un petit exemple ré-actualisé, avec 2-3 chevaux??
 

penelope

XLDnaute Nouveau
Re : problème avec fonction SOMME.SI ...

Je ne connais pas la fonction INDIRECT... mais je vais me pencher dessus.
Bon, j'ai mis en fichier joint les feuilles de 4 chevaux. On peut voir qu'elles sont toutes pareilles. 'résumé Blue' contient les résultats des fonctions trouvées précédemment.
Pour que ce soit plus explicite: Dans mon classeur, j'ai une feuille de "saisie". Je saisi les résultats au fur et à mesure puis en cliquant sur "enregistrer", il y a une maccro qui s'active et colle les données que je viens de saisir dans la feuille 'détails' du cheval correspondant. Dans la feuille 'résumé', il y a la sythèse des éléments les plus importants dont j'ai besoins, mise à jour automatiquement en fonction des entrées dans la feuille 'détails'.
Je veux encore par la suite trouver le moyen d'archiver automatiquement les données datant d'il y a 2 ans. Par exemple, maintenant, j'ai besoins d'avoir sous la main les données de 2010 et 2011. Je n'ai plus besoins de 2009, mais je souhaite les conserver ailleurs si besoins... Comme ça, mes feuilles 'détails' ne sont pas trop encombrée par des lignes dont je ne me sers pas forcément.
Voilà, je crois que j'ai tout dit...:p
Bon j'assure pas que je vais pas avoir encore d'autres idées super chiantes, mais dans les grandes lignes je crois que j'arrive bientôt au résultats que j'imaginais.
Merci
A+
 

Pièces jointes

  • exemple.xls
    45.5 KB · Affichages: 82
  • exemple.xls
    45.5 KB · Affichages: 68
  • exemple.xls
    45.5 KB · Affichages: 77

Modeste

XLDnaute Barbatruc
Re : problème avec fonction SOMME.SI ...

re²,

Impossible de travailler avec ton fichier: un seul cheval :confused:, mais aussi et surtout des liaisons avec un autre fichier ... qui ne peuvent se mettre à jour (les résultats des formules ne sont donc guère exploitables).
En pièce jointe, un exemple basé sur ton 1er fichier (avec un second cheval aux résultats fictifs).
Vois les formules et essaye d'adapter. Si c'est OK, sélectionner (une fois toutes les formules complétées) une paire de feuilles "détails de ..." et "résumé ..." en faire une copie dans le même classeur, changer le nom du cheval dans les onglets et en cellule A1.

Pour ton "archivage", je propose qu'on attende de voir si le reste fonctionne ... le cheval "s'emballe" un peu, là :D
 

Pièces jointes

  • penelope exemple.zip
    16 KB · Affichages: 37
  • penelope exemple.zip
    16 KB · Affichages: 46
  • penelope exemple.zip
    16 KB · Affichages: 40
Dernière édition:

penelope

XLDnaute Nouveau
Re : problème avec fonction SOMME.SI ...

re...
Désolée pour mon dernier fichier joint... Je sais pas pourquoi il a mis des liaisons...
Tant pis. Sur le principe, j'ai compris ce que tu voulais dire. Même si je comprends pas tous les signes... je me contente de recopier ce qui va ensemble.
J'ai fais un mix des tes deux formules et ça donne:
Code:
=SOMMEPROD(INDIRECT("'détails"&A1&"'!$A$4:$A$100")>=DATE(ANNEE(AUJOURDHUI())-1;1;1)*INDIRECT("'détails"&A1&"'!$A$4:$A$100")<=DATE(ANNEE(AUJOURDHUI())-1;6;30)*INDIRECT("'détails"&A1&"'!$K$4:$K$100"))
Mais ça ne semble pas lui convenir (REF!). J'ai pourtant pris soins de modifier le nom de ma feuille de 'détails Blue' en 'détails Blue Damask', nom exact en A1, j'ai même essayé tout en majuscule, vu qu'em A1 c'est en majuscule... bref, il y a un bug.
Mais je pense qu'on est sur la bonne voie, même si j'ai encore bcp de travail, vu que si ça marche, je vais devoir reprendre tout mon classeur pour recréer (en les copiant sur la 1ere et en modifiant les noms) toutes mes feuille, ainsi que modifier ma macro dans ma feuille saisie, vu qu'elle se base sur les ancienne feuille. Mais ça va aller! Tout le travail actuel est avant tout pour pas qu'il y ait de travail plus tard!!!!!:D
Merci pour ton aide et ta patience!
A+
 

Discussions similaires

Réponses
8
Affichages
262

Statistiques des forums

Discussions
312 200
Messages
2 086 163
Membres
103 149
dernier inscrit
Deepkneec