OVH Cloud OVH Cloud

Conception Num de Facture

11 réponses
Avatar
Bruno Frisque
Bonjour le groupe.

Je prépare un petit programme de facturation, qui ne fonctionnera que durant
des expositions.

Mon problème est le numéro de facture, qui doit être consécutif (incrémenté
de 1).

Je dois donc demander à l'ouverture : Premier N° de facture souhaité.
Une fois ce numéro dans une table PremNumFact : comment créer un AutoNumber
qui démarre à partir de ce numéro ?

D'avance grand merci

10 réponses

1 2
Avatar
Eric
Bonsoir,

Une idée sous réserve que la base est mono-utilisateur.
Une fois le 1er n° stocké dans la table, à chaque création de facture et
édition, sauver le n° dans la table où vous avez stocké le premier n° en
écrasant l'ancien.
Pour récupérer le nouveau n° pour une nouvelle facture, faire un
DMax("PremierNuméro","TableDuPremierNuméro") + 1

Bonjour le groupe.

Je prépare un petit programme de facturation, qui ne fonctionnera que durant
des expositions.

Mon problème est le numéro de facture, qui doit être consécutif (incrémenté
de 1).

Je dois donc demander à l'ouverture : Premier N° de facture souhaité.
Une fois ce numéro dans une table PremNumFact : comment créer un AutoNumber
qui démarre à partir de ce numéro ?

D'avance grand merci


--
A+
Eric
http://users.skynet.be/mpfa/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Fred
Le prochain numéro de facture sera le plus grand numéro +1
donc, le nouveau numéro sera en VBA :
dmax("[NoFacture]","TableFactures")+1

C'est tout

Fred

"Bruno Frisque" a écrit dans le message de news:
%
Bonjour le groupe.

Je prépare un petit programme de facturation, qui ne fonctionnera que
durant
des expositions.

Mon problème est le numéro de facture, qui doit être consécutif
(incrémenté
de 1).

Je dois donc demander à l'ouverture : Premier N° de facture souhaité.
Une fois ce numéro dans une table PremNumFact : comment créer un
AutoNumber
qui démarre à partir de ce numéro ?

D'avance grand merci






Avatar
Jessy Sempere [MVP]
Bonjour

Y'a bien longtemps, j'avais fais un p'tit code permettant de générer des
numéro
auto et d'éviter les saut de numéro auto suite à des suppression...

Voici ces 2 vieux bout de code :
***************************************************************
Public Function NumAuto(strTbl, strForm, strFldAuto)
'Génère une nouveau NumAuto
Dim rst As Recordset
Dim lngRecord As Long
lngRecord = 0
If Forms(strForm).Controls(strFldAuto) = 0 Then
Set rst = CurrentDb.OpenRecordset(strTbl, dbOpenDynaset)
With rst
If Not .BOF Then .MoveLast: lngRecord = .Fields(strFldAuto)
End With
Forms(strForm).Controls(strFldAuto) = lngRecord + 1
End If

End Function

Public Function UpDateNumAuto(strTbl, strFldAuto)

'Mise à jour des NumAuto
Dim rst As DAO.Recordset
Dim lngNbreRecord As Long
Dim lngNumAuto As Long
Dim lngTmpNumAuto As Long

Set rst = CurrentDb.OpenRecordset(strTbl, dbOpenDynaset)

With rst
If Not .BOF Then
.MoveLast
lngNumAuto = .Fields(strFldAuto)
lngNbreRecord = .RecordCount
If lngNumAuto = lngNbreRecord Then Exit Function
.MoveFirst
lngTmpNumAuto = 0
Do Until .EOF
lngNumAuto = .Fields(strFldAuto)
If lngNumAuto > lngTmpNumAuto + 1 Then
.Edit
.Fields(strFldAuto) = lngTmpNumAuto + 1
.Update
End If
lngTmpNumAuto = lngTmpNumAuto + 1
.MoveNext
Loop
End If
End With

End Function
***************************************************************

--
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Bruno Frisque" a écrit dans le message de
news:%
Bonjour le groupe.

Je prépare un petit programme de facturation, qui ne fonctionnera que
durant

des expositions.

