Commande SOMMEPROD

Bonjour,
je souhaite avoir la somme sur la feuille Synthèse! des nombres de la colonne C de la feuille resultats_2011 qui réponsent à deux critères. La formule :
=SOMMEPROD(ANNEE(resultats_2011!A:A)=Synthèse!B8;resultats_2011!B:B="vélo";resultats_2011!C:C)
me renvoit #VALEUR!
Pourqoi ?

Merci de votre aide.

23 réponses

Résumé de la discussion

Somme des valeurs de la colonne C de resultats_2011 selon deux critères: l’année égale à Synthèse!B8 et le libellé 'vélo' dans la colonne B, calculée avec SOMMEPROD. La formule initiale peut renvoyer #VALEUR! lorsque des plages entières (A:A, B:B, C:C) ne sont pas compatibles ou lorsque les critères MOIS et ANNEE ne renvoient pas des longueurs identiques. Pour corriger, borner les plages (par exemple A2:A1759, B2:B1759 et C2:C1759), aligner les longueurs, et utiliser une version adaptée de la formule SOMMEPROD avec ANNEE et MOIS sur A2:A1759. D'autres échanges suggèrent d'éviter les colonnes entières selon les versions d'Excel et d'adapter les critères MOIS à des valeurs numériques (1 à 12) plutôt que du texte.

