mathlepotier
Messages postés4Date d'inscriptionlundi 27 septembre 2010StatutMembreDernière intervention28 avril 2011
-
27 sept. 2010 à 11:49
mathlepotier
Messages postés4Date d'inscriptionlundi 27 septembre 2010StatutMembreDernière intervention28 avril 2011
-
28 sept. 2010 à 09:43
Bonjour,
J'ai un léger soucis que je vais essayer de vous expliquer .
dans ma macro je souhaiterais tester la condition suivante :
si la somme des cellules (i,1) à (i+b,1) = c alors je lance une macro.
le problème est la synthaxe de cette condition, j'ai essayer " applicationworksheetfunction.Sum ( cells(i,1) : cells( i+b)) mais ça marche pas. Je suis donc passé avec Range mais je ne connais pas la synthaxe pour que Range puisse prendre une serie de données variables du style range("cells(i,1) : cells(i+b,1)") ou (comme trouvé sur internet) range(cells(i,1)&":"& cells(i+b,1)) mais ça marche toujours pas.
foliv57
Messages postés420Date d'inscriptionvendredi 17 novembre 2006StatutMembreDernière intervention15 juillet 20149 27 sept. 2010 à 15:41
Dim ligne as long
Dim Somme as Double: Somme = 0
For ligne = i to i + b
Somme = Somme + Cells(ligne, 1).Value
Next
If Somme > c Then
AutreMacro
End If
Qui, utilisé de cette manière (Code à placer dans un module) :
Public Function SommePerso(Plage As Range, ValeurDeclanche As Double)
Dim Somme As Double: Somme = 0
Dim Cellule As Range
For Each Cellule In Plage.Cells
Somme = Somme + Cellule.Value
Next
If Somme > ValeurDeclanche Then
Toto
End If
SommePerso = Somme
End Function
Public Sub Toto()
MsgBox "Toto"
End Sub
vous permet d'utiliser la fonction SommePerso exactement de la même manière que la fonction Somme d'Excel dans une cellule de votre tableur.
Exemple, dans la cellule A1 on pourra mettre la formule :
"=SommePerso(A2:A30, 20)"