[excel] pb Visual Basic : sum sur colonne variable [Résolu]

Signaler
Messages postés
4
Date d'inscription
lundi 27 septembre 2010
Statut
Membre
Dernière intervention
28 avril 2011
-
Messages postés
4
Date d'inscription
lundi 27 septembre 2010
Statut
Membre
Dernière intervention
28 avril 2011
-
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

Messages postés
420
Date d'inscription
vendredi 17 novembre 2006
Statut
Membre
Dernière intervention
15 juillet 2014
5
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)"
Messages postés
4
Date d'inscription
lundi 27 septembre 2010
Statut
Membre
Dernière intervention
28 avril 2011

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...
Messages postés
4
Date d'inscription
lundi 27 septembre 2010
Statut
Membre
Dernière intervention
28 avril 2011

Faut juste diviser c par 2 dans mon cas.
En effet, les valeurs de mes cases à tester sont 1 ou 2.

sinon ça marche..;°)