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