Mon problème est le numéro de facture, qui doit être consécutif
(incrémenté

de 1).

Je dois donc demander à l'ouverture : Premier N° de facture souhaité.
Une fois ce numéro dans une table PremNumFact : comment créer un
AutoNumber

qui démarre à partir de ce numéro ?

D'avance grand merci






Avatar
Bruno Frisque
Tout grand merci à tous !
Je vais "tenter" tout çà .

encore merci à vous
et à bientôt ici sûrement.



"Jessy Sempere [MVP]" wrote in message
news:437afb76$
Bonjour

Y'a bien longtemps, j'avais fais un p'tit code permettant de générer des
numéro
auto et d'éviter les saut de numéro auto suite à des suppression...

Voici ces 2 vieux bout de code :
***************************************************************
Public Function NumAuto(strTbl, strForm, strFldAuto)
'Génère une nouveau NumAuto
Dim rst As Recordset
Dim lngRecord As Long
lngRecord = 0
If Forms(strForm).Controls(strFldAuto) = 0 Then
Set rst = CurrentDb.OpenRecordset(strTbl, dbOpenDynaset)
With rst
If Not .BOF Then .MoveLast: lngRecord = .Fields(strFldAuto)
End With
Forms(strForm).Controls(strFldAuto) = lngRecord + 1
End If

End Function

Public Function UpDateNumAuto(strTbl, strFldAuto)

'Mise à jour des NumAuto
Dim rst As DAO.Recordset
Dim lngNbreRecord As Long
Dim lngNumAuto As Long
Dim lngTmpNumAuto As Long

Set rst = CurrentDb.OpenRecordset(strTbl, dbOpenDynaset)

With rst
If Not .BOF Then
.MoveLast
lngNumAuto = .Fields(strFldAuto)
lngNbreRecord = .RecordCount
If lngNumAuto = lngNbreRecord Then Exit Function
.MoveFirst
lngTmpNumAuto = 0
Do Until .EOF
lngNumAuto = .Fields(strFldAuto)
If lngNumAuto > lngTmpNumAuto + 1 Then
.Edit
.Fields(strFldAuto) = lngTmpNumAuto + 1
.Update
End If
lngTmpNumAuto = lngTmpNumAuto + 1
.MoveNext
Loop
End If
End With

End Function
***************************************************************

--
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Bruno Frisque" a écrit dans le message de
news:%
Bonjour le groupe.

Je prépare un petit programme de facturation, qui ne fonctionnera que
durant

des expositions.

Mon problème est le numéro de facture, qui doit être consécutif
(incrémenté

de 1).

Je dois donc demander à l'ouverture : Premier N° de facture souhaité.
Une fois ce numéro dans une table PremNumFact : comment créer un
AutoNumber

qui démarre à partir de ce numéro ?

D'avance grand merci










Avatar
Bruno Frisque
Merci !
Mais comment faire pour écraser l'ancien NumFact par code ?

