Soustraction par VBA

Bonjour

J'ai voulu faire un bout de code pour soustraire deux cellules, mais rien ne se passe.

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column = 2 Or Target.Column = 3 Then
    Application.EnableEvents = False
Range("B3") = Range("C2") - Range("B2")
End If
    Application.EnableEvents = True

End Sub

Je ne vois pas le problème

Hello,

Private Sub Worksheet_Change(ByVal Target As Range)

&

Application.EnableEvents = False

est contradictoire, tu veux faire une action change, puis tu annules les évènements

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column = 2 Or Target.Column = 3 Then

Range("B3") = Range("C2") - Range("B2")
End If

End Sub

bonjour,

pour moi pas de problème avec cette procédure. Vérifie que la gestion des événements est bien active et qu'il y a bien des valeurs en B2 et C2.

tu peux reactiver la gestion des événements avec cette petite procédure

sub eventon()
application.enableevents=true
end sub

@Rag02700,

le application.enableevents=false est nécessaire pour éviter une boucle sans fin. le calcul modifie B3 qui provoque un changement qui lance la procédure, qui fait le calcul de B3, etc ...

Bonjour …

Quand l’évènementielle rentre dans une boucle infernale ?

Quand l’une des cellules les visées n’est pas exclue du Range !

Avec

Private Sub Worksheet_Change(ByVal R As Range)
  If R.Column = 2 Or R.Column = 3 Then [D2] = [C2] - [B2]
End Sub

L’évènement n’est relancé que pour le changement de la colonne B (2) ou de la colonne C(3) et non pour la colonne D(3)

Sinon le blocage puis le déblocage sont indispensables, obligatoires !

Private Sub Worksheet_Change(ByVal R As Range)
  If R.Column = 2 Or R.Column = 3 Then
    Application.EnableEvents = 0                'blocage
    [B3] = [C2] - [B2] ‘colonne 2 (B3) impactée
    Application.EnableEvents = 9                'déblocage
   End If
End sub

cogitation : pourquoi 9 et pas 1 ? Qui n'est pas "Faux" (False=0) n'est pas forcément "Vrai" (True =1) ...

Hello,

@h2so4 oui maintenant que tu le dis ça me parait logique

mais je n'y ai pas pensé sur le coup, merci

Merci pour votre aide

Rechercher des sujets similaires à "soustraction vba"