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

Modélisation Discussion :

Numérotation automatique "année"+"numéro" [AC-2007]


Sujet :

Modélisation

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 186
    Points : 71
    Points
    71
    Par défaut Numérotation automatique "année"+"numéro"
    Bonsoir à tous et à toutes

    J'ai deux tables
    - une table clients
    - une table factures

    Dans chaque table, je souhaite numéroter mes clients et mes factures selon la syntaxe suivante

    "année" + "numéro"
    Par exemple 2008001, 2008002 et ainsi de suite

    J'ai cru comprendre que cela ne passe pas par Numéroauto

    Avez vous des pistes ?

    MErci d'avance pour votre aide

    Daniel

  2. #2
    Membre émérite
    Homme Profil pro
    tripatouilleur de code pour améliorer mon quotidien boulistique
    Inscrit en
    Février 2008
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : tripatouilleur de code pour améliorer mon quotidien boulistique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2008
    Messages : 939
    Points : 2 287
    Points
    2 287
    Par défaut
    Ce n'est pas tout à fait si simple.

    Je verrai les choses ainsi :
    - un champ Année
    - un champ ID

    Votre champ Num_Fact est la concaténation des deux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [Num_Fact] = [Annee]&[Id]
    Avec pour l'ID une numérotation automatique incrémentée

    Pierre

    PS : l'utilisation du numéro auto m'a planté un jour. Il a fallu que je pense en aléatoire et plus en incrémenté. J'ai des ID négatifs, maintenant. Pas l'idéal sur facture....

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 186
    Points : 71
    Points
    71
    Par défaut
    Bonjour

    Merci pour cette réponse

    La cerise sur le gateau serait que la numérotation reparte à 0 à chaque changement d'année

    2008001, 2008002, 2008003 puis 2009001 2009002 etc.

    Merci pour votre aide

    Daniel

  4. #4
    Membre émérite
    Homme Profil pro
    tripatouilleur de code pour améliorer mon quotidien boulistique
    Inscrit en
    Février 2008
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : tripatouilleur de code pour améliorer mon quotidien boulistique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2008
    Messages : 939
    Points : 2 287
    Points
    2 287
    Par défaut
    Re

    Je n'étais pas trop bien réveillé tout à l'heure, et je ne trouvais pas ce qui clochait dans mon raisonnement.

    En effet, pour repartir de zéro chaque année, il ne faut pas passer par le numéro auto, mais le créer.

    Je ne maîtrise pas assez (faire des recherches dans la FAQ, dans le forum), mais le principe est de mettre un numéro normal (un entier), et pour attribuer ce numéro, rechercher dans les enregistrement le dernier numéro donné puis ajouter 1 cela donne le numéro du nouvel enregistrement.

    Pour la nouvelle année, il suffit de réinitialiser le champ numéro à "0".
    Pour cela, le mieux doit être de mettre tous les enregistrements en archives dans une nouvelles table archive.

    Bonne continuation

    Pierre

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1 350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 350
    Points : 1 701
    Points
    1 701
    Par défaut
    Bonsoir,

    Ta table —>tblfactures et son champ —>NumFacture(Entier long)
    qui sur ton formulaire devient —> TxtNumFacture

    Et pour ce même formulaire Avant insertion :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Form_BeforeInsert(Cancel As Integer)
      Me!TxtNumFacture = DMax("[NumFacture]", "tblfactures") + 1
     ' Une nouvelle année? --> l'incrémentation redémarre à 1.
      If IsNull(Me!TxtNumFacture) Or Me!TxtNumFacture < Year(Now) * 1000 Then
         Me!TxtNumFacture = 1 + Year(Now) * 1000
      End If
    End Sub
    Cordialement.
    Questions techniques par MP
    Le peu que je sais, c'est à mon ignorance que je le dois.
    ...............................................................................Sacha Guitry

  6. #6
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    salut francishop , pier.antoine et bienvenu familledacp

    en reprenant le contexte de francishop:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Form_BeforeInsert(Cancel As Integer)
      NumFacture = CStr((Year(Now) * 1000) + Nz(DCount("[NumFacture]", "tblfactures","[NumFacture] Like '" & Year(Now) & "*'"),0) + 1)
    End Sub

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 186
    Points : 71
    Points
    71
    Par défaut
    Merci à tous

    Cela fonctionne parfaitement !

    Daniel

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 44
    Points : 34
    Points
    34
    Par défaut Ajout du mois et jour
    Bonjour,

    J'utilise le code vodiem. Il marche très bien....

    Je voudrais ajouter, le mois et le jour (200906110001....)

    Pouvez vous m'aider

    Merci d'avance

    Manu

  9. #9
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    salut campello,

    avec une raz journalier ou annuelle?

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 44
    Points : 34
    Points
    34
    Par défaut
    Salut,

    Annee;mois;jours;compteur,
    qui se change forcement tous les jours.
    et chaque année.

    Exemple :

    le 12/06/2009 N°5 = 20090612005
    le 12/06/2010 N°4 = 20100612004

    Merci Bcp

    Manu

  11. #11
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NumFacture = format(Now,"yyyymmdd") & format(Nz(DCount("[NumFacture]", "tblfactures","[NumFacture] Like '" & format(Now,"yyyymmdd") & "*'"),0) + 1,"000")

  12. #12
    Nouveau Candidat au Club
    Femme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Plus de détail !
    Citation Envoyé par vodiem Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NumFacture = format(Now,"yyyymmdd") & format(Nz(DCount("[NumFacture]", "tblfactures","[NumFacture] Like '" & format(Now,"yyyymmdd") & "*'"),0) + 1,"000")
    Bonjour Vodiem,

    J'espère que tu es toujours dans le coin

    J'ai bien lu ta réponse et la comprend mais je ne sais pas du tout où la placer, je suis vraiment un boulet en Access et c'est sur Excel que j'excelle , mais parfois, j'ai l'impression que ces deux mondes ne se comprennent pas. En tout cas, j'ai du mal en ce qui concerne l'utilisation de macro dans Access :
    Où les placer, comment faire le lien entre une cellule et une macro...etc.

    Bref, je ne te demande pas un cours (quoique....) juste me dire où je place ton code afin que celui-ci fasse que dans ma cellule je retrouve (par ex.) "BC2011-09-001"

    Ce que j'ai compris c'est que je dois créer une table "tblfactures" et un champ dans celle-ci "NumFacture". Après ça....

    Dois-je créer une formulaire ? Dans une cellule dois-je mettre un "lien" avec ton code ???

    Un grand Merci pour ton éventuelle réponse !

    LH

  13. #13
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    Salut Laura Holt et bienvenu,

    oui toujours là, comme le cancre, dans le coin.

    p'tit cours rapido : il faut te familiariser avec ces qq objets access:
    > les feuilles d'excel pourrait correspondre aux tables access. chaque colonne correspondant à un champ.
    > les formulaires s'occupe principalement d'insérer chaque ligne qu'on appel enregistrement sous access. autant le faire directement dans la table tu diras mais les formulaires apporte des controles supplémentaire: validation, ergonomie...
    > les requêtes permettent de sélectionner que les champs nécessaires à un traitement parmi une ou plusieurs tables et faire éventuellement des "calculs" dessus (une sorte de colonne avec la même formule pour chaque ligne).

    donc: après création de la table, création du formulaire. y a des assistants qui font ca automatiquement, pour commencer faut pas t'en priver.
    la source du formulaire est soit la table soit une requête.
    dans le formulaire il y a plein d'événements qui se déclenchent, à l'ouverture, fermeture... et... à l'insertion d'un nouvel enregistrement.

    passons au TP:
    en mode création de formulaire/feuille de propriété (raccourci: ALT+ENTREE)/onglet : événement/avant insertion/clic sur: "..."/générateur de code
    voilà, c'est là que tu mets le code précédent.
    tu reconnaitras les événements du formulaire car ils portent toujours les mêmes nom "Form_BeforeInsert": (Form_ suivi de l'événement) => formulaire_avant insertion.

    fini les batailles navales: les cellules n'ont aucun sens sous access puisqu'on manipules des ensembles de données: les enregistrements ou champs. (lignes ou colonnes)
    chaque outils son utilité.

    tu trouveras tuto, faq et même des gens sympas si tu as des difficultés pour t'expliquer tout ca sur dvp. ;P

    bon courage.

+ Répondre à la discussion
Cette discussion est résolue.

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