Somme Si + Période
Mr Ludo
Messages postés
8
Statut
Membre
-
ben13.51 Messages postés 115 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
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:
- Somme Si + Période
- Somme si couleur - Guide
- Formule somme excel ligne - Guide
- Somme en anglais excel - Guide
- SOMME SI COULEUR ✓ - Forum Excel
- Somme si ens ou ✓ - Forum Excel
16 réponses
Bonjour,
2 propositions (pour une plage de 839 lignes et un critere de date janvier2009) :
Tom
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
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
Merci quand même
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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.
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.
si tu n'est pas trop réfractaire au macro on peut t'aider à la créer
ça te fera une première approche
ça te fera une première approche
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
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
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
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
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.... ;)
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.... ;)
@ 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 !
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 !
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.....
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.....
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
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
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
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
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
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
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
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