cathodique
XLDnaute Barbatruc
Bonsoir,
Merci de m'aider à comprendre cette incohérence. Cherchant à faire un cumul par mois, j'ai utilisé la fonction Sumifs (sur proposition de Chris que je salue) et ce pour la première fois (jamais utilisé même sur une feuille de calcul.
L'incohérence réside dans les dates, si je mets pour le format des dates "mmmm yyyy", c-à-d afficher mois et année complet (janvier 2017), là tout va bien le mois est à gauche et l'année à droite.
Par contre, si je veux afficher en mois réduit (mmm yyyy) tous les affichages sont bons sauf pour sepembre, octobre et novembre, il y a une inversion c-à-d année puis mois.
Voici le résultat obtenu:
janv 17
févr 17
mars 17
avr 17
mai 17
juin 17
juil 17
août 17
17-sept
17-oct
17-nov
déc 17
	
	
	
	
	
		
Je suis déboussolé. Est-ce qu'il y a une erreur dans mon code. Merci à vous par avance.
	
		
			
		
		
	
				
			Merci de m'aider à comprendre cette incohérence. Cherchant à faire un cumul par mois, j'ai utilisé la fonction Sumifs (sur proposition de Chris que je salue) et ce pour la première fois (jamais utilisé même sur une feuille de calcul.
L'incohérence réside dans les dates, si je mets pour le format des dates "mmmm yyyy", c-à-d afficher mois et année complet (janvier 2017), là tout va bien le mois est à gauche et l'année à droite.
Par contre, si je veux afficher en mois réduit (mmm yyyy) tous les affichages sont bons sauf pour sepembre, octobre et novembre, il y a une inversion c-à-d année puis mois.
Voici le résultat obtenu:
janv 17
févr 17
mars 17
avr 17
mai 17
juin 17
juil 17
août 17
17-sept
17-oct
17-nov
déc 17
		VB:
	
	
	Sub Mensuel()
    Dim mois As Integer, An As Integer, derlig As Integer, NBd As Long, dl As Long
    Dim TotMoisD As Currency, TotMoisR As Currency
    Dim ShBd As Worksheet, ShSyn As Worksheet
     Application.ScreenUpdating = False
    'On Error Resume Next
    Set ShBd = Worksheets("BD")
    Set ShSyn = Worksheets("MaFeuille")
NBd = ShBd.Cells(ShBd.Rows.Count, 1).End(xlUp).Row
dl = ShSyn.Cells(ShSyn.Rows.Count, 1).End(xlUp).Row
        If dl > 5 Then ShSyn.Range("A6:I" & dl).Rows.Delete
    derlig = 6
    For An = Year(WorksheetFunction.Min(ShBd.Range("A2:A" & NBd))) To Year(WorksheetFunction.Max(ShBd.Range("A2:A" & NBd)))
        For mois = 1 To 12
       
            TotMoisR = WorksheetFunction.SumIfs(ShBd.Range("B2:B" & NBd), ShBd.Range("A2:A" & NBd), ">=" & mois & "/01/" & An, ShBd.Range("A2:A" & NBd), "<" & WorksheetFunction.EoMonth(mois & "/01/" & An, 0))
            TotMoisD = WorksheetFunction.SumIfs(ShBd.Range("c2:c" & NBd), ShBd.Range("A2:A" & NBd), ">=" & mois & "/01/" & An, ShBd.Range("A2:A" & NBd), "<" & WorksheetFunction.EoMonth(mois & "/01/" & An, 0))
            If TotMoisR <> 0 Or TotMoisD <> 0 Then
                ShSyn.Cells(derlig, 1) = Format(CDate("01/" & mois & "/" & An), "mmmm yyyy")
                ShSyn.Cells(derlig, 2) = TotMoisR
                ShSyn.Cells(derlig, 3) = TotMoisD
                derlig = derlig + 1
            End If
        Next mois
    Next An
End Sub