Bobot (l’IA à votre service)
  1. Merci pour toutes ces précisions.

    Je vais finir tout seul...La première des 2 formules ci-dessous fonctionne, pas la seconde.
    Il y a 1 et 2 dans E2 et F2.

    =SOMMEPROD((resultats_2011!$B$2:$B$5000="course à
    pieds")*(ANNEE(resultats_2011!$A$2:$A$5000)=$B$4)*(MOIS(resultats_2011!$A$2:A$5000)=E$2);(resultats_2011!$C$2:$C$5000))
    =SOMMEPROD((resultats_2011!$B$2:$B$5000="course à
    pieds")*(ANNEE(resultats_2011!$A$2:$A$5000)=$B$4)*(MOIS(resultats_2011!$A$2:B$5000)=F$2);(resultats_2011!$C$2:$C$5000))
    0
    1. Il manque 1 $ dans la première formule:
      MOIS(resultats_2011!$A$2:A$5000)=E$2)
      MOIS(resultats_2011!$A$2:$A$5000)=E$2)
      ce qui amène une erreur en recopiant $A$2:B$5000 au lieu de $A$2:$A$5000

      Par contre =$B$4 est surabondant =$B4 permet de recopier verticalement.
      0
  2. Ah, j'oublié. Il me semble qu'il y a un moyen de "bloquer" les références à une plage de cellules pour ne pas qu'elles changent lors 'un copier-glisser.
    Le connaissaez-vous ?
    0
    1. Merci tontong,
      Ca fonctionne.
      Dommage que les copier-glisser fonctionnent mal avec ma formule et que je ne puisse pas selectionner des colonnes entières (présence de mots en début de colonne).
      En tous cas, merci de votre patience.
      0
      1. La formule proposée à la fin du #23 permet un copier/glisser, mais on obtient des 0 pour les lignes vides où l'année n'est pas renseignée.

        Rappel résumé:
        Le $ bloque la partie de la référence devant laquelle il est placé.
        $A$2 la ligne et la colonne sont bloquées c'est une référence absolue.
        $A2 la colonne est bloquée c'est une référence mixte. La ligne s'incrémente lors de la recopie.
        A$2 la ligne est bloquée c'est une référence mixte. La colonne s'incrémente lors de la recopie.
        A2 rien n'est bloquée c'est une référence relative. La ligne et la colonne s'incrémentent lors de la recopie.

        La liste ne serait pas complète si on ne citait pas les références nommées où un nom remplace une référence de cellule ou de champ.
        0
    2. Bonjour,
      On va y arriver, ne désespérez pas.
      En E4 vous avez =SOMMEPROD((resultats_2011!B$2:B$1759="vélo")*(ANNEE(resultats_2011!A$2:A$1759)=B4)*(MOIS(resultats_2011!A$2:A$1759)=E1)*(resultats_2011!C$2:C$1759))
      Il faudrait ..*(MOIS(resultats_2011!A$2:A$1759)=E2)..

      En F4 vous avez ...*(MOIS(resultats_2011!I$2:I$1759)=F2)
      Il faudrait ..*(MOIS(resultats_2011!A$2:A$1759)=F2)..

      Faites, en E4, un copier/coller de cette formule:
      =SOMMEPROD((resultats_2011!$B$2:$B$1759="vélo")*(ANNEE(resultats_2011!$A$2:$A$1759)=$B4)*(MOIS(resultats_2011!$A$2:$A$1759)=E$2)*(resultats_2011!$C$2:$C$1759))
      et recopiez sur la ligne 4.
      1
      1. Bonjour,
        Bonjour,
        Seulement 2 erreurs pour le critère MOIS: le champ n'est pas en colonne I mais en colonne A et F1 contient un texte.La fonction MOIS renvoie un nombre de 1 à 12 donc dans le critère (MOIS(resultats_2011!I$2:I$1759)=F1) il faudrait que F1 contienne un nombre... comme je l'avais déjà précisé au #19.

        Pour arranger ça je propose d'ajouter en ligne 2: E2 =1 ,F2=2,.........P2=12 en dessous de Janvier, Février,......et de recopier en E3 la formule
        =SOMMEPROD((resultats_2011!$B$2:$B$1759="vélo")*(ANNEE(resultats_2011!$A$2:$A$1759)=$B3)*(MOIS(resultats_2011!$A$2:$A$1759)=E$2);(resultats_2011!$C$2:$C$1759))
        Les quelques $ de plus la rende recopiable!!! ;-)
        1
        1. Bonjour.
          J'ai réessayé mais j'ai du oublier quelque chose.
          Ma formule feuille "synthèse" case F3 encadrée en rouge ne fonctionne pas
          =SOMMEPROD((resultats_2011!B$2:B$1759="vélo")*(ANNEE(resultats_2011!A$2:A$1759)=B3)*(MOIS(resultats_2011!I$2:I$1759)=F1);(resultats_2011!C$2:C$1759))

          https://www.cjoint.com/?CIjpQnAoa9X
          0
          1. Je n'ai copié la bonne formule dans mon post, je vérifie et je recommence.
            0
            1. Pas concluant.
              Est ce que j'ai oublié quelque chose dans la syntaxe :
              =SI((resultats_2011!J$2:J$1759="vélo");SOMMEPROD(ET(ANNEE(resultats_2011!I$2:I$1759)=J3;MOIS(resultats_2011!I$2:I$1759))=K2)*(resultats_2011!K$2:K$1759))

              Comment me débarrasser des totaux "Nota: Les totaux de la ligne 1761 pourraient être présentés en haut de la feuille.".
              0
              1. Contributeur
                Bonjour
                votre formule n'est pas cohérente
                il faut des produits pour que sommeprod fonctionne.
                La condition SI n'est pas utile, de plus elle ne peut s'adresser à un champ complet (hors mis en matricielle, pas utile ici
                et il y a quelques parenthèses posées au hasard!
                écrivez

                =SOMMEPROD((resultats_2011!J$2:J$1759="vélo")*(ANNEE(resultats_2011!I$2:I$1759)=J3)*(MOIS(resultats_2011!I$2:I$1759)=K2)*(resultats_2011!K$2:K$1759))

                crdlmnt
                0
              2. Bonjour,
                Comment me débarrasser des totaux:
                Clic droit sur une cellule >> Liste >> clic sur ligne de total.

                En complément au #17 de Vaucluse K2 doit contenir un nombre de 1 à 12.
                0
            2. Merci à tous les deux.
              Ca prend forme. Pour "Nota: Les totaux de la ligne 1761 pourraient être présentés en haut de la feuille.", je ne sais plus comment me débarrasser des totaux.
              Maintenant, je vais essayer de faire pareil mais par mois.
              0
              1. Bonjour.
                effectivement, il doit y avoir des problèmes avec les dates.
                Pour la SI"vélo" qui me renvoie 0 case C4 de la feuille Synthèse du fichier ci-joint, je ne comprends pas.

                https://www.cjoint.com/?CIel57gZbZi
                0
                1. Contributeur
                  Je crois que votre formule n'est pas écrite correctement:
                  le premier item ne tient pas compte du code ANNEE, il n'y a donc aucune valeur du champ égale à B4!
                  la limite du champ de A1 à A500 n'inclut pas d'année 2013, et donc vous aurez forcément 0
                  le signe entre les deux derniers item doit être * pas ;
                  crdlmnt
                  0
                2. Bonjour,
                  Pour appliquer les remarques de Vaucluse il faut modifier la formule de Feuil3!G5
                  =SOMMEPROD((resultats_2011!A2:A500=Synthèse!B8)*(resultats_2011!B2:B500="vélo");(resultats_2011!C2:C500))
                  en ajoutant la fonction Annee, en allongeant les champs de 500 à 1700 et en remplaçant B8 par B4 (B8 est vide dans le fichier joint)
                  La formule devient
                  =SOMMEPROD((ANNEE(resultats_2011!A2:A1700)=Synthèse!B4)*(resultats_2011!B2:B1700="vélo");(resultats_2011!C2:C1700))
                  ou
                  =SOMMEPROD((ANNEE(resultats_2011!A2:A1700)=Synthèse!B4)*(resultats_2011!B2:B1700="vélo")*(resultats_2011!C2:C1700))

                  Avec l'opérateur ; SommeProd sera effectué même si dans le champ C2:C1700 une cellule contient du texte. C'est un choix!

                  Nota: Les totaux de la ligne 1761 pourraient être présentés en haut de la feuille.
                  0
              2. Contributeur
                Bonjour
                si la formule renvoie valeur, c'est que vous avez dans une colonne traitée des valeurs qui ne sont pas numériques.
                IUl semblerait d'"après vos messages que ce soit dans la colonne des dates.
                Vérifier que toutes les valeurs dates soient bien numériques (formater la colonne en standard et voyez si toutes les dates deviennent des nombres)
                crdlmnt
                0
                1. Bonjour,
                  Peut-on voir le fichier ou un extrait typique?
                  0
                  1. Bonjour Tontong.
                    Si j'utilise ta formule elle me renvoie 0, ce qui est incohérent.
                    0
                    1. Bonjour,
                      S'il y a des valeurs de texte dans le champ dont il faut faire la somme ( colonne C) il convient d'adopter cette syntaxe:
                      =SOMMEPROD((resultats_2011!A2:A500=Synthèse!B8)*(resultats_2011!B2:B500="vélo");(resultats_2011!C2:C500))
                      avec l'opérateur ; à la place du * pour le champ "à sommer".
                      Bonnes vacances.
                      0
                      1. Bonjour.
                        Les =ESTNUM me renvoient bien vrai. Je pars une semaine en vacances, je recommence après.
                        0
                        1. Bonjour,
                          Il faut vérifier si on a bien des nombres et des dates (alignés par défaut à droite).
                          Dans une cellule libre tapez =ESTNUM(B8) la formule validée doit revoyer la valeur VRAI.
                          Faites de même avec A2,A3.....
                          Le 01/05/2008 doit devenir 39569 si on passe la cellule au format Standard.
                          0
                          1. Bonjour.
                            J'ai identifié le problème c'est ce test qui ne fonctionne pas :
                            ANNEE(resultats_2011!A$2:A$4000)=B8

                            Il y 2008 dans B8 et des dates de la forme 01/05/200X dans la colonne A.
                            0
                            1. Merci Tontong.
                              J'ai la suite bureautique de windows 7. J'ai essayer aussi en bornant les colonnes, sans plus de succès. Ce sont mes tests qui ne fonctionnent pas.
                              0
                              • 1
                              • 2