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 ?
 

Fichiers joints

jpb388

XLDnaute Accro
Bonjour à tous
Tu verrouilles la cellule,puis , tu protèges la feuille en prenant soin de décoché la 1ère case
 

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
 

Lone-wolf

XLDnaute Barbatruc
Bonjour chris :)

comment ça pas raffraichi???:rolleyes:

EDIT: et pour Undo, ça met venu après coup mais comme tu as été plus rapide....
 
Dernière édition:

Haut Bas