Bonjour le Forum
Dans une macro, j'utilise l'évènement "Private Sub Worksheet_Change" pour mettre en forme les données entrées par l'utilisateur sur la ligne courante.
L'utilisateur doit obligatoirement entrer une date dans la colonne B de la ligne active. Si ce n'est pas une date on sort de la boucle (Exit Sub)
Donc si après avoir entré la date, l'utilisateur appuie sur la touche de tabulation, la macro est OK car LignActiv est toujours correct. Par contre si l'utilsateur a appuyé sur <Enter>, il s'est décalé d'une ligne vers le bas et alors le message d'erreur apparait car la cellule B(LignActiv+1) est en général vide.
Je ne veux pas interdire le décalage vers le bas dans l'usage normal de la touche <Enter> donc il faut absolument que j'agisse dans le code mais je cale 🙁
Merci pour votre aide
Voici un extrait du code employé
Private Sub Worksheet_Change(ByVal Target As Range)
Dim LignActiv As Integer
....
LignActiv = ActiveCell.Row
'Gestion de la colonne 2
If Target.Column = 2 Then
If Not (IsDate(Cells(LignActiv, 2))) Then
MsgBox "Mettre une date valide", vbOKOnly
Exit Sub
Else
...
End If
End If
...
End Sub
Dans une macro, j'utilise l'évènement "Private Sub Worksheet_Change" pour mettre en forme les données entrées par l'utilisateur sur la ligne courante.
L'utilisateur doit obligatoirement entrer une date dans la colonne B de la ligne active. Si ce n'est pas une date on sort de la boucle (Exit Sub)
Donc si après avoir entré la date, l'utilisateur appuie sur la touche de tabulation, la macro est OK car LignActiv est toujours correct. Par contre si l'utilsateur a appuyé sur <Enter>, il s'est décalé d'une ligne vers le bas et alors le message d'erreur apparait car la cellule B(LignActiv+1) est en général vide.
Je ne veux pas interdire le décalage vers le bas dans l'usage normal de la touche <Enter> donc il faut absolument que j'agisse dans le code mais je cale 🙁
Merci pour votre aide
Voici un extrait du code employé
Private Sub Worksheet_Change(ByVal Target As Range)
Dim LignActiv As Integer
....
LignActiv = ActiveCell.Row
'Gestion de la colonne 2
If Target.Column = 2 Then
If Not (IsDate(Cells(LignActiv, 2))) Then
MsgBox "Mettre une date valide", vbOKOnly
Exit Sub
Else
...
End If
End If
...
End Sub