Somme Si + Période

Mr Ludo Messages postés 8 Statut Membre -  
ben13.51 Messages postés 115 Statut Membre -
Bonjour,

J'ai 2 colonnes de données. Une première colonne A avec des dates (format jj/mm/aa); une deuxième colonne B avec des quantités. Je souhaiterais obtenir dans une cellule la somme des quantités selon le mois.

J'ai tenté une formule mais elle ne prend en compte qu'un seul jour:
SUMIF(A1:A150;DATE(2009;1;1);B1:B150)

J'ai tenté de mettre 0, n, x ou ? à la place du jour mais ça ne donne aucun résultat.

Pouvez-vous m'aider s'il-vous-plaît ?

Ludo
A voir également:

16 réponses

tompols Messages postés 1273 Date d'inscription   Statut Contributeur Dernière intervention   435
 
Bonjour,
2 propositions (pour une plage de 839 lignes et un critere de date janvier2009) :
=SOMMEPROD((MOIS(A1:A839)=1)*(ANNEE(A1:A839)=2009)*(B1:B839))
=> formule "classique"
=SOMME((MOIS(A1:A839)=1)*(ANNEE(A1:A839)=2009)*(B1:B839))
=> formule matricielle à valider par CTRL + SHIFT + ENTREE
Tom
1
ben13.51 Messages postés 115 Statut Membre 7
 
Je pense que tu devrai créer une macro... ça sera plus pratique que les formules excel
0
Mr Ludo Messages postés 8 Statut Membre
 
Et c'est là que ça coince. Je ne sais pas faire ... pour l'instant. Mais j'ai l'impression que je vais devoir m'y mettre ! On m'avait déjà donné ce conseil mais j'ai persévéré dans les formules.

Merci quand même
0
ben13.51 Messages postés 115 Statut Membre 7
 
et tu as trouver avec les formules??
0
Mr Ludo Messages postés 8 Statut Membre
 
Aucun problème. Ca m'intéresse beaucoup justement ...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mr Ludo Messages postés 8 Statut Membre
 
Non. J'en ai essayé plusieurs. Certaines mélangées à d'autres. J'ai bien secoué et le résultats n'était jamais au rdv.
La formule qui me paraissait la plus cohérente était SUMIF(A1:A150;DATE(2009;1;1);B1:B150) mais forcément ça ne prend en compte qu'une seule journée.
0
ben13.51 Messages postés 115 Statut Membre 7
 
si tu n'est pas trop réfractaire au macro on peut t'aider à la créer
ça te fera une première approche
0
ben13.51 Messages postés 115 Statut Membre 7
 
bon ok c parti
on va dire que tu va affecté ta futur macro à un bouton...
pour créer un bouton...
Affichage> barre d'outil > formulaire

Clic sur bouton sur la barre d'outil qui est apparu
et dessine ton bouton sur la page qui t'interesse
une fois que tu as dessiner ton bouton tu as une fenetre qui apparait "affecter une macro"
sinon clic droit sur ton bouton et "affecter une macro"

ensuite clic sur nouvelle et tu as les pages de code qui apparaissent

