Incrémenter des numéros de factures [Fermé]

Signaler
-
Messages postés
1
Date d'inscription
mercredi 5 décembre 2012
Statut
Membre
Dernière intervention
5 décembre 2012
-
Bonjour,

J'ai un problème avec Excel. Je travaille régulièrement sur des factures et j'aimerais incrémenter les numéros de factures automatiquement après chaque enregistrement (ancien numéro + 1). Comment faire ?

Merci d'avance pour votre aide.

8 réponses

Messages postés
1057
Date d'inscription
jeudi 2 décembre 2004
Statut
Membre
Dernière intervention
16 juin 2014
132
Bonjour,

ça me rappelle un exercice que j'avais fait à l'école, malheureusement c'est bien loin tout ça, je pencherais pour l'option faire du code en vba..

à creuser..
2
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 57060 internautes nous ont dit merci ce mois-ci

Merci quand même pour ta réponse.
Je suis de ton avis, je pense qu'il faut utiliser une macro VBA. J'ai fait un essai non concluant, mais je ne désespère pas.
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 102
bonjour

je ne sais pas si tu as trouvé ta solution mais je te propose celle-ci :

dans ta feuille, tu nommes la cellule qui contient le numéro de facture :
"no_facture" pour mon exemple mais tu peux choisir un autre nom.


avec ALT + F11 tu ouvres VBA et dans thisworkbook tu copies cette macro :

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Range("no_facture").Value = Range("no_facture").Value + 1
End Sub


à chaque fois que tu va sauver ton classeur, ton numéro de facture
est automatiquement incrémenté.

il me semble que c'était bien ce que tu voulais ?
C'est génial, ça marche !!!

Je n'avais pas encore trouvé la solution, mais grâce à toi, c'est fait.
Merci beaucoup pour ton aide, c'est exactement ce que je voulais.
Bonjour, je suis désolée de m'interposer de la sorte dans la discussion mais j'ai trouvé presque'exactement ce que je voulais dans ton énoncé. Sauf que mon numéro de facture comporte au début 4 lettres, du genre ABEF20080001. Je devrais donc extraire les quatres derniers chiffres auxquels je devrais rajouter 1. Est-ce que tu peux m'aider. merci et bonne journée
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 102 > Émilie
bonjour

Il suffit de mettre ce code et cela fonctionnera comme tu le souhaites.
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Range("no_facture").Value = Left(Range("no_facture").Value, 8) _
        & Format(Right(Range("no_facture").Value, 4) + 1, "0000")
End Sub
hello,
franchement super ton vba !
est il possible de faire pareil pour incrément les onglets, exemple : j'ai un onglet qui s'appelle facture 1 en la copiant j'aimerais que l'onglet (nom de la feuille) s'incrémente automatiquement.
Merci d'avance,
must
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 102
bonjour

Pourrais-tu détailler un peu la procédure que tu utilises.

Si tu crées une nouvelle feuille il est possible de lui donner un nom particulier en VBA et éventuellement de copier une feuille.

Si tu fais une copie de feuille ce n'est pas un événement.
Bonjour

J'ai un petit souci, la macro faite par un internaute via ce forum fonctionne mais lorsque je souhaite incrémenter un nouveau numéro en repartant sur une nouvelle facture à paritr de mon modèle et en appuyant sur le bouton "incrmenter numéro" il me déclanche un numéro suivant : 10.09.01.1900 sachant que je souhaite que ma numérotation commence toujours par le n°.j.m.a par exemple n° 51.2.03.09 et ainsi de suite en tenant bien compte du jour et du mois. Je pense qu'en principe excel peu tenir compte de jour en question même si il y a une ou plusieurs factures dans la même journée ou si nous changeons de journée, par exemple : 51.2.03.09 puis
52.2.03.09 par contre 53.3.03.09.

D'autre part j'ai créé un bouton "nouvelle facture" afin qu'en cliquant sur ce bouton j'arrive directement sur mon modèle.

Pouvez-vous m'aider car je bloque complètement, ci-joint le fichier excel : https://www.cjoint.com/?ddlSsqfOIh

Par avance je vous remercie.
KIKI53
Messages postés
1
Date d'inscription
mercredi 5 décembre 2012
Statut
Membre
Dernière intervention
5 décembre 2012

Bonjour, es ce possible d'avoir ton fichier Excel pour voir comment cela fonction, merci
merci d'avance deme permettre de poser la question
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 102
bonjour

Ta codification est presque correcte et si tu changes cette ligne, cela devrait mieux te convenir.
    nFact = Num & "." & Format(Date, "dd.mm.yyyy")

En fait, pour obtenir le formatage du jour de facture, il faut que tu utilises la date du jour et non ton numéro car lui ne contient en aucune façon la date.
Messages postés
1
Date d'inscription
vendredi 17 juillet 2009
Statut
Membre
Dernière intervention
17 juillet 2009

Bonjour,
J'ai trouvé pour incrementer un n° auto pour chaque facture dans un nouveau classeur mais ils commencent par 1
Comment je pourrai faire pour incrementer un n° de facture commençant par 2000 en VBA

Merci beaucoup pour votre aide .
Messages postés
3
Date d'inscription
mercredi 3 février 2010
Statut
Membre
Dernière intervention
10 février 2010

en access 2007 j'ai fait Une table tblFacture qui regroupe les factures établies par le service commercial.
• Les factures seront numérotées : FAYYMMXXX de telle sorte que pour chaque mois (MM) de
l'année (YY) un compteur (XXX) soit incrémenté à partir de 1 à chaque nouveau mois, la valeur du champ Indice redémarre à 1. La mise en forme du numéro de facture peut alors être obtenu à l'aide de l'expression suivante :

="FA" & Format([DateFacture];"yymm") & Format([Indice];"000")

mon code VBA est le suivant tt marche bien sauf que le résultat obtenu n'affiche pas l'année par exemple ds le mois 01 de l'année 2010 j'obtient "FAyy01001" pouvez me donner une rep!!! il est ou le prob.???

CODE EN VBA:

Private Sub Form_BeforeUpdate(Cancel As Integer)
Dim oRst As DAO.Recordset
If Me.NewRecord Then
Set oRst = CurrentDb.OpenRecordset( _
"SELECT Max(Indice) FROM tblFacture_ac2007 WHERE Format(DateFacture,""yymm"")=" & _
Chr(34) & Format(Me.DateFacture, "yymm") & Chr(34))
With oRst
If Not .EOF Then
Me![Indice].Value = Nz(.Fields(0).Value, 0) + 1
Else
Me![Indice].Value = 1
End If
.Close
End With
End If
End Sub