Re : Interdire la saise de certaines données
Après quelques recherches complémentaires, je suis arrivé à ce résultat :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
x = Format(Target, "hh:mm")
If Not Application.Intersect(Target, [d46:d48]) Is Nothing Then
If Not (x >= "00:00" And x <= "12:00") Then MsgBox "Saisie incorrecte, l'heure saisie est comprise dans une plage interdite. Dans la partie gauche de la case, les heures de 00:00 à 12:00 et dans la partie droite, les heures entre 12:01 et 24:00 ", vbRetryCancel
Target.Select
End If
If Not Application.Intersect(Target, [e46:e48]) Is Nothing Then
If Not (x > "12:00" And x <= "24:00" Or x <= "00:00") Then MsgBox "Saisie incorrecte, l'heure saisie est comprise dans une plage interdite. Dans la partie gauche de la case, les heures de 00:00 à 12:00 et dans la partie droite, les heures entre 12:01 et 24:00 ", vbRetryCancel
Target.Select
End If
End Sub
Me reste deux problèmes :
1- Dans la colonne de gauche D46 D48, l"appui sur la touche SUPP envoi le message erreur de saisie mais pas dans la colonne de droite. Je ne vois pas pourquoi.
2- Je souhaiterais que le message d'erreur (MSGBOX comprenant actuellement les bouton "Reessayer" et "Annuler") soit bloquant, c'est à dire que l'utilisateur ne puisse sortir du message que par une action sur le bouton "annuler" qui effacerait la saisie effectuée. (Pour le moment, il suffit d'appuyer sur un des 2 boutons et de placer le curseur ailleur, la saisie erronée reste inscrite).
J'espère que je n'en demande pas trop
Les aides que vous m'apportez me sont précieuses et de plus me permettent d'avancer dans ma connaissance du VBA. Je parviens seul à trouver quelques méthodes mais parfois, j'avoue, comme c'est le cas dans ce post, que je butte carrément sur mon ignorence du language.