Somme.Si.Ens VBA

Bonjour,

j'ai essayé d'écrire le code suivant, pour moi il me renvoi 0 pour il ne fonctionne pas

Sub Macro2()'
T = Application.WorksheetFunction _
.SumIfs(Range("e59:e179"), Range("a59:a179"), Cells(59, 1).Value, Range("ai59:ai179"), "" <= "" & Cells(59, 36).Value)
Cells(59, 40).Value = T
End Sub

Si je supprime une partie de mon texte (Range("ai59:ai179"), "" <= "" & Cells(59, 36).Value) mon code fonctionne je pense que le probléme viens de la deuxiéme partie car les champs controlés sont au format date et heures

ci joint le le fichier épuré pour une meilleure compréhention

merci de votre aide par avance

philippe

76sommesiens.xlsm (44.33 Ko)

Bonjour,

Essaie comme cela

Sub Macro2()
Dim T As Double
Dim Critere1 As String
Dim Critere2 As Date
    With Worksheets("Feuil1")
        Critere1 = .Cells(59, 1).Value
        Critere2 = .Cells(59, 36).Value
        T = Application.WorksheetFunction.SumIfs(.Range("E59:E179"), _
        .Range("A59:A179"), Critere1, _
        .Range("AI59:AI179"), ">=" & Critere2)
        .Cells(59, 40).Value = T
    End With
End Sub

A+

bonjour Frangy

ok pour moi ça donne bien ce que je veux.

merci de ton aide

philippe

bonjour Frangy

je viens de vérifier , le code ne prend pas en compte le critére2 "<="

merci de ton aide

philippe

Efectivement, le critére2 "<=" pose problème et je n'ai pas trouvé la solution en utilisant la méthode WorksheetFunction.SumIfs.

Tu peux toujours utiliser la fonction Excel

Sub Macro2()
Dim T As Double
Dim Expression As String
    With Worksheets("Feuil1")
        Expression = "SUMIFS(E59:E179,A59:A179," & .Range("A59").Address(0, 0) & ",AI59:AI179,""<="" & AJ59)"
        T = Application.Evaluate(Expression)
        .Cells(59, 40).Value = T
    End With
End Sub

A+

Rechercher des sujets similaires à "somme ens vba"