MACRO Private sub qui ne fonctionne plus

Fermé
mima1803 - 3 mars 2021 à 17:43
 Mima1803 - 3 mars 2021 à 19:00
Bonjour,

Je souhaiterai mettre en colonne B la date de modification des cellules de la colonne A.

J'ai utilisé private sub change. Tout fonctionnait bien jusqu'à ce que je verrouille ma feuille.

Un code erreur est apparu, j'ai donc ajouté unprotect et protect à la fin. Je n'ai plus de message d'erreur mais la macro ne fonctionne plus et parfois elle fonctionne mais que sur 1 seule modification (par exemple modification de A4, la date est bien mise en B4 par contre rien pour les autres modifications).

Je ne vois pas d'où vient l'erreur, je débute.

Merci pour votre aide.

Voici le code utilisé :

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column = Range("A:A").Column Then
Application.ScreenUpdating = True
For Each c In Intersect(Target, Range("A:A"))
Unprotect ("mdp")
c.Offset(, 1) = Format(Date, "dd/mm/yy")
Next
Application.EnableEvents = False
Protect ("mdp")
End If
End Sub

1 réponse

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
Modifié le 3 mars 2021 à 18:15
Bonjour,

1 - Il ne faut pas désactiver les évènements en fin de procédure mais avant la boucle et surtout les réactiver après la boucle .
2 - Il suffit de déprotéger une seule fois avant la boucle.

Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Column = 1 Then
    Application.ScreenUpdating = True
    Me.Unprotect ("mdp")
    Application.EnableEvents = False
    For Each c In Intersect(Target, Range("A:A"))
      c.Offset(, 1) = Format(Date, "dd/mm/yy")
    Next
    Application.EnableEvents = True
    Me.Protect ("mdp")
  End If
End Sub


1
Merci beaucoup ! Tout fonctionne ! J'ai même ajouté une autre condition.

Merci encore pour la réponse et la rapidité.
:D
0