1. #1
    Membre à l'essai
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    novembre 2017
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : novembre 2017
    Messages : 64
    Points : 20
    Points
    20

    Par défaut Réinitialiser les champs dans un dans formulaire

    Bonjour j'ai un souci de réinitialisation des champs de mon formulaire client dont je voudrais vider avant chaque nouvel enregistrement.
    je reçoit le méssage d'erreur que client.n° ne peut pas être vide.
    Voici la structure de ma table client:
    n°(NuméroAuto),nom_prenom(text,clé primaire),tel,email
    code:
    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
     
    Private Sub CmdAjouter_Click()
    'DoCmd.GoToRecord acDataForm, Me.Name, acNewRec
    Txt_num_cl = ""
    Txt_nomprenom = ""
    Txt_tel1 = ""
    Txt_tel2 = ""
    Txt_mail = ""
     
    End Sub
     
    Private Sub CmdEnreg_Click()
    Set db = CurrentDb
    Set rs = db.OpenRecordset("CLIENT")
     
    rs.AddNew
     
    rs!code_cl = Me.Txt_num_cl
    rs!nom_prenom = Me.Txt_nomprenom
    rs!tel1 = Me.Txt_tel1
    rs!tel2 = Me.Txt_tel2
    rs!email = Me.Txt_mail
     
    rs.Update
    rs.Close
     
    Set rs = Nothing
    Set db = Nothing
     
    End Sub

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    avril 2005
    Messages
    10 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2005
    Messages : 10 792
    Points : 21 869
    Points
    21 869

    Par défaut

    Bonjour,

    Je ne comprends pas ta méthode CRUD.

    Ton formulaire n'est pas lié à une source de données ?

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  3. #3
    Membre à l'essai
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    novembre 2017
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : novembre 2017
    Messages : 64
    Points : 20
    Points
    20

    Par défaut

    Bonjour! merci de me répondre!
    Mon formulaire est lié a la source de données "CLIENT". Au fait dans mon formulaire le numéro du client est saisie; ce qui n'est pas conviviale!
    je souhaiterais personnalisée le numéro du client par exemple "1ère lettre du nom du client incrémentée par un nombre entier"(D0001).
    Donc pour chaque nouveau client le numéro s'incrémente de 1 et les autres champs se vide pour une nouvelle saisie.

  4. #4
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    avril 2005
    Messages
    10 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2005
    Messages : 10 792
    Points : 21 869
    Points
    21 869

    Par défaut

    Si c'est lié à client pourquoi ce type de Crud ?

    Ce genre d'approche est réservé à ADO, dans ton cas tu utilises ACCESS avec DAO et les liaisons aux données classiques.

    Si c'est une numérotation utilisateur que tu veux mettre en place, tu dois travailler sur l'évènement Avant_Insertion.

    Commence par faire ta fonction utilisateur (par exemple : getNouveauNumero) qui renvoie un nouveau numéro, quand c'est fait, il faut juste faire une affectation sur le value de la zone.

    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    me.monnumeroutilisateur.value = fgetNouveauNumero()
    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  5. #5
    Membre à l'essai
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    novembre 2017
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : novembre 2017
    Messages : 64
    Points : 20
    Points
    20

    Par défaut

    Bonjour! j'avoue que être bloqué pour écrire la fonction pour la numérotaion

  6. #6
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    avril 2005
    Messages
    10 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2005
    Messages : 10 792
    Points : 21 869
    Points
    21 869

    Par défaut

    "1ère lettre du nom du client incrémentée par un nombre entier"(D0001).


    Voici de quoi t'aider à composer ton générateur (En VBA).

    1ere lettre du nom.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    initiale=left(NomClient,1)
    >> D

    le max de ce N° pour ce client

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maxnum = dmax("numero","table","left(numero,1)='" & initiale & "'")
    >> D0001

    la partie numérique de maxnum
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    partieNumerique = right(maxnum,4)
    >> 0001

    Pour recomposer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    initiale & Format(partieNumerique+1,"0000")
    >> D0002

    Il faut gérer le Nul (pas de numéro précédent) mais ça c'est trivial.

    PS : je te conseille de laisser le champ N° auto dans ta table et de continuer de faire les relations avec.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  7. #7
    Membre à l'essai
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    novembre 2017
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : novembre 2017
    Messages : 64
    Points : 20
    Points
    20

    Par défaut

    Bonjour! Excusez moi de mon long silence indépendant de ma volonté!
    j'ai utilisé cet exemple de "legrenier" que j'ai vue mais ne fonctionne pas pour l'instant car à l'exécution(click sur le bouton enregistrer après avoir saisie uniquement le nom du client)
    il affiche l'erreur suivante: un index ou une clé principale ne peut pas contenir une valeur null.
    Dans ma table client code_cl est de type text.
    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
    Function AutoNumber( _
      ByVal strTable As String, _
      ByVal strField As String, _
      Optional ByVal strFormat As String = "", _
      Optional ByVal intDigits As Integer = 4, _
      Optional ByVal dtDate As Date = #1/1/100#)
     
    ' Quelques variables...
    On Error GoTo AutoNumberErr
    Dim varMarkers As Variant, varMark As Variant
    Dim strCriteria As String
    Dim strNum As String, lngNum As Long, strPart As String
     
    ' Quelques retraitements...
    If dtDate = #1/1/100# Then dtDate = Now()
    strField = "[" & strField & "]"
    strFormat = Replace(strFormat, "'", "''")
     
    ' Marqueurs à remplacer
    varMarkers = Array("YYYY", "YY", "Q", "MM", "WW", "DD")
    For Each varMark In varMarkers
      ' Formater la date et l'injecter dans le template
      strPart = Format(dtDate, varMark, vbMonday, vbFirstFourDays)
      strFormat = Replace(strFormat, "[" & varMark & "]", _
        Format(strPart, String(Len(varMark), "0")))
    Next
     
    ' On cherche la valeur maximale déjà employée dans la table
    strCriteria = strField & " LIKE '" & strFormat & "*'"
    strNum = Nz(DMax(strField, strTable, strCriteria), "")
     
    ' On crée le nouveau numéro
    lngNum = IIf(strNum = "", 1, Val(Mid(strNum, Len(strFormat) + 1)) + 1)
    strFormat = strFormat & Format(lngNum, String(intDigits, "0"))
     
    ' Valeur finale
    AutoNumber = strFormat
    Exit Function
     
    AutoNumberErr:
      MsgBox "Erreur : " & Err.Description, vbCritical
      AutoNumber = ""
      Exit Function
    End Function
    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
    Private Sub Form_BeforeUpdate(Cancel As Integer)
     Dim strCode As String
      Dim strPrefixe As String
      Dim initiale As Variant
      Dim max As Long
      Dim partienumerique As Long
     
     
      ' Vérifier que le nom et le prénom
      ' sont renseignés, puisqu'ils servent
      ' dans le préfixe de numérotation
      If IsNull(Me.Txt_nomprenom) Then
        MsgBox "Le nom doit être renseigné !", vbExclamation
        Cancel = True
        Exit Sub
      End If
     
      ' Préfixe à utiliser pour la numérotation
      initiale = Left(Me.Txt_nomprenom, 1)
      maxnum = DMax("code_cl", "CLIENT", "left(code_cl,1)='" & initiale & "'")
      partienumerique = Right(maxnum, 4)
       strPrefixe = initiale & Format(partienumerique + 1, "0000")
      'strPrefixe = UCase(Left(Me.Txt_nomprenom, 1))
     
      ' Numérotation
      If IsNull(Me.Txt_num_cl) Then
        Me.Txt_num_cl = AutoNumber("CLIENT", "code_cl", strPrefixe, 4)
      End If
    End Sub
    c'est le code que j'exécute pour vider les champs pour une nouvelle saisie de client
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub CmdAjouter_Click()
    'DoCmd.GoToRecord acDataForm, Me.Name, acNewRec
    Txt_num_cl = AutoNumber(strTable, strField, strPrefixe)
    Txt_nomprenom = ""
    Txt_tel1 = ""
    Txt_tel2 = ""
    Txt_mail = ""
    End Sub
    pour enregistrer:
    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
    Private Sub CmdEnreg_Click()
    Set db = CurrentDb
    Set rs = db.OpenRecordset("CLIENT")
     
    rs.AddNew
     
    rs!code_cl = Me.Txt_num_cl
    rs!nom_prenom = Me.Txt_nomprenom
    rs!tel1 = Me.Txt_tel1
    rs!tel2 = Me.Txt_tel2
    rs!email = Me.Txt_mail
     
    rs.Update
    rs.Close
     
    Set rs = Nothing
    Set db = Nothing
     
    End Sub

  8. #8
    Membre à l'essai
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    novembre 2017
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : novembre 2017
    Messages : 64
    Points : 20
    Points
    20

    Par défaut

    j'ai modifier le " Form_BeforeUpdate " par:
    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
     
    Private Sub Form_BeforeUpdate(Cancel As Integer)
     Dim strCode As String
      Dim strPrefixe As String
      Dim initiale As Variant
      Dim max As Long
      Dim partienumerique As Long
      If IsNull(Me.Txt_nomprenom) Then
        MsgBox "Le nom doit être renseigné !", vbExclamation
        Cancel = True
        Exit Sub
      End If
     strPrefixe = UCase(Left(Me.Txt_nomprenom, 3))
     
      ' Numérotation
      If IsNull(Me.Txt_num_cl) Then
        Me.Txt_num_cl = AutoNumber("CLIENT", "code_cl", strPrefixe, 3)
      End If
    End Sub
    il m'a généré le numéro après avoir saisie le nom du client. Mais lorsque je veux saisir un nouveau client j'ai l'erreur affichée:
    <<Vous avez entré un argument non valide dans une fonction de domaine>>.
    De l'aide!!

  9. #9
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    avril 2005
    Messages
    10 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2005
    Messages : 10 792
    Points : 21 869
    Points
    21 869

    Par défaut

    Bonsoir,

    Pour t'aider il faut connaître ce que tu transmets à la fonction autonumber().

    Donc tu dois employer des points d'arrêt et vérifier les valeurs via les espions. Tout cela est dans le VBE.

    Normalement c'est sur la ligne 30 que l'erreur se produit.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  10. #10
    Membre à l'essai
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    novembre 2017
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : novembre 2017
    Messages : 64
    Points : 20
    Points
    20

    Par défaut

    Bonjour! je n'ai pas compris "employer des points d'arrêt et vérifier les valeurs via les espions".

  11. #11
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    avril 2005
    Messages
    10 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2005
    Messages : 10 792
    Points : 21 869
    Points
    21 869

    Par défaut

    Pour placer des points d'arrêt dans le code :

    Nom : pointarret.png
Affichages : 58
Taille : 13,3 Ko

    Pour observer la valeur des variables après l'arrêt :

    Affichage/Fenêtre Variable Espion

    C'est le passage obligatoire pour le débogage et de l'utilisation de VBA.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  12. #12
    Membre à l'essai
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    novembre 2017
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : novembre 2017
    Messages : 64
    Points : 20
    Points
    20

    Par défaut

    Ok mais je me demandais si le champs qui doit contenir le numéro personnalisé ne devrait pas contenir une expression ou un code vba?

  13. #13
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    avril 2005
    Messages
    10 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2005
    Messages : 10 792
    Points : 21 869
    Points
    21 869

    Par défaut

    Evidemment il n'y a pas qu'une seule solution à un problème. On peut y arriver de plusieurs façons.

    A toi de trouver celle qui te convient le mieux.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  14. #14
    Membre à l'essai
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    novembre 2017
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : novembre 2017
    Messages : 64
    Points : 20
    Points
    20

    Par défaut

    Bonjour je suis dans la tourmente lorsque je souhaite créer un code qui me permet de personnaliser mes numérotation du genre: left(nom,3)+chiffre à incrémenter.
    DGA001
    DGA002
    FDE001
    NEER003

  15. #15
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    avril 2005
    Messages
    10 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2005
    Messages : 10 792
    Points : 21 869
    Points
    21 869

    Par défaut

    Qu'as-tu fais du code que j'ai posté ?
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  16. #16
    Membre à l'essai
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    novembre 2017
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : novembre 2017
    Messages : 64
    Points : 20
    Points
    20

    Par défaut

    Bonjour! j'ai utilisé ce que j'ai posté et j'ai ajouté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Txt_num_cl_Click()
    Me.Txt_num_cl.Value = AutoNumber("CLIENT", "code_cl", strPrefixe, 3)
    Me.Refresh
    End Sub
    et ça marche bien mais le problème c'est que à chaque chaque nouvelle enregistrement j'ai le message d'erreur qui s'affiche:
    Erreur d'exécution 3058: un index ou une clé principale ne peut pas contenir une valeur null.
    Comment sauter l'erreur
    pour vider les champs pour une nouvelle saisie voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub CmdAjouter_Click()
    DoCmd.GoToRecord acDataForm, Me.Name, acNewRec
    End Sub

  17. #17
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    avril 2005
    Messages
    10 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2005
    Messages : 10 792
    Points : 21 869
    Points
    21 869

    Par défaut

    on ne peut pas "sauter" ce type d'erreur.

    Il faut voir d'où vient le problème et le corriger.

    Pourquoi le me.refresh ?
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  18. #18
    Membre à l'essai
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    novembre 2017
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : novembre 2017
    Messages : 64
    Points : 20
    Points
    20

    Par défaut

    Merci! maintenant il s’enregistre correctement mais le seul bémol c'est que le code du client(code_cl) ne s'affiche pas sur le formulaire.
    pour enregistrer:
    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
    Private Sub CmdEnreg_Click()
    Dim LngNouvelleValeur As Variant
    Set db = CurrentDb
    Set rs = db.OpenRecordset("CLIENT")
    'LngNouvelleValeur = AutoNumber("CLIENT", "code_cl", strPrefixe, 3) 'rs!code_cl.Value
    If Not IsNull(Me.Txt_num_cl) Then
    rs.AddNew
     
    rs!code_cl = Me.Txt_num_cl
    rs!nom_prenom = Me.Txt_nomprenom
    rs!tel1 = Me.Txt_tel1
    rs!tel2 = Me.Txt_tel2
    rs!email = Me.Txt_mail
                  'oRst.Fields("NumClient").Value
    rs.Update
    rs.Close
    End If
    Set rs = Nothing
    Set db = Nothing
     
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Private Sub Form_AfterInsert()
    Dim vnum As String
    Dim rs As DAO.Recordset
    Set rs = CurrentDb.OpenRecordset("select * from CLIENT where code_cl='" & Me.Txt_num_cl & "'")
    vnum = Me.Txt_num_cl
    While rs.EOF
    If rs!code_cl = vnum Then
    Me.Txt_num_cl = rs!code_cl
    End If
    Wend
    End Sub
    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
    Private Sub Form_BeforeUpdate(Cancel As Integer)
     Dim strCode As String
      Dim strPrefixe As String
      'Dim initiale As Variant
      'Dim max As Long
      'Dim partienumerique As Long
     
     
      ' Vérifier que le nom et le prénom
      ' sont renseignés, puisqu'ils servent
      ' dans le préfixe de numérotation
      If IsNull(Me.Txt_nomprenom) Then
        MsgBox "Le nom doit être renseigné !", vbExclamation
        Cancel = True
        Exit Sub
      End If
     
     
      strPrefixe = UCase(Left(Me.Txt_nomprenom, 3))
     
      ' Numérotation
      If IsNull(Me.Txt_num_cl) Then
        Me.Txt_num_cl.Value = AutoNumber("CLIENT", "code_cl", strPrefixe, 3)
      End If
      'Me.Refresh
    End Sub
     
    Private Sub Txt_nomprenom_AfterUpdate()
    Me.Txt_nomprenom = UCase(Me.Txt_nomprenom)
    End Sub

  19. #19
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    avril 2005
    Messages
    10 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2005
    Messages : 10 792
    Points : 21 869
    Points
    21 869

    Par défaut

    attention tu mélanges des techniques qui ne doivent pas l'être :

    form_afterinsert/beforeinsert avec ton addnew dans le clic enregeristrement.

    Soit tu laisses ACCESS gérer l'enregistrement et dans ce cas tu peux utiliser les événements form_"dao".
    Soit tu choisis d'utiliser la technique du addnew mais dans ce cas tu ne dois pas mettre de source à ton formulaire, ne pas utiliser les form_"dao" et renseigner tes controles manuellement.

    Si tu n'as pas de source les After et Before "dao" ne sont jamais déclenché.

    Quand tu debugues ça te dis quoi ?


    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

Discussions similaires

  1. validation de tous les champs dans un formulaire
    Par cyriane dans le forum VB.NET
    Réponses: 19
    Dernier message: 02/05/2012, 15h11
  2. Réponses: 0
    Dernier message: 28/09/2011, 17h32
  3. [AC-2007] Aligner les champs dans un formulaire
    Par patb12 dans le forum IHM
    Réponses: 4
    Dernier message: 26/04/2010, 16h14
  4. Problème Notice dans les champs de formulaire.
    Par pony99 dans le forum Formulaires
    Réponses: 8
    Dernier message: 06/03/2009, 16h59
  5. Question sur les champs dans un formulaire
    Par Albert94fr dans le forum IHM
    Réponses: 1
    Dernier message: 10/01/2009, 23h33

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