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

Access Discussion :

[TUTO ]Numérotation personnalisée


Sujet :

Access

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    477
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 477
    Points : 198
    Points
    198
    Par défaut [TUTO ]Numérotation personnalisée
    Bonjour et merci d'avance pour votre aide.

    J'essaie de suivre le tuto disponible ici
    http://warin.developpez.com/tutoriel...s/numauto2010/

    Mais je ne parviens pas à m y retrouver sur Access.
    1. J'ajoute un champ numérot "indice"
    2. J'ajoute un champ calculé NumeroFacture avec l'expression donné dans le tuto
    3. Par contre je ne sais pas où se trouve ValidateChange ou encore LookUpRecord
    4. Aussi, dois-je crée une requête qryNouvelIndice ou cela doit se trouver dans un code ?


    Merci pour votre aide.

  2. #2
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 777
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 777
    Points : 58 179
    Points
    58 179
    Billets dans le blog
    42
    Par défaut
    bonjour Rifton007,

    Citation Envoyé par Christophe Warin
    A la date de publication de ce tutoriel, la fonction Format n'est pas disponible dans les évènements de table. Impossible de savoir ce qu'il en sera dans la version finale prévue au printemps 2010.
    le tutoriel a été rédigé sur une préversion non francisée d'Access 2010, il est donc normal d'y trouver quelques écarts.

    Je suppose que pour l'évènement ValidateChange, il faut maintenant chercher du côté de la macro de données Avant modification (version française).

    pour LookUpRecord, ce sera maintenant RechercherEnregistrement, pour SetLocalVar, DéfinirValLocale, etc.

    Aussi, dois-je crée une requête qryNouvelIndice ou cela doit se trouver dans un code ?
    qryNouvelIndice est une simple requête enregistrée.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    477
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 477
    Points : 198
    Points
    198
    Par défaut
    Merci f-leb,

    C'était nullement une critique et je ne met aucunement en doute la valeur de ce tuto qui est au passage excellent. Et j'avais bien lu que ce tuto date d'avant la sortie officiel. Mais j'avais beau chercher sur le net, je ne trouvais pas l'équivalent en français.

    Au passage, c'est vraiment pas pratique cette idée de Microsoft de traduire le code en français.

    Enfin, grâce à ton aide précieuse, j'y suis parvenu.
    Chaque mois, l'indice commence bien par 1.
    Mais je n'ai pas l’incrémentation de l'indice pour les factures du même mois.

    Voici mon macro


    Par contre je n'ai pas reussi à mettre
    L'équivalent sur MSDN, c'est EstInserer, mais Access ne le reconnais pas.

    Encore merci,

  4. #4
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2009
    Messages
    1 794
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 85
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 794
    Points : 3 094
    Points
    3 094
    Par défaut
    Bonjour,
    Une proposition par un exemple de la composition du n° de facture

  5. #5
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 777
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 777
    Points : 58 179
    Points
    58 179
    Billets dans le blog
    42
    Par défaut
    Bonjour,

    Citation Envoyé par Rifton007
    Au passage, c'est vraiment pas pratique cette idée de Microsoft de traduire le code en français.
    entièrement d'accord avec toi

    La traduction en français de If [IsInsert] = True Then est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Si [Insertion]=Vrai Alors
    Apparemment dans ton code, à l'intérieur de Rechercher un enregistrement, il manque un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DéfinirVarLocale(vIndice ; Nz(NouvelIndice,1))

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    477
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 477
    Points : 198
    Points
    198
    Par défaut
    Magnifique, ça fonctionne
    Merci pour ta contribution rjamin, c'est justement ce dontj'ai besoin pour mieux comprendre les rouages d'Access.

    Merci à vous deux encore, je vous souhaite une agréable journée ;-)

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    477
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 477
    Points : 198
    Points
    198
    Par défaut
    Rebonjour,

    Je me suis permis de relancer le sujet, car j'ai un petit problème pour le formulaire.
    Tout fonctionne, aucun message d'erreur.

    Par contre quand j'introduit un nouvelle enregistrement.
    J'obtient F001, jusque là tout va bien.
    Mais quand j'introduit la date, l'indice reste à 1.
    C'est en finalisant l'enregistrement que j'obtient toujours le message:
    "Une autre saisie a été traitée avant la vôtre, le numéro de votre facture ..."
    Et tout rentre dans l'ordre, les numéro de factures sont bien incrémenter dans la bases de données.

    Pour vérifier, j'ai crée un nouvelle enregistrement dans la bases de donnée en mode feuille dans Access. Et la l’incrémentation fonctionne bien, pas de soucis.

    Sans erreur je ne parviens pas à déterminer le source du problème.

    txtNumFacture
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    =VraiFaux([NewRecord];"FA" & Format(Nz([stratProject]);"aamm") &
    Format(Nz(MaxDom("indice";"invoice";"Format([stratProject],""aamm"")=" 
    & Car(34) & Format(Nz([txt_beginDate]);"aamm") & Car(34))+1;1);"000");[id_reference])
    VBA
    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
     
    Option Compare Database
    Option Explicit
     
    Dim vNumFacture As String
     
     
     
    Private Sub Form_BeforeUpdate(Cancel As Integer)
      'Stocke le numéro de facture avant enregistrement
      vNumFacture = Me.txt_beginDate
    End Sub
    Private Sub form_AfterUpdate()
      'Compare le numéro actuel avec celui sauvegardé avant l'update
      If vNumFacture <> Me.txtNumFacture Then
        MsgBox "Une autre saisie a été traitée avant la vôtre, le numéro de votre facture a été modifié : " & _
          Me.txtNumFacture
     
     
      End If
    End Sub
     
    Private Sub cmdValider_Click()
    Me.Refresh
    End Sub
    Merci à vous.

  8. #8
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 777
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 777
    Points : 58 179
    Points
    58 179
    Billets dans le blog
    42
    Par défaut
    Rebonsoir,

    ligne 11:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vNumFacture = Me.txt_beginDate
    ce ne serait pas plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     vNumFacture = Me.txtNumFacture
    ??

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    477
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 477
    Points : 198
    Points
    198
    Par défaut
    Effectivement c'était une erreur de ma part.
    Mais le problème persiste.

    J'ai mis cela juste avant la ligne 11
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     MsgBox (Me.txtNumFacture & "/" & vNumFacture)
    Et chaque tentative: FA130300X/FA1303001
    X étant toujours le dernières indice.

    Et dans la ligne 15 on a
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     If vNumFacture <> Me.txtNumFacture Then
        MsgBox "Une autre saisie a été traitée avant la vôtre, le numéro de votre facture a été modifié : " & _
          Me.txtNumFacture
    Hors cette condition est toujours vrai, ça serait pas plus tot "if not" ???

  10. #10
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2009
    Messages
    1 794
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 85
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 794
    Points : 3 094
    Points
    3 094
    Par défaut
    Bonjour,

    Vous écrivez
    Hors cette condition est toujours vrai, ça serait pas plus tot "if not" ???
    Je crois que vNumFacture est une valeur numérique et que Me.txtNumFacture est une valeur String donc le test logique donne toujours Vrai. Essayez en mettant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If vNumFacture <> Val(txtNumFacture) then
    pour voir.

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    477
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 477
    Points : 198
    Points
    198
    Par défaut
    Comme déclaré dans le tutorial, vNumFacture est un string.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Dim vNumFacture As String

  12. #12
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 777
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 777
    Points : 58 179
    Points
    58 179
    Billets dans le blog
    42
    Par défaut
    à la lecture du message :
    Citation Envoyé par Rifton007
    C'est en finalisant l'enregistrement que j'obtiens toujours le message:
    "Une autre saisie a été traitée avant la vôtre, le numéro de votre facture ..."
    je dirais qu'il doit y avoir un problème dans l'évaluation de txtNumFacture même si je ne l'ai pas identifié :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    =VraiFaux([NewRecord];"FA" & Format(Nz([stratProject]);"aamm") &
    Format(Nz(MaxDom("indice";"invoice";"Format([stratProject],""aamm"")=" 
    & Car(34) & Format(Nz([txt_beginDate]);"aamm") & Car(34))+1;1);"000");[id_reference])
    Essaie d'évaluer les termes de l'expression séparément:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     =Format(Nz([stratProject]);"aamm")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Format(Nz([txt_beginDate]);"aamm")
    puis voir ce que donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    =Format(Nz(MaxDom("indice";"invoice";"Format([stratProject],""aamm"")=" 
    & Car(34) & Format(Nz([txt_beginDate]);"aamm") & Car(34))+1;1);"000")

  13. #13
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    477
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 477
    Points : 198
    Points
    198
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    =Format(Nz(MaxDom("indice";"invoice";"Format([stratProject],""aamm"")=" 
    & Car(34) & Format(Nz([txt_beginDate]);"aamm") & Car(34))+1;1);"000")
    j'obient: 001

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Format(Nz([txt_beginDate]);"aamm")
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     =Format(Nz([stratProject]);"aamm")
    j'obient: 1303[

  14. #14
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 777
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 777
    Points : 58 179
    Points
    58 179
    Billets dans le blog
    42
    Par défaut
    Citation Envoyé par Rifton007 Voir le message
    j'obient: 001
    et donc ? Cela te semble-t-il normal ?? (je n'ai ni le formulaire ni le contenu de la table sous les yeux)

    Apparemment il n'y a pas encore d'enregistrements pour 1303. Que se passe-t-il si tu crées quelques factures directement dans les tables. Tu as bien 002, 003 etc ensuite dans le formulaire ?

    Il faudrait au moins essayer de trouver l'endroit où ça cloche.

  15. #15
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    477
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 477
    Points : 198
    Points
    198
    Par défaut
    Normal, je sais pas.

    Je dirais "non", car à mon sens il devrais affecté l'indice le plus haut
    Oui, car comme expliqué dans le tuto, il commence par "001" et puis affecté le bon indice.

    Dans ma table pas de problème.


    http://www.innovadesign.be/privat/Database1.rar
    Le formulaire en question est frm_invoice.
    Merci à toi.

Discussions similaires

  1. [AC-2010] Numérotation personnalisée des enregistrements dans Access 2010
    Par Tofalu dans le forum Access
    Réponses: 3
    Dernier message: 27/06/2021, 10h42
  2. Numérotation personnalisée
    Par er1369 dans le forum VBA Access
    Réponses: 1
    Dernier message: 11/08/2008, 21h20
  3. Réponses: 1
    Dernier message: 01/11/2007, 20h30
  4. Numérotation personnalisée access
    Par BCHJ13 dans le forum Access
    Réponses: 1
    Dernier message: 20/06/2007, 16h47

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