Sub ModifierFormule()
If Not ActiveCell.HasFormula Then _
MsgBox "La cellule active doit contenir une formule...": Exit Sub
Dim FL$, F1$, f$, F2$, tablo As Range, decal&, plage As Range, cel As Range
FL = ActiveCell.FormulaLocal
F1 = ActiveCell.FormulaR1C1
1 f = InputBox("Formule à modifier :", "Formule", FL)
If f = "" Then Exit Sub
On Error Resume Next
ActiveCell = f 'teste la formule
If Err Then GoTo 1
On Error GoTo 0
F2 = ActiveCell.FormulaR1C1
ActiveCell = FL
Application.ScreenUpdating = False
'---la zone de travail s'appuie sur la colonne A---
Set tablo = Cells(ActiveCell.Row, 1).CurrentRegion.EntireRow
'---copie du tableau vers le bas (facultatif)---
decal = [A65536].End(xlUp).Row + 2 - tablo.Row
tablo.Copy tablo.Offset(decal)
ActiveCell.Offset(decal).Select
Set tablo = tablo.Offset(decal)
'---détermination des cellules à modifier---
Set plage = ActiveCell
For Each cel In Intersect(tablo, ActiveCell.EntireColumn).SpecialCells(xlCellTypeFormulas)
If cel.FormulaR1C1 = F1 Then Set plage = Union(plage, cel)
Next
'---modification des formules de la plage---
plage.FormulaR1C1 = F2
'---cadrage du nouveau tableau---
Set cel = ActiveCell
Application.Goto tablo, True
cel.Select
End Sub