Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/02/2011, 21h30   #1
Invité de passage
 
Philippe
Inscription : février 2011
Messages : 9
Détails du profil
Informations personnelles :
Nom : Philippe

Informations forums :
Inscription : février 2011
Messages : 9
Points : 0
Points : 0
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
Phil37 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2011, 10h02   #2
Expert Confirmé
 
Avatar de Godzestla
 
Homme
Chercheur de bonheur
Inscription : août 2007
Messages : 2 255
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 47
Localisation : Belgique

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

Informations forums :
Inscription : août 2007
Messages : 2 255
Points : 2 979
Points : 2 979
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.
__________________
(\ _ /) Cordialement G@dz
(='.'=)

(")-(") Vous avez des neurones. Sollicitez-les. . Si vous êtes aidé, pensez à Voter.
Godzestla est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2011, 12h48   #3
Invité de passage
 
Philippe
Inscription : février 2011
Messages : 9
Détails du profil
Informations personnelles :
Nom : Philippe

Informations forums :
Inscription : février 2011
Messages : 9
Points : 0
Points : 0
bonjour

cette table est ma table principale et dedant j'ai un champ ou je desir mettre ce reference
Phil37 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2011, 14h36   #4
Expert Confirmé
 
Avatar de Godzestla
 
Homme
Chercheur de bonheur
Inscription : août 2007
Messages : 2 255
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 47
Localisation : Belgique

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

Informations forums :
Inscription : août 2007
Messages : 2 255
Points : 2 979
Points : 2 979
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.
__________________
(\ _ /) Cordialement G@dz
(='.'=)

(")-(") Vous avez des neurones. Sollicitez-les. . Si vous êtes aidé, pensez à Voter.
Godzestla est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2011, 15h54   #5
Membre Expert
 
Inscription : mars 2006
Messages : 1 331
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 1 331
Points : 1 460
Points : 1 460
Bonjour,

Ta table => tblClients
"champ ou je desir mettre ce reference" => TonIncrem
Code :
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.
__________________
Questions techniques par MP
Le peu que je sais, c'est à mon ignorance que je le dois.
...............................................................................Sacha Guitry
francishop est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2011, 18h27   #6
Invité de passage
 
Philippe
Inscription : février 2011
Messages : 9
Détails du profil
Informations personnelles :
Nom : Philippe

Informations forums :
Inscription : février 2011
Messages : 9
Points : 0
Points : 0
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
Phil37 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2011, 01h18   #7
Membre Expert
 
Inscription : mars 2006
Messages : 1 331
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 1 331
Points : 1 460
Points : 1 460
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 :
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.
__________________
Questions techniques par MP
Le peu que je sais, c'est à mon ignorance que je le dois.
...............................................................................Sacha Guitry
francishop est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 25/02/2011, 12h35   #8
Invité de passage
 
Philippe
Inscription : février 2011
Messages : 9
Détails du profil
Informations personnelles :
Nom : Philippe

Informations forums :
Inscription : février 2011
Messages : 9
Points : 0
Points : 0
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
Phil37 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2011, 16h01   #9
Membre Expert
 
Inscription : mars 2006
Messages : 1 331
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 1 331
Points : 1 460
Points : 1 460
Bonjour,
Fais voir ce code.
Cordialement.
__________________
Questions techniques par MP
Le peu que je sais, c'est à mon ignorance que je le dois.
...............................................................................Sacha Guitry
francishop est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2011, 16h12   #10
Membre Expert
 
Avatar de keita
 
Homme
Inscription : novembre 2002
Messages : 879
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Côte d'Ivoire

Informations forums :
Inscription : novembre 2002
Messages : 879
Points : 1 015
Points : 1 015
Envoyer un message via MSN à keita
Bonjour
Citation:
je suis vraiment debutant en visual basic

On va s'inspirer du travail déjà proposé par francishop:
Citation:
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 :
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 :
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 :
1
2
DoCmd.GoToRecord , , acLast
nouveau_Click
j'espère que ça marchera.

@+
keita est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2011, 17h42   #11
Invité de passage
 
Philippe
Inscription : février 2011
Messages : 9
Détails du profil
Informations personnelles :
Nom : Philippe

Informations forums :
Inscription : février 2011
Messages : 9
Points : 0
Points : 0
Bonsoir

Voici le code que j'ai mis

Code :
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
Phil37 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2011, 18h59   #12
Membre Expert
 
Inscription : mars 2006
Messages : 1 331
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 1 331
Points : 1 460
Points : 1 460
Bonsoir,
Que vient faire 27 à la place de 0 ?
Mais quoi qu'il en soit ça devrait marcher tout de même.

Cordialement.
__________________
Questions techniques par MP
Le peu que je sais, c'est à mon ignorance que je le dois.
...............................................................................Sacha Guitry
francishop est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2011, 13h30   #13
Invité de passage
 
Philippe
Inscription : février 2011
Messages : 9
Détails du profil
Informations personnelles :
Nom : Philippe

Informations forums :
Inscription : février 2011
Messages : 9
Points : 0
Points : 0
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
Phil37 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2011, 22h44   #14
Membre Expert
 
Inscription : mars 2006
Messages : 1 331
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 1 331
Points : 1 460
Points : 1 460
Bonsoir,

Un exemple => ExemplePhil37.rar

Cordialement
__________________
Questions techniques par MP
Le peu que je sais, c'est à mon ignorance que je le dois.
...............................................................................Sacha Guitry
francishop est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 24/05/2011, 12h39   #15
Invité de passage
 
Philippe
Inscription : février 2011
Messages : 9
Détails du profil
Informations personnelles :
Nom : Philippe

Informations forums :
Inscription : février 2011
Messages : 9
Points : 0
Points : 0
Par défaut Bonjour

je n'arrive pas a ouvrir le lien "Un exemple"
merci de votre aide

philippe
Phil37 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h04.


 
 
 
 
Partenaires

Hébergement Web