Private Sub Worksheet_Change(ByVal Target As Range)
Dim colf, ub%, tablo, i&, j%
colf = Array(2, 4, 5, 7) 'colonnes des formules, à adapter
ub = UBound(colf)
With [Tableau1]
If Not Intersect(Target, .Cells) Is Nothing Then
Set Target = Intersect(Target.EntireRow, .Cells)
For Each Target In Target.Areas
tablo = Target.Formula 'matrice, plus rapide
For i = 1 To UBound(tablo)
For j = 0 To ub
If Left(tablo(i, colf(j)), 1) <> "=" Then
MsgBox "Ne pas effacer les formules !", vbCritical
Application.EnableEvents = False
Application.Undo 'annule les modifications
Application.EnableEvents = True
Exit Sub
End If
Next j, i, Target
End If
End With
End Sub