XL 2016 VBA ne pas modifier formule si texte tapé

chifounou

XLDnaute Occasionnel
Bonsoir,

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("F5")) Is Nothing Then
        If Not IsEmpty(Target) Then
            If IsNumeric(Target) Then
                Range("H5") = Range("F5").Formula
            Else
                Target = Range("H5").Formula
            End If
        End If
    End If
End Sub

si je tape malencontreusement du texte dans une case (F5) qui contient une formule, j'aimerais que la modification soit ignorée

pour ce faire, j'ai utilisé un subterfuge en sauvegardant la formule de la cellule visée (en case H5) pour la recopier à la suite d'un simple test manqué

y'a-t'il une meilleure manière de faire ?
 

Pièces jointes

  • Book1.xlsm
    68.9 KB · Affichages: 36

Lone-wolf

XLDnaute Barbatruc
Bonjour chifonou :), jpb :), le Forum :)

Un essai comme ceci peut.être?! :rolleyes:

VB:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Temp As Variant, CelFormule As Range

    Application.EnableEvents = False
    [F5].FormulaLocal = "=2*3"

    Set CelFormule = [F5]
    Temp = CelFormule.Formula

    If Not Intersect(Target, CelFormule) Is Nothing Then
        CelFormule.Value = Temp
        Target.Offset(5, 0).Select
        Set CelFormule = Nothing
    End If
    Application.EnableEvents = True
End Sub
 

chris

XLDnaute Barbatruc
Bonjour à tous

Sinon tu annules tout changement de F5
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("F5")) Is Nothing Then
        Application.EnableEvents = False
        Application.Undo
        Application.EnableEvents = True
    End If
End Sub

Edit : coucou lone wolf, pas raffraichi