Re,
Salut gmb, je ne t'avais pas vu arriver...
Reprenons calmement dans l'ordre
Formule améliorée afin d'éviter les sabotages, style 0 ou 31 en [A1]
=SI(ET(A1>0;A1<31);SOMME(A3:DECALER(A3;0;A1-1));"")
Comme tu as l'air de redouter VBA, voici un code qui fait... exactement la même chose... mais, pour une fois, vu le contexte, je conseillerais plutôt une formule.
Private Sub Worksheet_Change(ByVal Target As Range)
'
Dim sCol$
'
If Not Intersect(Target, [A1]) Is Nothing Then _
If Target <> "" And IsNumeric(Target) Then _
[D1] = "": _
If CInt(Target) > 0 And CInt(Target) < 31 Then _
sCol = Split(Columns(CInt(Target)).Address(ColumnAbsolute:=False), ":")(1): _
[D1] = WorksheetFunction.Sum(Range("A3:" & sCol & 3))
'
End Sub
A+