1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
|
Sub Somme()
Dim Plage As Range
Dim CelDepart As Range
Dim Cel As Range
Dim CelTotal As Range
Dim Total As Double
With Worksheets("PB")
'de A5 à A?
Set Plage = .Range(.Cells(5, 1), .Cells(.Rows.Count, 1).End(xlUp))
End With
'première cellule de la plage pour l'inscription du zéro (point de départ, sera redéfinie plus bas)
Set CelDepart = Plage.Cells(1, 1)
For Each Cel In Plage
'si numérique ou non vide, totalise
If IsNumeric(Cel.Value) And Cel.Value <> "" Then Total = Total + Cel.Value
'si le total est différent de 0, effectue la recherche de la somme dans la colonne B
If Total <> 0 Then Set CelTotal = Plage.Offset(, 1).Find(Total, , xlValues, xlWhole)
'si trouvé, mets à 0...
If Not CelTotal Is Nothing Then
CelTotal.Value = 0
Total = 0
Range(CelDepart, Cel).Value = 0
Set CelTotal = Nothing
End If
'si on rencontre une cellule vide, on redémarre pour une autre plage
If Cel.Value = "" Then
Total = 0
Set CelDepart = Cel.Offset(1, 0)
End If
Next Cel
End Sub |