Bonjour à tous, je suis à la recherche d'un peu d'aide en vba, je sais que ce n'est pas du vb mais ca s'en approche, donc je pense que vous saurez m'aider.
Donc, je vais vous mettre le code que j'ai crée. Celui ci a deja fonctionner mais dorénavant il ne fonctionne plus.
Je vous explique ce que je veux faire.
Dans un forumulaire, j'ai un champ et un seul ou on peut ecrire, selon la longueur de ce que l'on ecrit, les données se reportent sur la coté.
On peut ecrire soit une suite de caracteres au nombre de 3, de 7 ou superieur à 13.
La ou ca se complique c'est que lorsque je tape une suite egal ou superieur à 13 caracteres, je voudrais qu'il enregistre mes données et qu'il passe à un nouvel enregistrement. Mon code me semble bon, hélas il me fait une errer sur le goto, acNewRec.
Pouvez vous m'aider s'il vous plait??

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
46
47
48
49
50
51
52
53
54
Private Sub champ_BeforeUpdate(Cancel As Integer)
Dim champ, resultat, mat, typeop, numchassis As String
Dim longueur As Integer
Dim db As DAO.Database
Dim rs, rs1, rs2 As Recordset
champ = Forms![essai].[champ]
longueur = Len(champ)
 
If longueur = 3 Then
    Forms![essai].[Matricule] = champ
    mat = Forms![essai].[Matricule]
    Set db = CurrentDb()
    Set rs = db.OpenRecordset("select operateurs.* from operateurs where ((operateurs.matricule)=" & mat & ");")
    Forms![essai].[champ].SelStart = 0
    Forms![essai].[champ].SelLength = Len(Forms![essai].[champ].Value)
    Cancel = True
 
        If rs.EOF = True Then
             MsgBox ("nom d'utilisateur inconnu, Veuillez resaisir un matricule valide ou contacter le service informatique")
        End If
 
Else
        If longueur = 7 Then
             Forms![essai].[code_type_op] = champ
             typeop = Forms![essai].[code_type_op]
             Set db = CurrentDb()
             Set rs1 = db.OpenRecordset("select typeoperation.* from typeoperation where ((typeoperation.codetypeop)=" & typeop & ");")
             Forms![essai].[champ].SelStart = 0
             Forms![essai].[champ].SelLength = Len(Forms![essai].[champ].Value)
             Cancel = True
 
                If rs1.EOF = True Then
                     MsgBox ("Type d'opération inconnu, Veuillez resaisir un code opération valide ou contacter le service informatique")
                End If
 
        Else
 
 
            If longueur > 13 Then
                 Forms![essai].[num_chassis] = champ
                 Forms![essai].[heure_debut] = FormatDateTime(Time, vbLongTime)
                 Forms![essai].[Date] = FormatDateTime(Now, vbShortDate)
            Else
                If longueur <> 3 Or longueur <> 7 Then
                MsgBox ("Le code barre saisi n'est pas un code barre valide")
                Forms![essai].[champ].SelStart = 0
                Forms![essai].[champ].SelLength = Len(Forms![essai].[champ].Value)
                Cancel = True
                End If
            End If
        End If
End If
 
End Sub

Je tiens à préciser que pour tester, j'ai crée un bouton "ajouter un nouvel enregistrement" et il marche correctement mais il me faudrait une action automatique sans besoin de clic des que je rentre une suite egale ou superieur à 13 caracteres

Edit
Utilise les balises Code /Code pour ton code. Tu le sélectionnes et tu fais un clic sur le bouton Code en haut de la fenêtre d'édition.
Et lis les règles du forum, elles t'aideront dans tes recherches
Balises gentiment ajoutées par le gentil ouskel'n'or