[excel] pb Visual Basic : sum sur colonne variable

Résolu
mathlepotier Messages postés 4 Date d'inscription lundi 27 septembre 2010 Statut Membre Dernière intervention 28 avril 2011 - 27 sept. 2010 à 11:49
mathlepotier Messages postés 4 Date d'inscription lundi 27 septembre 2010 Statut Membre Dernière intervention 28 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.


Est ce que quelqu'un pourrais m'aider.

Par avance Merci !

3 réponses

foliv57 Messages postés 420 Date d'inscription vendredi 17 novembre 2006 Statut Membre Dernière intervention 15 juillet 2014 9
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)"
3
mathlepotier Messages postés 4 Date d'inscription lundi 27 septembre 2010 Statut Membre Dernière intervention 28 avril 2011
27 sept. 2010 à 16:19
Merci pour cette réponse rapide ...

en lisant votre programme j'ai trouvé une autre possibilité que je vais tester demain à savoir :

 
c = 0
for b = 0 to x
    c = cells(i+b,1)+cells(i+b+1,1) + c
next


reste plus qu'à tester la valeur de c pour que mon programme continue. (et ce qu'elle que soit x)

Merci pour (plus que) l'inspiration
Merci parce que je bloquais...
0
mathlepotier Messages postés 4 Date d'inscription lundi 27 septembre 2010 Statut Membre Dernière intervention 28 avril 2011
28 sept. 2010 à 09:43
Faut juste diviser c par 2 dans mon cas.
En effet, les valeurs de mes cases à tester sont 1 ou 2.

sinon ça marche..;°)
0
Rejoignez-nous