Formule SOMME.SI sur VBA

Bonsoir, j'ai essayé d'écrire une formule Somme.Si sur VBA (ou plutôt SumIf) mais elle ne marche pas. Elle est incluse dans une macro et la moitié seulement s'éxécute. Le but de cette macro est d'abord de faire la somme d'une plage de cellules("MontantCharges") dans la feuille ("Charges"). Ensuite, on copie cette valeur dans un tableau, feuille ("Résultat"). On copie de la même façon la cellule qui donne le mois auquel les charges correspondent. Enfin, et c'est là que ça se gâte, on doit additionner une plage de cellule (sur "Résultat") qui correspond aux marges réalisées sur le même mois, "MCV" (le mois est donc le critère). Bref, je sais pas ci c'est très clair, c'est assez compliqué.

Voilà mon code, pouvez-vous me dire si vous décelez des erreurs?

Private Sub CommandButton1_Click()

Dim Ctr As Integer

Dim MonNoDeLigne As Integer

' La colonne B est la colonne où l'on doit effectuer une somme

' Se placer sur la première ligne vide de la colonne pour poser la formule Somme

Sheets("Charges").Select

Range("MontantCharges").End(xlDown).Activate

' Récupération du nombre de lignes à comptabiliser dans la formule

MonNoDeLigne = -(ActiveCell.Row) + 1

ActiveCell.FormulaR1C1 = "=SUM(R[" & MonNoDeLigne & "]C:R[-1]C)"

'jusqu'ici tout va bien, ensuite ça se complique :

Sheets("Charges").Select

Range("MontantCharges").End(xlDown).Select

Application.CutCopyMode = False

Selection.Copy

Sheets("Résultat").Select

Range("ChargesIndirectes").End(xlDown).Offset(1, 0).Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

Sheets("Charges").Activate

Range("C13").Select

Application.CutCopyMode = False

Selection.Copy

Sheets("Résultat").Select

Range("MoisDuRst").End(xlDown).Offset(1, 0).Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

Dim i As String

Dim j As Integer

i = Range("MoisCharge").End(xlDown).Value

j = "= SumIf((Range(Mois).Value);" = " i; (Range(MCV).Value))"

Range("Rst").End(xlDown).Value = j

End Sub

Bonsoir,

pas facile sans filets, euh, sans fichier....

essaie néanmoins ce code.....

Private Sub CommandButton2_Click()
Dim Ctr As Integer
Dim MonNoDeLigne As Integer
Dim i As String
Dim j As Integer

With Sheets("Charges")
    MonNoDeLigne = -(.Range("MontantCharges").End(xlDown).Row) + 1
    .Range("MontantCharges").End(xlDown).FormulaR1C1 = "=SUM(R[" & MonNoDeLigne & "]C:R[-1]C)"
    .Range("MontantCharges").End(xlDown).Copy
    Range("ChargesIndirectes").End(xlDown).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
    .Range("C13").Copy
    Range("MoisDuRst").End(xlDown).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
    i = Range("MoisCharge").End(xlDown).Value
    j = [SUMIF(Mois,i,MCV)]
    Range("Rst").End(xlDown).Value = j
End With

End Sub
Rechercher des sujets similaires à "formule somme vba"