une macro s'est créée et le curseur clignote...
(Sub est le terme de début de macro, ensuite tu as un nom de macro que tu pourra modifier si tu veux (mais pour l'instant laisse le nom automatique) ensuite les parenthèse () et toute macro doit se finir par end sub)

avant sub colle ça
dim DateF as Date
dim Som as Single
entre la ligne sub et end sub colle ce qui suit

for i=X to Y (remplace le X par le numéro de la première ligne avec une date de ta colonne date et le Y par le numéro de ta dernière)
DateF = Sheets("NomDeTaFeuille").Cells(i,NuméroDeTaColonneDeDate) (A=1, B=2...)
if Month(Date)=1 then
Som = Som + Sheets("NomDeTaFeuille").Cells(i,NuméroDeTaColonneQuantité)
end if
next i
Sheets("NomDeTaFeuille").Cells(NumLigne,NumColonne).value = som
(choisi une cellule dans laquelle afficher la somme et inscrit le numéro de sa ligne et le num de sa colonne )

Tout ce qui est en gras est à modifier par toi
essaye ça comme ça et demain on voit pour les explication et les modif...
cette macro fais la somme des quantité pour le mois de janvier...
on perfectionnera ensuite pour le faire pour chaque mois
0
Mr Ludo Messages postés 8 Statut Membre
 
Tout d'abord merci beaucoup pour l'aide.

J'ai fait un petit tableau "test" sur lequel je m'essaie aux macros.
En colonne D les dates commencent au 01/08/09 en cellule D3.
Les quantités associées se trouvent en colonne F et commencent en cellule F3.
Le nom de ma feuille est "bilan".

Dim DateF As Date
Dim Som As Single
Sub Button1_Click()
For i = 3 To 500
DateF = Sheets("bilan").Cells(i, 4) -> Quand je clique sur le bouton, "Can't execute in break mode" apparait et la ligne est surlignée en jaune.
If Month(DateF) = 8 Then
Som = Som + Sheets("bilan").Cells(F, i)
End If
Next i
Sheets("bilan").Cells(9, 8).Value = Som
End Sub
0
tompols Messages postés 1273 Date d'inscription   Statut Contributeur Dernière intervention   435
 
Bonjour,
Je persiste, utilser une macro ds ce cas n'est pas approprié : une formule, ou un TCD peuvent largement suffire (et seront plus performants que du code VBA).
Maintenant si effectivement tu souhaites en profiter pour t'intéresser aux macros, no pb.... ;)
0
Mr Ludo Messages postés 8 Statut Membre
 
@ Tompols

Je découvre bel et bien les macros mais je ne ferme pas la porte à toutes autres solutions. J'en apprends encore plus !

J'ai rentré la première formule comme cela:
=SOMMEPROD((MONTH(D3:D841)=8)*(YEAR(D3:D841)=2009)*(F3:F839))

La seconde de cette manière (et j'ai bien validé par ctrl+shift+entré)
=SOMME((MONTH(D3:D841)=8)*(YEAR(D3:D841)=2009)*(F3:F841))

Voilà la réponse: #NAME?

Où c'est que ça coince ?

En attendant je vais tenter le TCD !
0
tompols Messages postés 1273 Date d'inscription   Statut Contributeur Dernière intervention   435
 
Re,
Pemiere chose, tu as l'air d'etre en version anglaise, ds ce cas relmplace SOMME par SUM et SOMMEPROD par SUMPRODUCT...si tu as la possibilité de mettre un fichier exemple sur http://cijoint.fr/ ça nous aiderait je pense.....
0
Mr Ludo Messages postés 8 Statut Membre
 
Bien vu le coup de la traduction ! Ca marche parfaitement.
Par contre, je souhaiterais malgrè tout comprendre le fonctionnement d'une macro et d'un TCD.

J'ai fait un tableau test.

http://www.cijoint.fr/cjlink.php?file=cj200908/cijUuivSqj.xlsx
0
ben13.51 Messages postés 115 Statut Membre 7
 
Désolé je ne peu pas ouvrir ton fichier il est enregistré en format xml et non en xls
En plus je pense que tu utilise excel2007 je ne possède que la version 2003
si tu peu enregistrer sous ce format je pourrai jetter un coup d'oeil et t'expliquer le fonctionnement de la macro
0
Mr Ludo Messages postés 8 Statut Membre
 
Et voilà !

http://www.cijoint.fr/cjlink.php?file=cj200908/cijWRbmqgM.xls
0
ben13.51 Messages postés 115 Statut Membre 7
 
Bon, j'ai lancer la macro après quelque modif... ça marche essaye ça on perfectionnera après avec quelques explications

Dim DateF As Date
Dim Som As Single

Sub Bouton1_QuandClic()
For i = 3 To 500
DateF = Sheets("bilan").Cells(i, 2) '-> Quand je clique sur le bouton, "Can't execute in break mode" apparait et la ligne est surlignée en jaune.
If Month(DateF) = 8 Then
Som = Som + Sheets("bilan").Cells(i, 3)
End If
Next i
Sheets("bilan").Cells(6, 7).Value = Som
End Sub
0
ben13.51 Messages postés 115 Statut Membre 7
 
Et si tu lance ce code
avec en F1 "Quantité Janvier", F2 "Quantité Fevrier"..., F12 "Quantité Décembre"
Tu as en une fois toute les sommes

Dim DateF As Date
Dim Som As Single

Sub Bouton1_QuandClic()
For j = 1 To 12
Som = 0
For i = 3 To 500
DateF = Sheets("bilan").Cells(i, 2)
If Month(DateF) = j Then
Som = Som + Sheets("bilan").Cells(i, 3)
End If
Next i
Sheets("bilan").Cells(j, 7).Value = Som
Next j
End Sub
0