Somme d'une colonne selon période
RésoluLe Pingou Messages postés 12714 Date d'inscription Statut Contributeur Dernière intervention -

J'ai un tableau avec une colonne de prix mensuel (ces prix changent régulièrement), une colonne où sont indiqués les dates de changement de prix et une autre colonne qui donne les montants journaliers selon les différentes dates et les prix mensuel.
Je voudrais avoir le montant total d'une période donnée (cellule J5).
Je mets le tableau en PJ
Merci
- Somme d'une colonne selon période
- Déplacer une colonne excel - Guide
- Formule somme excel colonne - Guide
- Trier une colonne excel - Guide
- Colonne word - Guide
- Somme si couleur - Guide
55 réponses
Le problème est de calculer le total sur une période donnée à partir d’un tableau où le prix mensuel change à des dates et où le résultat doit être affiché en J5. La solution principale propose une approche en trois segments et une formule matricielle utilisant SOMME.SI.ENS pour sommer les jours correspondant à chaque sous-période, la formule devant être validée en tant que matrice (Ctrl+Shift+Enter). Des corrections ont porté sur le contrôle des dates et l’adaptation des références, avec des ajustements sur les bornes (≤ ou <) afin que les bornes J2 et J3 couvrent exactement la période souhaitée, et des échanges discutent aussi d’une éventuelle macro si la robustesse est insuffisante. Différentes propositions et tests ont été réalisés pour fiabiliser le calcul et aligner les résultats, en soulignant l’importance de valider correctement les dates et les correspondances entre les colonnes de dates et les prix.
Le doc :
https://www.cjoint.com/?DGraq11lKZj
(j'arrête de coller la formule qui prend vraiment trop de place...)
J'avoue que ma formule est complexe s'il faut modifier les données sources mais encore une fois un peu de rechercher/remplacer permet de vite contourner le pb.
Oui, désolé, en ajoutant les contrôles des dates j'ai omis un signe [.] dans une instruction.
J'en ai profité pour modifier la formule de Theo.R pour se référer aux choix de la feuille 2.
Petit exercice de style qui m'a permis de mieux comprendre sa démarche, merci Theo.R.
Le fichier : https://www.cjoint.com/?3GrqSKlTF44
Pouvez-vous mettre votre exemple à disposition ? Si oui mettre sur https://www.cjoint.com/ et poster le lien !
Saur erreur de compréhension, (ce qui est fort probable:
excel à partir de 2007:
=SOMME.SI(Champ à sommer; Champ date;">="&cell début;champdate;"<="&cell fin)
avant 2007
=SOMMEPROD((Champ date>=cell début)*(champ date <=cell fin)*(champ à sommer))
crdlmnt
Errare humanum est, perseverare diabolicum
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionPour la formule, il faut procéder en trois temps :
les jours de la borne inférieure après J2 (période qui commence AVANT J2 et finit APRES)
+les périodes comprises entre J2 et J3 strictement
+ les jours de la borne supérieure avant J3 (commence AVANT J3 et finit APRES).
Avec SOMME.SI.ENS, on obtient alors (j'ai sauté des lignes pour faire apparaître la correspondance avec ci-dessus) ATTENTION A BIEN VALIDER EN FORMULE MATRICIELLE (Ctrl+Shift+Enter une fois la formule collée dans la cellule) :
=(MIN(SI((C6:C100<J2)*(D6:D100>J2);D6:D100))-J2)*INDEX(B6:B100;EQUIV(MIN(SI((C6:C100<J2)*(D6:D100>J2);D6:D100));D6:D100))
+ SOMME.SI.ENS(F6:F100;C6:C100;">"&J2;C6:C100;"<"&J3;D6:D100;">"&J2;D6:D100;"<"&J3)
+(J3-MAX(SI((C6:C100<J3)*(D6:D100>J3);C6:C100)))*INDEX(B6:B100;EQUIV(MAX(SI((C6:C100<J3)*(D6:D100>J3);C6:C100));C6:C100))
Sans les sauts de ligne (pour copier/coller), à faire en formule matricielle (je répète mais ça change tout) :
=(MIN(SI((C6:C100<J2)*(D6:D100>J2);D6:D100))-J2)*INDEX(B6:B100;EQUIV(MIN(SI((C6:C100<J2)*(D6:D100>J2);D6:D100));D6:D100))+ SOMME.SI.ENS(F6:F100;C6:C100;">"&J2;C6:C100;"<"&J3;D6:D100;">"&J2;D6:D100;"<"&J3)+(J3-MAX(SI((C6:C100<J3)*(D6:D100>J3);C6:C100)))*INDEX(B6:B100;EQUIV(MAX(SI((C6:C100<J3)*(D6:D100>J3);C6:C100));C6:C100))
Chez moi ça marche donc si tu gardes les mêmes références que dans ton exemple aucun souci !
A plus :)
Théo, quelle belle formule ! J'ai fait un copier coller et appliquer en formule matricielle, j'ai #N/A comme résultat.
J'ai enlevé l'espace en le + SOMME.SI.ENS, mais toujours le même résultat.
Pourtant je n'ai pas modifié le tableau.
Je n'arrive pas à trouver l'erreur.
Précision, il n'y aura jamais de date avant le 01/05/1999
Merci de votre aide
Avez-vous essayé les 2 formules de Vaucluse
La 1 modifié en SOMME.SI.ENS :
=SOMME.SI.ENS(F6:F10;C6:C10;">="&J2;D6:D10;"<="&J3)
La 2 :
=SOMMEPROD(((C6:C10)>=J2)*(D6:D10<=J3)*(F6:F10))
Est-ce que cela répond à votre demande ?
J'ai bien essayé avec les 2 formules, le résultat est le même et c'est pas bon.
Car par exemple du 01/05/199 au 15/11/2000, j'ai le même montant 39,54€ que du 01/05/199 au 31/10/2000 ou 01/05/1999 au 01/11/2000. La formule ne calcule pas le montant entre le 31/10/2000 et le 15/11/2000, soit (2,55*12/365)*16.
Merci encore.
Bien sûr que ce n'est pas correct, nous ne savions même pas comment devait se calculer le résultat....!
En voyant votre l'image nos pouvions penser que le résultat de l'exemple soit 39.54 Euros était correct.
Note et pourquoi ne pas mettre le résultat attendu...?
Si vous aviez mis votre fichier comme demander au poste vous auriez eu la bonne solution.
Salutations.
Le Pingou
Voici le lien, j'ai testé la formule de Théo avant de joindre le tableau.
https://www.cjoint.com/?0Gmpf2NNJZg
Merci
Merci pour le fichier.
Toutefois, pourquoi ne pas dire si la formule de Théo est conforme..... ? Ou bien c'est moi qui doit la tester... !
Lien 6 d'hier.
Merci
Pourtant il a préciser que : Chez moi ça marche donc si tu gardes les mêmes références que dans ton exemple aucun souci !
Dans ce cas, pour la période exemple la valeur selon Théo est de : 831.97 et pour moi, via VBA, de : 40.63 .... !
Me de préciser laquelle est correct... !
Salutations.
Le Pingou
Ma formule pour compter le Nb de jour est J3-J2+1
Merci
Désolé j'ai pas vu le dernier poste.
J'ai pris la peine de testez la formule de Théo et elle ne répond pas à votre résultat de 40.80¨.
je pense qu'il faut passer par une procédure (macro)......patience...!
Voici ma proposition via procédure (voir note sur la feuille) : https://www.cjoint.com/?3GmsCzchVe9
Je vous laisse contrôler les résultats obtenues... !
Elle calcule la totalité des prix entre la période en J2 et celle en J3. Pour la démarche j'avais déjà expliqué mon raisonnement.
Je me suis peut être trompé en collant ma formule dans mon MSG, mais n'ayant pas accès excel avant mardi je ne peux pas vérifier.
Autre possibilité : j'ai peut être juste mal compris la demande. Mais dans le cas contraire, un recours aux Macros n'est pas nécessaire !
Je vous tiens au courant mardi, mais disons que ma solution n'est pas valide en attendant.
Bonne continuation