J'ai un problème avec la sommation des cellules dans vba. J'ai besoin d'utiliser les cellules (a, b):
Range("A1").function="=SUM(Range(Cells(2,1),Cells(3,2)))"
mais ça ne marche pas.
La fonction n'est pas une propriété/méthode de la plage.
Si vous voulez additionner des valeurs, utilisez ce qui suit:
Range("A1").Value = Application.Sum(Range(Cells(2, 1), Cells(3, 2)))
EDIT:
si vous voulez la formule, utilisez comme suit:
Range("A1").Formula = "=SUM(" & Range(Cells(2, 1), Cells(3, 2)).Address(False, False) & ")"
'The two false after Adress is to define the address as relative (A2:B3).
'If you omit the parenthesis clause or write True instead, you can set the address
'as absolute ($A$2:$B$3).
Dans le cas où vous utiliseriez toujours la même adresse, vous pouvez utiliser ce que Rory a proposé:
Range("A1").Formula ="=Sum(A2:B3)"
Application.Sum ne fonctionne souvent pas bien dans mon expérience (ou du moins l'environnement de développement VBA ne l'aime pas pour une raison quelconque).
La fonction qui me convient le mieux est Excel.WorksheetFunction.Sum()
Exemple:
Dim Report As Worksheet 'Set up your new worksheet variable.
Set Report = Excel.ActiveSheet 'Assign the active sheet to the variable.
Report.Cells(11, 1).Value = Excel.WorksheetFunction.Sum(Report.Range("A1:A10")) 'Add the function result.
L’autre méthode que vous cherchiez, selon moi, consiste à placer la fonction directement dans la cellule. Cela peut être fait en entrant la chaîne de fonction dans la valeur de la cellule. Voici un exemple qui fournit le même résultat que ci-dessus, excepté que la fonction de cellule reçoit la fonction et non le résultat de la fonction:
Dim Report As Worksheet 'Set up your new worksheet variable.
Set Report = Excel.ActiveSheet 'Assign the active sheet to the variable.
Report.Cells(11, 1).Value = "=Sum(A1:A10)" 'Add the function.
Range("A1").Function="=SUM(Range(Cells(2,1),Cells(3,2)))"
ne fonctionnera pas car les fonctions de la feuille de calcul (lorsqu'elles sont réellement utilisées dans une feuille de calcul) ne comprennent pas Range
ou Cell
Essayer
Range("A1").Formula="=SUM(" & Range(Cells(2,1),Cells(3,2)).Address(False,False) & ")"
Range("A10") = WorksheetFunction.Sum(Worksheets("Sheet1").Range("A1", "A9"))
Où
Range("A10")
est la cellule de réponse
Range("A1", "A9")
est la plage à calculer