Conditions pour déterminer zone à sommer

marie -  
 Utilisateur anonyme -
Bonjour,

J'ai une colonne avec de temps en temps des cellules bleues.
Pour chaque cellule bleue, je veux sommer les 14 cellules qui sont à droite de la cellule bleue sur chaque ligne, depuis celle qui contient la cellule bleue jusqu'à celle qui précède la cellule bleue suivante.
La première cellule bleue est en B18.
J'essaie de faire une boucle pour déterminer les plage de cellules à sommer, puis sommer dans la cellule située de l'autre côté de la plage à sélectionnée et sur la même ligne que la cellule bleue.
J'ai fait de mon mieux pr que ça soit clair mais ça n'est pas évident. However, au cas où, voila ce que j'ai fait:

Range("B18").Select
Dim c As Integer
c = ActiveCell.Row

Do
ActiveCell.Offset(1, 0).Select
Loop Until Selection.Interior.ColorIndex = 49
'soit: je descends sur la colonne B jusqu'à tomber sur une cellule bleue (j'ai vérifié, la référence du bleu est bien 49)

Dim l As Integer
l = ActiveCell.Row

Cells(c, 31).Select
'soit: je me place sur la cellule où je veux le résultat de la somme

Dim s As Integer
s = l - c + 1
ActiveCell.FormulaR1C1 = "=SUM(Cells(c, 2), Cells(s, 30))"
'soit: je détermine la plage de cellules à sommer

Le problème est que dans la cellule où je veux obtelir le résultat j'obtiens #NOM, et il semble qu'il n'arrive pas à définir la plage de données.

Est-ce qu'une bonne âme saurait où est la faille???

Merci!

Marie
A voir également:

2 réponses

Utilisateur anonyme
 
FormulaR1C1 n'accèpte que les coordonnées relatives par rapport à la cellule active.

Du type:
ActiveCell.FormulaR1C1 = "=SUM(R[-2]C[-2]:R[5]C[-2])"

Bonne cogitation
0
Utilisateur anonyme
 
Bonjour,

Exemple type (Testé sous Office 2003):

Option Explicit
'

Sub ChercheCellulesAadditionner()

    Dim AdresseDebut As String
    Dim AdresseFinal As String

    Range("B18").Select
    AdresseDebut = ActiveCell.Offset(0, 1).Address
    

    ' soit: je descends sur la colonne B jusqu'à tomber sur
    ' une cellule bleue (j'ai vérifié, la référence du bleu est bien 49)
    Do
        ActiveCell.Offset(1, 0).Select
    Loop Until Selection.Interior.ColorIndex = 49

    AdresseFinal = ActiveCell.Offset(-1, 1).Address

    ' Soit: je me place sur la cellule où je veux le résultat de la somme
    Cells(18, 31).Select
    

    ' Soit: je détermine la plage de cellules à sommer
    ActiveCell.Value = "=SUM(" & AdresseDebut & ":" & AdresseFinal & ")"


End Sub
'

Lupin
0