Bonjour,

J'ai un petit problème qui ne devrait pas être bien difficile à solutionner pour un connaisseur.

Sur l'évènement Avant Mise à jour de mon formulaire, j'exécute, en VBA, un code qui me permet de vérifier si les données qu'on veut ajouter son déjà présente dans la table afin de ne pas avoir de doublons.

Cela fonctionne pas mal, si c'est pas présent, ça ajoute les données. Si c'est présent ça affiche un message mais il insère malgré tout les données. Après l'affichage du message, il faudrait stopper l'insertion et ne pas la faire.

J'ai essayé plusieurs choses mais cela ne fonctionne pas.

Voici le code : (certaines MsgBox disparaitront un fois que tout est au point)

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
Dim sql As String
    Dim rs As DAO.Recordset
    Dim resultat As Long
    'MsgBox (Me.NomFamille.Value)
    sql = "SELECT Auteurs.RéfAuteur " & _
    "FROM Auteurs " & _
    "WHERE Auteurs.NomFamille = '" & Me.NomFamille.Value & "' " & _
    "AND Auteurs.Prénom = '" & Me.Prénom.Value & "' ;"
 
    ' Visualisation de l'ordre SQL
    ' MsgBox (sql)
 
    Set rs = CurrentDb.OpenRecordset(sql)
 
     ' On vérifie si on a déja la valeur dans la table.  Si c'est 0, on ne l'a pas aussi nom elle est déja présente
 
     If rs.EOF Then
        resultat = 0
    Else
        rs.MoveLast
        resultat = rs.RecordCount
    End If
 
    ' On met le nombre d'enregistrement déja identique dans la variable résultat
 
 
     resultat = rs.RecordCount
 
     MsgBox ("Résultat : " & resultat)
 
     ' Si le résultat est 0, l'auteur n'existe pas donc on l'insère sinon on arrête le traitement.
 
 
    If resultat = 0 Then
        ' On insère les données (on laisse faire access car il le fait par défaut
        MsgBox ("L'auteur n'existe pas -----> Insertion")
    Else
        'message
        MsgBox ("L'auteur " & Prénom.Value & " " & NomFamille.Value & " existe déja.")
'*******************  Il faudrait bloquer l'ajout ici
 
 
        ' DoCmd.RunCommand acCmdUndo
 
    End If
Merci