Somme de chaque mois

Bonjour,

Je cherche une formule ou un code vba pour qu'a chaque fin de mois, la valeur (un nombre) d'une cellule (on va dire A1 , qui a une formule =SOMME(E1:E8) ) soit reportée dans une autre cellule (on va dire A2) et reinitalise la cellule A1 pour le mois suivant

j'ai joint un fichier juste pour montrer ^^

Merci bien

14sommedate.xlsx (12.10 Ko)

Bonjour,

à tester :

16sommedate.xlsm (18.56 Ko)

Merci Melch mais !

j'ai pas précisé, ca doit se faire automatiquement parce que comme ca pas de soucis j'y arrive

Il prend la somme a la fin du mois et reporte automatiquement dans A2 et reinitilaise A1 ( des que le premier jour du mois suivant est arrivé ).

Pas besoin de lancer de macro en fait c'est fait automatiquement quand il detecte le premier jour du mois suivant.

Merci

Ps: dsl je me suis mal exprimé

Bonjour

Des idées ?

Pour faire afficher dans une cellule la valeur d'une cellule en fonction du mois?

A la fin de chaque mois il reporte dans une case la valeur d'une cellule (A1) dans une autre (A2) mais avec la detection automatique de la fin du mois.

ou un code VBA pour detecter automatiquement la fin du mois en cours en fonction de la date d'aujourd'hui ?

Merci bien

un =SI( EOMONTH ) peut etre?

Bonjour Jamais203,

voyez si le fichier joint peut vous aider

Merci bien je vais regarder ca

par contre la traduction litterale de la formule ?

=SI(D5>FIN.MOIS(D4;0);"Total "&SOMME.SI.ENS(E:E;D:D;">="&FIN.MOIS(D4;-1);D:D;"<="&FIN.MOIS(D4;0))&" en "&TEXTE(D4;"mmmm aaaa");"")

je vais essayer de voir ce que je comprends si la date de la cellule D5 est supérieur a celle de D4 il fait la somme de la colonne E et .... ?

Merci

Bonjour Jamais203,

=SI(D5>FIN.MOIS(D4;0);"Total "&SOMME.SI.ENS(E:E;D:D;">"&FIN.MOIS(D4;-1);D:D;"<="&FIN.MOIS(D4;0))&" en "&TEXTE(D4;"mmmm aaaa");"")
D:D;"<="&FIN.MOIS(D4;0)

, limite calendaire inférieure ou égale à la de fin de mois D4+-0

D:D;">="&FIN.MOIS(D4;-1)

, limite calendaire supérieure ou égale à la de fin de précédent le mois D4-1.

C'est là que je m'aperçois d'une erreur, il faut que ce soit strictement supérieur

D:D;">"&FIN.MOIS(D4;-1)

La formule à utiliser est donc, pour totaliser la somme en colonne E correspondante aux dates limites :

=SI(D5>FIN.MOIS(D4;0);"Total "&SOMME.SI.ENS(E:E;D:D;">"&FIN.MOIS(D4;-1);D:D;"<="&FIN.MOIS(D4;0))&" en "&TEXTE(D4;"mmmm aaaa");"")

Profitez en pour remplacer la formule en colonne G, au cas ou vos dates en colonne D ne seraient pas classées en ordre croissant, par

=SI(OU(F1="";NB.SI(F$1:F1;F1)>1);"";LIGNE())

Merci beaucoup je vais tester ca

Je voudrait combiner cette formule avec une autre en fait. J'ai fait un tableau avec un calendrier et chaque jours du mois (septembre et octobre par exemple) dans chaque cellule a cote de la date il y aura une valeur numerique. Donc on est le 1 sept c''est la cellule a cote du 1er septembre qui est utilisé , quand on passe au 2 septembre.. bon voilà

mais detecté le jour automatiquement. Si je met un =aujourdhui il va prendre prendre à la fois le 1 et 2 septembre.

en fait le 2 septembre la cellule du 1 er septembre ne bouge plus , elle reste fixe ( forcement vu qu'on est le 2 septembre)

Septembre 01/09/2019 -------- 02/09/2019 --------

Une idée , Merci

un genre de =aujourdhui( [cellule]) - 1 pour le 1er septebmre ! si on est le 2 septembre

j'ai joint un fichier exemple avec des commentaires.

merci

6sommedate.xlsx (13.97 Ko)

J'ai remis un fichier plus clair avec un commentaire

5sommedate.xlsx (13.10 Ko)

Bonjour,

Une petite idée?

J'ai peut etre trouvé quelque chose

mettre toutes les dates du mois

juste mettre dans une cellule =aujourdhui() (en cellule A1 par exemple ) et faire un =SI([Le_Jour_du_Mois=A1;[cellule de calcul];"") ?

mais il faudrait pouvoir garder la valeur en cellule B1 quand on passe au 30 septembre. Seul soucis il faut garder la valeur en date du 29/09/2019 ce qui n'est pas le cas pour le moment

2sommedate.xlsx (13.40 Ko)

Ou bien sauvegarder la valeur et la recopier dans une autre colonne ? par rapport à la valeur de la cellule précedente?

prendre la valeur de la colonne F et reporter dans le G (mais cela ne fonctionne pas)

Dim xRg As Range Dim xChangeRg As Range Dim xDependRg As Range Dim xDic As New Dictionary Private Sub Worksheet_Change(ByVal Target As Range) End Sub Dim I As Long Dim xCell As Range Dim xDCell As Range Dim xHeader As String Dim xCommText As String On Error Resume Next Application.ScreenUpdating = False Application.EnableEvents = False xHeader = "Previous value :" x = xDic.Keys For I = 0 To UBound(xDic.Keys) Set xCell = Range(xDic.Keys(I)) Set xDCell = Cells(xCell.Row, 6) xDCell.Value = "" xDCell.Value = xDic.Items(I) Next Application.EnableEvents = True Application.ScreenUpdating = True End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) End Sub Dim I, J As Long Dim xRgArea As Range On Error GoTo Label1 If Target.Count > 1 Then Exit Sub Application.EnableEvents = False Set xDependRg = Target.Dependents If Not xDependRg Is Nothing Then Set xDependRg = Intersect(xDependRg, Range("G:G")) End If Label1: Set xRg = Intersect(Target, Range("G:G")) If (Not xRg Is Nothing) And (Not xDependRg Is Nothing) Then Set xChangeRg = Union(xRg, xDependRg) ElseIf (xRg Is Nothing) And (Not xDependRg Is Nothing) Then Set xChangeRg = xDependRg ElseIf (Not xRg Is Nothing) And (xDependRg Is Nothing) Then Set xChangeRg = xRg Else Application.EnableEvents = True Exit Sub End If xDic.RemoveAll For I = 1 To xChangeRg.Areas.Count Set xRgArea = xChangeRg.Areas(I) For J = 1 To xRgArea.Count xDic.Add xRgArea(J).Address, xRgArea(J).Formula Next Next Set xChangeRg = Nothing Set xRg = Nothing Set xDependRg = Nothing Application.EnableEvents = True End Sub

Rechercher des sujets similaires à "somme chaque mois"