Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

beforeupdate

3 réponses
Avatar
Opium
bsoir,
desepérée, il est 3h30 du mat et jcompend plus rien à c que je fait
mon code de if..then sur un formulaire before update fonctionnait trés bien.
il mefaisait les avertissements au moment de la sortiede mon champ et donc
avant validation de l'enregistement
Or aintenant il ne me laisse même plus le tempsde finir la saisie, ce qui
evidemment fausse tout et ne me permet pas de saisir n enregistrement corret
Qu'ai je fait?
Private Sub Form_BeforeUpdate(Cancel As Integer)
On Error GoTo err_form_beforeupdate




If Len(Me.Gencod) < 20 Then


MsgBox ("vous devez rentrer 20 caractères, vous n'en avez tapé que " &
Len(Me.Gencod))
Me!Gencod.SetFocus
Cancel = True
Me.Undo


ElseIf DCount("gencod", "titre", "gencod =""" & Me!Gencod & """") > 0 Then

MsgBox "Titre déjà présent dans " + DLookup("liasse", "titre", "gencod =
""" & Me.Gencod & """")
Me.Undo
Forms!liasse!titre.SetFocus
Forms!liasse!titre.Gencod.SetFocus


'DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70


ElseIf Me!Gencod = 0 Then
MsgBox "valeur nulle interdite, cet enregistrement sera supprimé", vbCritical
Me!Gencod.SetFocus
Cancel = True
Me.Undo


ElseIf Year(Now) < Year(DateSerial((Right(Me!Gencod, 2) + 2000), 1, 1)) Then

MsgBox "la date du titre n'est pas encore valide," & vbCrLf & "voulez vous
l'effacer?" & vbCrLf & "titre valable en " & (Right(Me!Gencod, 2) + 2000),
vbYesNo

Select Case vb
Case vbYes
Me!Gencod.SetFocus
Cancel = True
Me.Undo
Case vbNo
DoCmd.GoToRecord , , acNewRec
End Select

ElseIf (Now) > (DateSerial((Right(Me!Gencod, 2) + 2001), 1, 31)) Then


MsgBox "la date du titre n'est plus valable, " & vbCrLf & "voulez vous
l'effacer?" & vbCrLf & "titre valable en " & (Right(Me!Gencod, 2) + 2000),
vbYesNo


Select Case vb
Case vbYes
Me!Gencod.SetFocus
Me.Undo
Case vbNo
DoCmd.Save

End Select




End If

Select Case Mid(Gencod, 17, 1)
Case 0
MsgBox "Ce type de titre n'est pas correct " & Mid(Gencod, 17, 1)
Me.Undo
Case Is > 4
MsgBox "Ce type de titre n'est pas correct " & Mid(Gencod, 17, 1)
Me.Undo
End Select
Exit Sub


err_form_beforeupdate:


MsgBox "cet enregistrement n'est pas valable"
DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70

Me!Gencod.SetFocus
Gencod.SelStart = 20




End Sub

3 réponses

Avatar
Goupil
Bonjour,

Si tu as un blocage avant de finir ta saisie, un autre traitement est
certainement responsable de ce problème...
Vérifie s'il n'y a pas une valeur > 0 dans la propriété "Intervalle
minuterie" par exemple.

Goup'

"Opium" a écrit dans le message de news:

bsoir,
desepérée, il est 3h30 du mat et jcompend plus rien à c que je fait
mon code de if..then sur un formulaire before update fonctionnait trés
bien.
il mefaisait les avertissements au moment de la sortiede mon champ et donc
avant validation de l'enregistement
Or aintenant il ne me laisse même plus le tempsde finir la saisie, ce qui
evidemment fausse tout et ne me permet pas de saisir n enregistrement
corret
Qu'ai je fait?
Private Sub Form_BeforeUpdate(Cancel As Integer)
On Error GoTo err_form_beforeupdate




If Len(Me.Gencod) < 20 Then


MsgBox ("vous devez rentrer 20 caractères, vous n'en avez tapé que " &
Len(Me.Gencod))
Me!Gencod.SetFocus
Cancel = True
Me.Undo


ElseIf DCount("gencod", "titre", "gencod =""" & Me!Gencod & """") > 0 Then

MsgBox "Titre déjà présent dans " + DLookup("liasse", "titre", "gencod
> """ & Me.Gencod & """")
Me.Undo
Forms!liasse!titre.SetFocus
Forms!liasse!titre.Gencod.SetFocus


'DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70


ElseIf Me!Gencod = 0 Then
MsgBox "valeur nulle interdite, cet enregistrement sera supprimé",
vbCritical
Me!Gencod.SetFocus
Cancel = True
Me.Undo


ElseIf Year(Now) < Year(DateSerial((Right(Me!Gencod, 2) + 2000), 1, 1))
Then

MsgBox "la date du titre n'est pas encore valide," & vbCrLf & "voulez vous
l'effacer?" & vbCrLf & "titre valable en " & (Right(Me!Gencod, 2) + 2000),
vbYesNo

Select Case vb
Case vbYes
Me!Gencod.SetFocus
Cancel = True
Me.Undo
Case vbNo
DoCmd.GoToRecord , , acNewRec
End Select

ElseIf (Now) > (DateSerial((Right(Me!Gencod, 2) + 2001), 1, 31)) Then


MsgBox "la date du titre n'est plus valable, " & vbCrLf & "voulez vous
l'effacer?" & vbCrLf & "titre valable en " & (Right(Me!Gencod, 2) + 2000),
vbYesNo


Select Case vb
Case vbYes
Me!Gencod.SetFocus
Me.Undo
Case vbNo
DoCmd.Save

End Select




End If

Select Case Mid(Gencod, 17, 1)
Case 0
MsgBox "Ce type de titre n'est pas correct " & Mid(Gencod, 17, 1)
Me.Undo
Case Is > 4
MsgBox "Ce type de titre n'est pas correct " & Mid(Gencod, 17, 1)
Me.Undo
End Select
Exit Sub


err_form_beforeupdate:


MsgBox "cet enregistrement n'est pas valable"
DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70

Me!Gencod.SetFocus
Gencod.SelStart = 20




End Sub



Avatar
Opium
c'était une bonne idée goup mais je n'ai rien trouver
j'ai préféré reprendre une version antérieure de mon projet
beaucoup de travail perdu mais tant pis
merci tout de même :-(
opium

"Goupil" a écrit :

Bonjour,

Si tu as un blocage avant de finir ta saisie, un autre traitement est
certainement responsable de ce problème...
Vérifie s'il n'y a pas une valeur > 0 dans la propriété "Intervalle
minuterie" par exemple.

Goup'

"Opium" a écrit dans le message de news:

> bsoir,
> desepérée, il est 3h30 du mat et jcompend plus rien à c que je fait
> mon code de if..then sur un formulaire before update fonctionnait trés
> bien.
> il mefaisait les avertissements au moment de la sortiede mon champ et donc
> avant validation de l'enregistement
> Or aintenant il ne me laisse même plus le tempsde finir la saisie, ce qui
> evidemment fausse tout et ne me permet pas de saisir n enregistrement
> corret
> Qu'ai je fait?
> Private Sub Form_BeforeUpdate(Cancel As Integer)
> On Error GoTo err_form_beforeupdate
>
>
>
>
> If Len(Me.Gencod) < 20 Then
>
>
> MsgBox ("vous devez rentrer 20 caractères, vous n'en avez tapé que " &
> Len(Me.Gencod))
> Me!Gencod.SetFocus
> Cancel = True
> Me.Undo
>
>
> ElseIf DCount("gencod", "titre", "gencod =""" & Me!Gencod & """") > 0 Then
>
> MsgBox "Titre déjà présent dans " + DLookup("liasse", "titre", "gencod
> > > """ & Me.Gencod & """")
> Me.Undo
> Forms!liasse!titre.SetFocus
> Forms!liasse!titre.Gencod.SetFocus
>
>
> 'DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70
>
>
> ElseIf Me!Gencod = 0 Then
> MsgBox "valeur nulle interdite, cet enregistrement sera supprimé",
> vbCritical
> Me!Gencod.SetFocus
> Cancel = True
> Me.Undo
>
>
> ElseIf Year(Now) < Year(DateSerial((Right(Me!Gencod, 2) + 2000), 1, 1))
> Then
>
> MsgBox "la date du titre n'est pas encore valide," & vbCrLf & "voulez vous
> l'effacer?" & vbCrLf & "titre valable en " & (Right(Me!Gencod, 2) + 2000),
> vbYesNo
>
> Select Case vb
> Case vbYes
> Me!Gencod.SetFocus
> Cancel = True
> Me.Undo
> Case vbNo
> DoCmd.GoToRecord , , acNewRec
> End Select
>
> ElseIf (Now) > (DateSerial((Right(Me!Gencod, 2) + 2001), 1, 31)) Then
>
>
> MsgBox "la date du titre n'est plus valable, " & vbCrLf & "voulez vous
> l'effacer?" & vbCrLf & "titre valable en " & (Right(Me!Gencod, 2) + 2000),
> vbYesNo
>
>
> Select Case vb
> Case vbYes
> Me!Gencod.SetFocus
> Me.Undo
> Case vbNo
> DoCmd.Save
>
> End Select
>
>
>
>
> End If
>
> Select Case Mid(Gencod, 17, 1)
> Case 0
> MsgBox "Ce type de titre n'est pas correct " & Mid(Gencod, 17, 1)
> Me.Undo
> Case Is > 4
> MsgBox "Ce type de titre n'est pas correct " & Mid(Gencod, 17, 1)
> Me.Undo
> End Select
> Exit Sub
>
>
> err_form_beforeupdate:
>
>
> MsgBox "cet enregistrement n'est pas valable"
> DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70
>
> Me!Gencod.SetFocus
> Gencod.SelStart = 20
>
>
>
>
> End Sub
>





Avatar
Blaise Cacramp
Selon : Bonjour ou bonsoir

Événement Change sur ta zone Gencod, fort probablement.
Et à 3h30 du matin, on dort : la nuit porte conseil.
Quitter le problème pour faire passer le cerveau à autre chose, le libérer
d'un "je tourne en rond". Bricoler, cuisiner, lire le journal, une ballade
en forêt est un des meilleurs moyens que je connaisse...


Cdt, Blaise
---- ---- ----


"Opium" a écrit dans le message de news:

bsoir,
desepérée, il est 3h30 du mat et jcompend plus rien à c que je fait
mon code de if..then sur un formulaire before update fonctionnait trés
bien.
il mefaisait les avertissements au moment de la sortiede mon champ et donc
avant validation de l'enregistement
Or aintenant il ne me laisse même plus le tempsde finir la saisie, ce qui
evidemment fausse tout et ne me permet pas de saisir n enregistrement
corret
Qu'ai je fait?
Private Sub Form_BeforeUpdate(Cancel As Integer)
On Error GoTo err_form_beforeupdate




If Len(Me.Gencod) < 20 Then


MsgBox ("vous devez rentrer 20 caractères, vous n'en avez tapé que " &
Len(Me.Gencod))
Me!Gencod.SetFocus
Cancel = True
Me.Undo


ElseIf DCount("gencod", "titre", "gencod =""" & Me!Gencod & """") > 0 Then

MsgBox "Titre déjà présent dans " + DLookup("liasse", "titre", "gencod
> """ & Me.Gencod & """")
Me.Undo
Forms!liasse!titre.SetFocus
Forms!liasse!titre.Gencod.SetFocus


'DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70


ElseIf Me!Gencod = 0 Then
MsgBox "valeur nulle interdite, cet enregistrement sera supprimé",
vbCritical
Me!Gencod.SetFocus
Cancel = True
Me.Undo


ElseIf Year(Now) < Year(DateSerial((Right(Me!Gencod, 2) + 2000), 1, 1))
Then

MsgBox "la date du titre n'est pas encore valide," & vbCrLf & "voulez vous
l'effacer?" & vbCrLf & "titre valable en " & (Right(Me!Gencod, 2) + 2000),
vbYesNo

Select Case vb
Case vbYes
Me!Gencod.SetFocus
Cancel = True
Me.Undo
Case vbNo
DoCmd.GoToRecord , , acNewRec
End Select

ElseIf (Now) > (DateSerial((Right(Me!Gencod, 2) + 2001), 1, 31)) Then


MsgBox "la date du titre n'est plus valable, " & vbCrLf & "voulez vous
l'effacer?" & vbCrLf & "titre valable en " & (Right(Me!Gencod, 2) + 2000),
vbYesNo


Select Case vb
Case vbYes
Me!Gencod.SetFocus
Me.Undo
Case vbNo
DoCmd.Save

End Select




End If

Select Case Mid(Gencod, 17, 1)
Case 0
MsgBox "Ce type de titre n'est pas correct " & Mid(Gencod, 17, 1)
Me.Undo
Case Is > 4
MsgBox "Ce type de titre n'est pas correct " & Mid(Gencod, 17, 1)
Me.Undo
End Select
Exit Sub


err_form_beforeupdate:


MsgBox "cet enregistrement n'est pas valable"
DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70

Me!Gencod.SetFocus
Gencod.SelStart = 20




End Sub