IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

[VBA-A]Aide passage enregistrement suivant


Sujet :

VBA Access

  1. #1
    Candidat au Club
    Inscrit en
    Mars 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 6
    Points : 4
    Points
    4
    Par défaut [VBA-A]Aide passage enregistrement suivant
    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

  2. #2
    Candidat au Club
    Inscrit en
    Mars 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    up

  3. #3
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Inutile de relancer ta question. Si quelqu'un peut répondre, il le fera. Mais l'absence de balise peut expliquer que tu n'aies pas eu de réponse jusque là

    "Patience et longueur de temps font mieux que force ni que rage"

    A+

    Et puis laisse-nous le temps de lire ton code

  4. #4
    Candidat au Club
    Inscrit en
    Mars 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Pour vous aider dans vos demarches d'aide, je tiens à préciser que j'ai tester d'appeler la fonction ou il y a le code du bouton

    Le code du bouton est
    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
    Private Sub Commande48_Click()
    On Error GoTo Err_Commande48_Click
    Dim matri, numop As String
     
        matri = Me.[Matricule]
        numop = Me.[code_type_op]
     
        DoCmd.GoToRecord , , acNewRec
        Me.[Matricule] = matri
        Me.[code_type_op] = numop
     
     
    Exit_Commande48_Click:
        Exit Sub
     
    Err_Commande48_Click:
        MsgBox Err.Description
        Resume Exit_Commande48_Click
     
    End Sub

    Et je l'appelle dans mon formulaire par la commande
    et j'ai en réponse


    Impossible d'atteindre l'enregistrement spécifié

Discussions similaires

  1. [XL-2010] Enregistrement suivant VBA
    Par micaieaie dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 29/12/2012, 14h00
  2. [AC-2007] Eviter passage à enregistrement suivant
    Par alfhcg dans le forum IHM
    Réponses: 4
    Dernier message: 19/10/2010, 21h51
  3. [VBA]Compter les enregistrement suivant critère d'un champs
    Par wachoo31 dans le forum VBA Access
    Réponses: 9
    Dernier message: 27/04/2007, 07h42
  4. [Formulaire] passage à l'enregistrement suivant
    Par Julien42 dans le forum IHM
    Réponses: 1
    Dernier message: 01/02/2007, 17h30
  5. [VBA-A] Pb pour passage au suivant dans sous formulaire
    Par leadri dans le forum VBA Access
    Réponses: 6
    Dernier message: 02/03/2006, 11h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo