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 :

Numérotation Automatique personnalisée [AC-2007]


Sujet :

VBA Access

  1. #1
    Membre averti
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Juin 2012
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 38
    Par défaut Numérotation Automatique personnalisée
    Bonjour tout le monde!
    Voilà mon problème.

    J'ai une base de données pour faire de la facturation. J'ai déjà un code VBA pour la numérotation automatique de la facture qui me donne FAC-06-12-0001
    Voilà mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If IsNull(Me.IdFacture) Then
        Me.IdFacture = AutoNumber("Factures", "IdFacture", "FAC-[MM]-[YY].", 4)
     End If
    Avec l'évolution, j'ai maintenant deux types de facturation: Locale et Export
    qui ont chacune une numéro d'identification, (21 pour les locales et 11 pour les Export) C'est pour les besoins de la comptabilité.

    Sur mon formulaire de facturation, j'ai crée une zone de liste déroulante où l'on choisi le type de facturation "Local" ou "Exportation".
    J'aimerai qu'à partir du choix fait dans cette liste déroulante avoir un numéro automatique formater comme suit:
    Pour les Locales FAC-[AA]-21-0000 et FAC-[AA]-11-0000 pour les Exportation.
    Merci d'avance et Bonne après-midi.

  2. #2
    Membre Expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Par défaut
    Bonjour,

    Si dans ta table facture, tu as un champ identifiant le type de facturation (L ou E), il te suffis de rechercher à chaque numérotation de facture, le MAX (N_FACTURE) + 1 ou (WHERE) champ TYPE = L ou E .....

    Tu peux faire cette même incrémentation, en te bassant sur la valeur 21 ou 11 (plus besoin de champ TYPE) ..... (voir les possibilités d'extraction de chaîne dans la )

    [EDIT]
    ....Attention, tout le monde ne connait pas la structure de la fonction AutoNumber ....

    Avec cette nouvelle numérotation, comment fais tu pour différencier une facture de 2011 et 2012

  3. #3
    Membre Expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Par défaut
    ..... maintenant, si tu tiens absolument à utiliser ta fonction AutoNumber, tu peux le faire de cette façon.....

    1)- sur un formulaire indépendant une ZdL [Zdl_TypeFacturation]...
    2)- un champ indépendant [IdFacture]

    ..... sur l'événement de ton choix........
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.IdFacture = AutoNumber("Factures", "IdFacture", "FAC-(AA)" & Me.Zdl_TypeFacturation.Value & "-", 4)
    Résultat = FAC-(AA)11-0004

    ....voilà, c'est une possibilité simple de modification mais, je le répète, non satisfaisante

    [EDIT]
    Houla..... je viens de relire ton post initial .... et j'ai comme un doute dans l'interprétation que j'ai faites de ta demande....

    .... Car si dans ton exemple [AA] représente l'année, alors il faut modifier comme suit....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.IdFacture = AutoNumber("Factures", "IdFacture", "FAC-[YY]" & Me.Zdl_TypeFacturation.Value & "-", 4)

  4. #4
    Membre averti
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Juin 2012
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 38
    Par défaut
    Merci beaucoup FreeAccess d'avoir pris le temps de m'aider.

    Finalement je me suis contenter de case à cocher indépendante sur le formulaire de la facturation.

    Voilà le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Datefact_AfterUpdate()
    If IsNull(Me.IdFacture) Then
    If Me.CocherLoc.Value = True Then
    Me.IdFacture = AutoNumber("Factures", "IdFacture", "[YY].21.", 6)
    End If
    If Me.CocherExp.Value = True Then
    Me.IdFacture = AutoNumber("Factures", "IdFacture", "[YY].11.", 6)
    End If
    End If
    End Sub
    J'ai commencé à tester et tout va bien, je pense. mais si vous trouver qu'il y a mieux, je prends.

    Encore merci.

  5. #5
    Membre Expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Par défaut
    Bonjour,

    Si cette solution te conviens . . . pourquoi pas ...

    Mais une solution avec ZdL est plus "souple" dans l'évolution de ta Base....

    Que fais tu si tu dois modifier, ajouter une valeur sur ton type de facturation ...

    obligation de repasser en mode création, d'ajouter une case à cocher, puis de modifier le code......

    avec ZdL : tu saisis uniquement la nouvelle valeur dans la table correspondante ....

    Maintenant, si tu utilise des cases à cocher . . . au lieu de te servir de cases indépendantes, utilise plutôt le contrôle "Groupe d'options" . . . .

  6. #6
    Membre averti
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Juin 2012
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 38
    Par défaut
    Je vais opter pour le groupe d'option

    Maintenant mon problème est comment refaire mon code pour l'adapter au groupe d'option.
    Parce que le même code ne marche pas avec le groupe d'option
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Datefact_AfterUpdate()
    If IsNull(Me.IdFacture) Then
    If Me.CocherLoc.Value = True Then
    Me.IdFacture = AutoNumber("Factures", "IdFacture", "[YY].21.", 6)
    End If
    If Me.CocherExp.Value = True Then
    Me.IdFacture = AutoNumber("Factures", "IdFacture", "[YY].11.", 6)
    End If
    End If
    End Sub
    J'ai déjà créer mon groupe d'option avec trois contrôle

    Export avec valeur 1
    Local avec valeur 2



    Merci d'avance!

  7. #7
    Membre Expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Par défaut
    Bonjour,

    .... c'est bien d'avoir utiliser un groupe d'option . . . mais que te dis ...

    Quand tu utilises un groupe d'options, c'est le contrôle Groupe options qui "retourne" la valeur de l'élément sélectionné.....

    Un excellent tuto.....
    Les Cases à Cocher et les Groupes d'Options dans Access

  8. #8
    Membre averti
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Juin 2012
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 38
    Par défaut
    Encore mille merci FreeAccess pour le url du tuto
    Le code de mon groupe d'option.
    Private Sub TypeFact_AfterUpdate()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    ' ===== Message et Numérotation Automatique après choix du type de facture ====
        Select Case Me.TypeFact.Value
            Case 1
                MsgBox "Vous avez choisie une facture de type Avoir"
                Me.IdFacture = AutoNumber("Factures", "IdFacture", "[YY].59.", 6)
            Case 2
                MsgBox "Vous avez choisie une facture de type Locale"
                Me.IdFacture = AutoNumber("Factures", "IdFacture", "[YY].21.", 6)
            Case 3
                MsgBox "Vous avez choisie une facture de type Exportation"
                Me.IdFacture = AutoNumber("Factures", "IdFacture", "[YY].11.", 6)
        End Select
    End Sub
    J'en profite aussi pour remercier l’éditeur du tuto et tous ceux qui ont contribué là-dessus.

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

Discussions similaires

  1. [AC-2013] Numérotation automatique personnalisée
    Par 24071959 dans le forum Access
    Réponses: 24
    Dernier message: 26/03/2015, 15h38
  2. Numérotation automatique personnalisée
    Par pat_che dans le forum VBA Access
    Réponses: 2
    Dernier message: 04/01/2008, 09h05
  3. Numérotation automatique personnalisée
    Par Nancyfr dans le forum Access
    Réponses: 0
    Dernier message: 24/07/2007, 09h52
  4. Numérotation Automatique Personnalisée
    Par Dhumkazaar dans le forum Access
    Réponses: 4
    Dernier message: 10/05/2006, 20h34
  5. Numérotation automatique selon les utilisateurs
    Par Safaritn dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 12/08/2005, 14h11

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