Bonjour,

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
Private Sub idemp_BeforeUpdate(Cancel As Integer)
Dim Nbr As Long, Titre As String, Message As String, Réponse
Nbr = DCount("idemp", "f_emprunteur", "idemp=" & Me.idemp)
If Nbr >= 1 Then
    Titre = "Le code emprunteur " & Me.idemp & " est déjà dans la base"
    Message = "Cliquez sur Oui pour modifier votre erreur de saisie " & _
        vbCrLf & vbCrLf & _
        "Cliquez sur Non afin d'être redirigé(e) vers la fiche correspondante à l'emprunteur saisie "
    Réponse = MsgBox(Message, vbYesNo, Titre)
    If Réponse = vbYes Then
        Cancel = True
    Else
        Debug.Print "-" & Me.idemp.Value & "-"
        DoCmd.OpenForm "modif_dr_assos_err_idemp", , , "[idemp]=" & Me![idemp]
         DoCmd.close acForm, Me.Name
    End If
Else: Me.libemp.Enabled = True
' le code emprunteur est nouveau
End If
Dim Nb As Long
Dim lg As Long
Nb = Me.idemp
If Nb <> 0 Then
lg = Fix(log(Nb + 0.11) / log(10)) + 1
    If lg > 6 Or lg < 4 Then
        MsgBox "La valeur saisie pour le numéros de tiers de l'emprunteur n'est pas valide" & Chr(10) & "Veuillez saisir une valeur d'un format de 4 à 6 chiffres"
        Cancel = True
    End If
End If
End Sub
J'utilise ce code qui contrôle la saisie de la clé primaire dans un controle d'un formulaire de saisie (pas de doublons, ou pas valeur longeur entre 4 et 6 caracteres). Le code marche bien, la valeur par default est 0, le seul probleme de ce code est lorsque l'utilisateur efface le 0 et passe au contrôle suivant, j'ai des messages d'erreurs liée à DCount ou Nb = me.idemp)
Je voudrez savoir comment sortir de la procedure si la valeur de idemp est Null. J'ai essayé avec
[CODE]
if me.idemp.value = Null then exit sub (ou cancel = true)[
/CODE]
Mais ce code n'est pas pris en compte...
J'ai essayé aussi avec "valide si" est different de Null dans les propriétés du contrôle, ca marche pas non plus...

Merci d'avance de votre aide !