XL 2010 Private Sub worksheet_change ne marche pas

citizenbaban

XLDnaute Junior
Bonjour à tous,

Petit problème avec une Private Sub. Je voudrais que s'insère automatiquement en colonne A l'année de saisie d'une cellule de la colonne B afin de réaliser un tri des lignes en différents onglets.
C'est la partie verte du code qui marche bien.

Mais quand je fais une modif sur une cellule de la colonne B déjà remplie, disons en 2017, ou même un simple double clic ce qui peut arriver accidentellement, la cellule A correspondante se met à jour en affichant 2019.
J'ai essayé de contourner ça mais sans succès (partie orange) et je n'arrive pas à reformuler mon code autrement.

Est-ce que l'un de vous aurait une piste pour ça ?
Le problème est qu'une fois à l'exit sub, la macro ne se relance pas si je modifie d'autres cellules de la colonne B.

Merci pour votre aide

Citizen


Code:
Private Sub worksheet_change(ByVal Target As Range)


    Dim h, iSct As Range
    Set iSct = Intersect(Target, Range("B2:B50000"))
   
    If iSct Is Nothing Then Exit Sub
    Application.EnableEvents = False
    For Each h In iSct.Cells
   
    If IsEmpty(h) Then
    h.Offset(0, -1) = ""
    ElseIf h.Offset(0, -1) <> "" Then
    Exit sub
    Else
    h.Offset(0, -1) = Format(Now, "yyyy")
    End If
    Next
    Application.EnableEvents = True
   
End Sub
 

vgendron

XLDnaute Barbatruc
Bonjour
quand tu fais un exit sub, tu ne repasses pas par la réactivation des évènements...
il faut donc modifier ton code
VB:
Private Sub worksheet_change(ByVal Target As Range)
Dim h, iSct As Range
Set iSct = Intersect(Target, Range("B2:B50000"))
  
If iSct Is Nothing Then  Exit Sub
Application.EnableEvents = False
For Each h In iSct.Cells
       If IsEmpty(h) Then
           h.Offset(0, -1) = ""
       ElseIf h.Offset(0, -1) <> "" Then
           Application.EnableEvents = true
           Exit sub
      Else
           h.Offset(0, -1) = Format(Now, "yyyy")
      End If
 Next
 Application.EnableEvents = True
End Sub
 

citizenbaban

XLDnaute Junior
Merci Vgendron, ça marche au top.
Je viens de m'apercevoir que mon code couleur n'avait pas marché dans le message au dessus.
Je me suis tellement focalisé sur le code en lui même que je n'ai pas du tout pensé à l'activation des événements....j'aurai pu chercher un moment.

Encore merci.

Citizen
 

Discussions similaires

Statistiques des forums

Discussions
312 176
Messages
2 085 961
Membres
103 066
dernier inscrit
bobfils