Aide enregistrement en vba

cs_amaury Messages postés 4 Date d'inscription mardi 4 mars 2003 Statut Membre Dernière intervention 2 mars 2006 - 2 mars 2006 à 09:15
cs_amaury Messages postés 4 Date d'inscription mardi 4 mars 2003 Statut Membre Dernière intervention 2 mars 2006 - 2 mars 2006 à 09:18
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??

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

1 réponse

cs_amaury Messages postés 4 Date d'inscription mardi 4 mars 2003 Statut Membre Dernière intervention 2 mars 2006
2 mars 2006 à 09:18
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
0
Rejoignez-nous