1. #1
    Membre à l'essai
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    novembre 2017
    Messages
    60
    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 : 60
    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 646
    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 646
    Points : 21 591
    Points
    21 591

    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
    60
    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 : 60
    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 646
    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 646
    Points : 21 591
    Points
    21 591

    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
    60
    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 : 60
    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 646
    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 646
    Points : 21 591
    Points
    21 591

    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
    60
    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 : 60
    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
    60
    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 : 60
    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 646
    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 646
    Points : 21 591
    Points
    21 591

    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
    60
    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 : 60
    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".

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, 16h11
  2. Réponses: 0
    Dernier message: 28/09/2011, 18h32
  3. [AC-2007] Aligner les champs dans un formulaire
    Par patb12 dans le forum IHM
    Réponses: 4
    Dernier message: 26/04/2010, 17h14
  4. Problème Notice dans les champs de formulaire.
    Par pony99 dans le forum Formulaires
    Réponses: 8
    Dernier message: 06/03/2009, 17h59
  5. Question sur les champs dans un formulaire
    Par Albert94fr dans le forum IHM
    Réponses: 1
    Dernier message: 11/01/2009, 00h33

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