Quelque chose comme
Forms!PemierNumfact!Premiernumfact = LeNouveau num donne une erreur ..
(même si le form PremierNumFact est ouvert et caché.

D'avance merci





"Eric" wrote in message
news:%
Bonsoir,

Une idée sous réserve que la base est mono-utilisateur.
Une fois le 1er n° stocké dans la table, à chaque création de facture et
édition, sauver le n° dans la table où vous avez stocké le premier n° en
écrasant l'ancien.
Pour récupérer le nouveau n° pour une nouvelle facture, faire un
DMax("PremierNuméro","TableDuPremierNuméro") + 1

Bonjour le groupe.

Je prépare un petit programme de facturation, qui ne fonctionnera que
durant


des expositions.

Mon problème est le numéro de facture, qui doit être consécutif
(incrémenté


de 1).

Je dois donc demander à l'ouverture : Premier N° de facture souhaité.
Une fois ce numéro dans une table PremNumFact : comment créer un
AutoNumber


qui démarre à partir de ce numéro ?

D'avance grand merci


--
A+
Eric
http://users.skynet.be/mpfa/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr



Avatar
Thierry 555
Bonjour,

Plus pratique de le stocké dans un table local par ajout et ensuite de
l'incrémanter de 1 par un macro à l'ouverture de la nouvelle facture.
On efface ensuite la table local temporaire et le tour et joué.

Bon job

Thierry


"Bruno Frisque" a écrit dans le message de news:

Merci !
Mais comment faire pour écraser l'ancien NumFact par code ?

Quelque chose comme
Forms!PemierNumfact!Premiernumfact = LeNouveau num donne une erreur
..
(même si le form PremierNumFact est ouvert et caché.

D'avance merci





"Eric" wrote in message
news:%
Bonsoir,

Une idée sous réserve que la base est mono-utilisateur.
Une fois le 1er n° stocké dans la table, à chaque création de facture et
édition, sauver le n° dans la table où vous avez stocké le premier n° en
écrasant l'ancien.
Pour récupérer le nouveau n° pour une nouvelle facture, faire un
DMax("PremierNuméro","TableDuPremierNuméro") + 1

Bonjour le groupe.

Je prépare un petit programme de facturation, qui ne fonctionnera que
durant


des expositions.

Mon problème est le numéro de facture, qui doit être consécutif
(incrémenté


de 1).

Je dois donc demander à l'ouverture : Premier N° de facture souhaité.
Une fois ce numéro dans une table PremNumFact : comment créer un
AutoNumber


qui démarre à partir de ce numéro ?

D'avance grand merci


--
A+
Eric
http://users.skynet.be/mpfa/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr







Avatar
Bruno Frisque
Merci !
Le tour est joué ??
Oui mais comment ajouter les numfact dans la table par code ??
Cette table n'est pas ouverte.
Avec Docmd. ajouter "NewNumFact" dans table PremierNumFact ??

Merci



"Thierry 555" wrote in message
news:%
Bonjour,

Plus pratique de le stocké dans un table local par ajout et ensuite de
l'incrémanter de 1 par un macro à l'ouverture de la nouvelle facture.
On efface ensuite la table local temporaire et le tour et joué.

Bon job

Thierry


"Bruno Frisque" a écrit dans le message de news:

Merci !
Mais comment faire pour écraser l'ancien NumFact par code ?

Quelque chose comme
Forms!PemierNumfact!Premiernumfact = LeNouveau num donne une erreur
..
(même si le form PremierNumFact est ouvert et caché.

D'avance merci





"Eric" wrote in message
news:%
Bonsoir,

Une idée sous réserve que la base est mono-utilisateur.
Une fois le 1er n° stocké dans la table, à chaque création de facture
et



édition, sauver le n° dans la table où vous avez stocké le premier n°
en



écrasant l'ancien.
Pour récupérer le nouveau n° pour une nouvelle facture, faire un
DMax("PremierNuméro","TableDuPremierNuméro") + 1

Bonjour le groupe.

Je prépare un petit programme de facturation, qui ne fonctionnera que
durant


des expositions.

Mon problème est le numéro de facture, qui doit être consécutif
(incrémenté


de 1).

Je dois donc demander à l'ouverture : Premier N° de facture souhaité.
Une fois ce numéro dans une table PremNumFact : comment créer un
AutoNumber


qui démarre à partir de ce numéro ?

D'avance grand merci


--
A+
Eric
http://users.skynet.be/mpfa/
Archives :
http://groups.google.fr/group/microsoft.public.fr.access?hl=fr













Avatar
Bruno Frisque
J'ai fait ceci :

If Me.NewRecord Then
DoCmd.OpenForm "PremierNumFact", acFormDS, , , acFormAdd
Forms!PremierNumFact!PremierNumFact = Text149 + 1
DoCmd.Close acForm, "PremierNumFact", acSaveYes
End If

Cà à l'air ok sauf qu'à chaque Aperçu facture il incrémente le NumFact !!

merci encore



"Bruno Frisque" wrote in message
news:
Merci !
Le tour est joué ??
Oui mais comment ajouter les numfact dans la table par code ??
Cette table n'est pas ouverte.
Avec Docmd. ajouter "NewNumFact" dans table PremierNumFact ??

Merci



"Thierry 555" wrote in message
news:%
Bonjour,

Plus pratique de le stocké dans un table local par ajout et ensuite de
l'incrémanter de 1 par un macro à l'ouverture de la nouvelle facture.
On efface ensuite la table local temporaire et le tour et joué.

Bon job

Thierry


"Bruno Frisque" a écrit dans le message de news:

Merci !
Mais comment faire pour écraser l'ancien NumFact par code ?

Quelque chose comme
Forms!PemierNumfact!Premiernumfact = LeNouveau num donne une
erreur



..
(même si le form PremierNumFact est ouvert et caché.

D'avance merci





"Eric" wrote in message
news:%
Bonsoir,

Une idée sous réserve que la base est mono-utilisateur.
Une fois le 1er n° stocké dans la table, à chaque création de facture
et



édition, sauver le n° dans la table où vous avez stocké le premier n°
en



écrasant l'ancien.
Pour récupérer le nouveau n° pour une nouvelle facture, faire un
DMax("PremierNuméro","TableDuPremierNuméro") + 1

Bonjour le groupe.

Je prépare un petit programme de facturation, qui ne fonctionnera
que





durant
des expositions.

Mon problème est le numéro de facture, qui doit être consécutif
(incrémenté


de 1).

Je dois donc demander à l'ouverture : Premier N° de facture
souhaité.





Une fois ce numéro dans une table PremNumFact : comment créer un
AutoNumber


qui démarre à partir de ce numéro ?

D'avance grand merci


--
A+
Eric
http://users.skynet.be/mpfa/
Archives :
http://groups.google.fr/group/microsoft.public.fr.access?hl=fr


















Avatar
3stone
Salut,

"Bruno Frisque"
| Je prépare un petit programme de facturation, qui ne fonctionnera que durant
| des expositions.
|
| Mon problème est le numéro de facture, qui doit être consécutif (incrémenté
| de 1).
|
| Je dois donc demander à l'ouverture : Premier N° de facture souhaité.
| Une fois ce numéro dans une table PremNumFact : comment créer un AutoNumber
| qui démarre à partir de ce numéro ?



Comme le numéro facture ne peut avoir de "trou" tu ne peux donc pas
utiliser un simple "Numéroauto" !

Comme Eric te l'a indiqué, le mieux est d'utiliser un DMax() +1

Pour "démarrer" sur une table vide, mais a partir d'un certain numéro,
tu utilise la fonction Nz() qui doit de toute façon être utilisée sur
une table vide :

NoFacture = Nz(DMax("NoFact","Factures"),1000)+1

pour démarrer à 1001...


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
Eric
Bonsoir Bruno,

La TableDuPremierNuméro ne contient qu'un champ et un seul enregistrement.
Donc sur l'évènement clic du bouton qui valide la facture que tu vas
ensuite éditer, tu peux mettre :
Dim strSQL as String
strSQL = "Update TableDuPremierNuméro Set PremierNuméro=" &
Me!NumFacture & ";"
CurrentDb.Execute strSQL

Le NumFacture ayant été obtenu par le
DMax("PremierNuméro","TableDuPremierNuméro") + 1 à la création de la
facture.

Ok ?

Merci !
Mais comment faire pour écraser l'ancien NumFact par code ?

Quelque chose comme
Forms!PemierNumfact!Premiernumfact = LeNouveau num donne une erreur ..
(même si le form PremierNumFact est ouvert et caché.

D'avance merci





"Eric" wrote in message
news:%

Bonsoir,

Une idée sous réserve que la base est mono-utilisateur.
Une fois le 1er n° stocké dans la table, à chaque création de facture et
édition, sauver le n° dans la table où vous avez stocké le premier n° en
écrasant l'ancien.
Pour récupérer le nouveau n° pour une nouvelle facture, faire un
DMax("PremierNuméro","TableDuPremierNuméro") + 1


Bonjour le groupe.

Je prépare un petit programme de facturation, qui ne fonctionnera que



durant

des expositions.

Mon problème est le numéro de facture, qui doit être consécutif



(incrémenté

de 1).

Je dois donc demander à l'ouverture : Premier N° de facture souhaité.
Une fois ce numéro dans une table PremNumFact : comment créer un



AutoNumber

qui démarre à partir de ce numéro ?

D'avance grand merci


--
A+
Eric
http://users.skynet.be/mpfa/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr






--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr



1 2