Conflit entre 2 code VBA

Bonjour à tous,

Voila, je vous expose mon problème.

Afin de pointer le passage d'une classe d'élève via des cartes à code barre, j'avais besoin d'un code VBA qui affiche automatiquement la date et l'heure du passage. En cherchant ici ou là, j'ai trouver ce code qui fonctionne bien. Mais pour sécuriser un peu tout cela, j'ai un autre code VBA qui me verrouille les cellules au fur et à mesure.

Voila ce que ça donne (code date, code verrouillage):

Private Sub Worksheet_Change(ByVal Target As Range)

End If

If Not Intersect([A2:A5000], Target) Is Nothing And Target.Count = 1 Then

End If

End Sub

Si je tente de faire fonctionner le code ainsi, il fonctionne mais il me verrouille la feuille après chaque saisie. Ce que je ne veut pas.

Donc, avant de saisir le code, je sélectionne la colonne A et via un clique droit/onglet protection, je déverrouille les cellules de la colonne.

Une fois cela fait, on arrive au problème (Enfin!!!)

je saisis une valeur dans la cellule A, ça fonctionne. Je saisie une valeur dans la cellule du dessou et je vois apparaître une erreur 1004 qui semble se situer au niveau de Target.Offset(0, 1) = Now.

N'y connaissant pas grand chose en VBA, je suis à la recherche d'une bonne âme qui saura me tirer de se mauvais pas.

Merci d'avance.

cdric

Bonjour,

Essaie comme cela

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Columns("a")) Is Nothing Then
    Application.EnableEvents = False
    ActiveSheet.Unprotect Password:=""
    With Target
        If .Count > 1 Then Exit Sub
        .Offset(0, 1) = Now
        .Interior.ColorIndex = 44
        .Locked = True
    End With
    ActiveSheet.Protect Password:=""
    Application.EnableEvents = True
End If
End Sub

A+

Bonjour

Pas trop d'accord avec frangy (si .Count >1 Exit Sub et les événements restent désactivés et la page déprotégée)

Mon idée

Tu enlèves le verrouillage des colonnes A et B (Format cellule --> Onglet protection --> décoches "Verrouillée")

Ensuite tu modifies ta macro

Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Application.Intersect(Target, Columns("a")) Is Nothing Then
    If Target.Count > 1 Then Exit Sub
    ActiveSheet.Unprotect Password:=""
    Target.Resize(1, 2).Locked = True
    Target.Offset(0, 1) = Now
    Target.Interior.ColorIndex = 44
    ActiveSheet.Protect Password:=""
  End If
End Sub

Re-bonjour,

Errare humanum est, perseverare diabolicum

Tout à fait d'accord avec Banzai, j'aurais dû écrire

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Columns("a")) Is Nothing Then
    Application.EnableEvents = False
    ActiveSheet.Unprotect Password:=""
    With Target
        If .Count = 1 Then
          .Offset(0, 1) = Now
          .Interior.ColorIndex = 44
          .Locked = True
       end if
    End With
    ActiveSheet.Protect Password:=""
    Application.EnableEvents = True
End If
End Sub

A prendre avec des pincettes car celui-là non plus je ne l'ai pas testé

A+

Merci a vous deux pour vos réponses. Je teste ça demain et je vous tiens au courant.

A+

Rechercher des sujets similaires à "conflit entre code vba"