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 :

Incrementation auto avec remise a zero automatique mensuel sous access 2003


Sujet :

VBA Access

  1. #1
    Futur Membre du Club
    Homme Profil pro
    responsable de site
    Inscrit en
    Février 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : responsable de site
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2011
    Messages : 13
    Points : 8
    Points
    8
    Par défaut Incrementation auto avec remise a zero automatique mensuel sous access 2003
    Bonjours
    nouveau sur ce forum

    J'ai cres une base pour rediger des devis mais je n'arrive pas a faire une incrementation auto pour le numero du Devis

    exemple "4 lettres", Mois,année, N) increment auto avec remise a zero debut de Mois
    VF37/02/11/01

    J'ai une table avec N° Auto

    Merci pour votre aide

  2. #2
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Bonjour,

    dans ton cas de figure, je doute qu'une table avec N° auto soit la solution adaptée, puisque tu remets à 0 chaque mois (j'ignore comment tu veux t'y prendre) et que pour mettre le n° auto à 0, il faut vider la table.

    Regarde du coté de ce excellent tuto de jpcheck sur les tables de paramètres.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    responsable de site
    Inscrit en
    Février 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : responsable de site
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2011
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    bonjour

    cette table est ma table principale et dedant j'ai un champ ou je desir mettre ce reference

  4. #4
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Bonjour,

    je te conseille de lire le tuto et de te servir de cette technique pour distribuer un numéro. ce numéro distributeur tu le remettras à 0 à ta convenance chaque mois.

    Dans ta table principale, constitue un champ qui combine ce numéro distribué avec le format que tu as expliqué dans ton post.

    çàd : à chaque création d'un nouveau record dans ta table principale, tu vas lire le numéro distributeur, que tu incrémentes ensuite ou avant, et tu l'utilise pour constituer ton n° de devis.

  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
    Bonjour,

    Ta table => tblClients
    "champ ou je desir mettre ce reference" => TonIncrem
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    If IsNull(Me.TonIncrem) Or Me.TonIncrem = " " Then
        Me.TonIncrem = "VF37/" & Format(Now, "mm/yyyy/") _
        & Format(Nz(DCount("[TonIncrem]", "tblClients", _
        "[TonIncrem] Like '" & "VF37/" _
        & Format(Now, "mm/yyyy/") & "*'"), 0) + 1, "000")
    End If
    Cordialement.

  6. #6
    Futur Membre du Club
    Homme Profil pro
    responsable de site
    Inscrit en
    Février 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : responsable de site
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2011
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Bonsoir

    je suis vraiment debutant en visual basic

    a quel endroit je doit mettre le code que "francishop" ma decrit

    merci a tous pour votre patiente

    philippe

  7. #7
    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,

    Un exemple :
    Une table => tblClients
    Divers Champs
    + un champ texte indexé - Sans doublons
    Que tu baptises => TonIncrem
    Cette table est la source d'un formulaire créé, si besoin à l'aide de l'assistant.
    Sur ce formulaire TonIncrem => Activé =Non

    Formulaire mode création. Afficher les propriétés. (Alt +Entrée)
    Avant mise à jour du formulaire(Avant MAJ) [Procédure évenementielle] :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Form_BeforeUpdate(Cancel As Integer)
        If IsNull(Me.TonIncrem) Or Me.TonIncrem = " " Then
            Me.TonIncrem = "VF37/" & Format(Now, "mm/yyyy/") _
            & Format(Nz(DCount("[TonIncrem]", "tblClients", _
            "[TonIncrem] Like '" & "VF37/" _
            & Format(Now, "mm/yyyy/") & "*'"), 0) + 1, "000")
        End If
    End Sub
    Cordialement.

  8. #8
    Futur Membre du Club
    Homme Profil pro
    responsable de site
    Inscrit en
    Février 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : responsable de site
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2011
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Bonjour

    je viens de suivre votre procedure cela fonctionne pour affiché le N° 001 et l'enregistrement suivant il affiche encore 001 que doitont faire.

    Merci

    Philippe

  9. #9
    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
    Bonjour,
    Fais voir ce code.
    Cordialement.

  10. #10
    Membre éprouvé
    Avatar de keita
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Novembre 2002
    Messages : 881
    Points : 1 121
    Points
    1 121
    Par défaut
    Bonjour
    je suis vraiment debutant en visual basic

    On va s'inspirer du travail déjà proposé par francishop:
    Un exemple :

    Une table => tblClients
    Divers Champs
    + un champ texte indexé - Sans doublons
    Que tu baptises => TonIncrem

    Cette table est la source d'un formulaire créé, si besoin à l'aide de l'assistant.
    Sur ce formulaire TonIncrem => Activé =Non
    tu feras plutot TonIncrem => Activé = Oui et TonIncrem => vérouillé = Oui

    1/ crées un bouton;l'assistant de creation de bouton se lance et demande:
    Que doit il se passer lorsque vous appuyez sur le bouton? ==> suivant.
    souhaitez vous du texte ou une image? ==> texte et taper: Nouveau
    nom du bouton ==> Nouveau
    Terminer
    2/ sur la procedure evenementielle du bouton, on trouve ceci:

    DoCmd.GoToRecord , , acLast

    il faut l'effacer et le remplacer par ce bout de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.TonIncrem = "VF37/" & Format(Now, "mm/yyyy/") & Format(DernierIncrement + 1, "000")
    3/ Après le End Sub du code du bouton, retour chariot et colle cet autre bout de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Function DernierIncrement() As Long   ' pour recuperer le dernier enreg. du mois en cours
        Dim DernierRecu As String, StrSQL As String, Rst As DAO.Recordset, vInc As String
        vInc = "VF37/" & Format(Now, "mm/yyyy/") & "*"
        StrSQL = "SELECT TOP 1 tblClients.* FROM tblClients WHERE (((tblClients.TonIncrem) Like '" & vInc & "')) ORDER BY tblClients.Ref DESC;"
        Set Rst = CurrentDb.OpenRecordset(StrSQL)
        If Rst.RecordCount = 0 Then
            DernierIncrement = 1
            Else
                DernierIncrement = CLng(Right(Rst!TonIncrem, 3)) 
        End If
        Rst.Close
        Set Rst = Nothing
    End Function
    4/ ACCESSOIREMENT
    On pourrait ajouter un autre bouton sur le formulaire:
    l'assistant de creation de bouton se lance et demande:
    Que doit il se passer lorsque vous appuyez sur le bouton? ==> Opérations sur enreg. ==> suivant.
    souhaitez vous du texte ou une image? ==> texte et taper: Ajouter
    nom du bouton ==> Ajouter
    Terminer
    sur la procedure evenementielle du bouton, on trouve ceci:

    DoCmd.GoToRecord , , acLast

    Ajoute la ligne suivante juste après:

    nouveau_Click

    Donc, on doit avoir ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DoCmd.GoToRecord , , acLast
    nouveau_Click
    j'espère que ça marchera.

    @+

  11. #11
    Futur Membre du Club
    Homme Profil pro
    responsable de site
    Inscrit en
    Février 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : responsable de site
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2011
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Bonsoir

    Voici le code que j'ai mis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Form_BeforeUpdate(Cancel As Integer)
        If IsNull(Me.N°_de_Proposition) Or Me.N°_de_Proposition = " " Then
            Me.N°_de_Proposition = "CA37/" & Format(Now, "mm/yy/") _
            & Format(Nz(DCount("[N°_de_Proposition]", "Suivit proposition", _
            "[N°_de_Proposition] Like'" & "CA37/" _
            & Format(Now, "mm/yy/") & "*'"), 27) + 1, "00")
        End If

  12. #12
    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,

    Que vient faire 27 à la place de 0 ?
    Mais quoi qu'il en soit ça devrait marcher tout de même.

    Cordialement.

  13. #13
    Futur Membre du Club
    Homme Profil pro
    responsable de site
    Inscrit en
    Février 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : responsable de site
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2011
    Messages : 13
    Points : 8
    Points
    8
    Par défaut Bonjour
    je vien de retaper le code

    c'est comme si ont avait aucun enregistrement de la table

    merci de votre aides

    Philippe

  14. #14
    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,

    Un exemple => ExemplePhil37.rar

    Cordialement

  15. #15
    Futur Membre du Club
    Homme Profil pro
    responsable de site
    Inscrit en
    Février 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : responsable de site
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2011
    Messages : 13
    Points : 8
    Points
    8
    Par défaut Bonjour
    je n'arrive pas a ouvrir le lien "Un exemple"
    merci de votre aide

    philippe

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

Discussions similaires

  1. Mise à jour automatique sous Access 2003.
    Par RicoNico dans le forum Access
    Réponses: 1
    Dernier message: 28/12/2011, 14h55
  2. Réponses: 2
    Dernier message: 18/06/2009, 11h15
  3. Problemes avec grosseur de requete en VBA sous Access
    Par acheo dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 12/04/2007, 11h58
  4. démarrage automatique 8i sous Windows 2003
    Par pat29 dans le forum Oracle
    Réponses: 6
    Dernier message: 19/02/2007, 13h32
  5. compteur mensuel sous access
    Par nabildjadel dans le forum Access
    Réponses: 8
    Dernier message: 29/10/2004, 01h15

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