Incrémenter le n° de facture Excel [Résolu/Fermé]

Signaler
-
 chibronator -
Bonjour à tous,

Pour commencer je voudrais vous souhaiter une excellente année 2008 qu'elle soit remplie de problèmes résolus!!!

Voilà, j'ai donc mon modèle de facture avec en cellule H8 mon numéro de facture dont voici le format :

mv/08/01000

mv étant les initiales, 08 l'année, 01 le mois, 000, le numéro de facture qui commencera biensur par 0001 et ensuite 002 .....

Je voudrais donc que le numéro de facture s'incrémente de 1 et que le mois s'incrémente aussi de 1 à chaque changement de mois (attention, je fais plusieurs factures le meme mois donc il faut qu'il incrémente le mois lorsque nous sommes le mois suivant uniquement)

Ce qui voudrait dire qu'au mois de mars je pourrais très bien avoir ce genre de n°:

mv/08/03015

Ce qui serait génial c'est que cette macro fonction a chaque copie de feuille il faut savoir que j'ai déjà une macro qui tourne sur cette facture et qui en gros : fait une copie de ma facture modèle, la renomme, et efface certaine zone de la facture modèle (mais pas le numéro de facture )voici le code si cela peut vous etre utilie :

Sub copie_facture()
'
' copie_facture Macro
' copie renome efface facture modèle
'
' Keyboard Shortcut: Ctrl+j
'
Sheets("Facture_Modele").Copy Before:=Sheets(3)
Selection.Copy
Sheets("Facture_Modele (2)").Select
Sheets("Facture_Modele (2)").Name = "00000000000"
Sheets("Facture_Modele").Select
Range("B11:B16").Select ======> plage de cellule ou se trouve le nom du client
Application.CutCopyMode = False
Selection.ClearContents
Range("H7").Select ====> ca c'est la cellule de la date
Selection.ClearContents
Range("detail").Select =====> c'est la plage de cellule que j'ai nommée "détail" (le corps de la facture ou se trouvent les prestations)
Selection.ClearContents

End Sub

D'avance je vous remercie
E

7 réponses

Merci beaucoup,

C'est génial!!!!
Juste une chose lorsque le mois change, l'incrémentation des 3 derniers nombre de la facture doit absolument continuer

par exemple au mois d'avril il est possible que j'ai ce n° de facture

mv/08/04013

Un tout grand merci
E
1
Merci

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

CCM 56917 internautes nous ont dit merci ce mois-ci

Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 102
bonjour

Si tu n'espère pas faire plus de 999 factures, alors :
  
Else
    Range("H8").Value = Left(Range("H8").Value, 6) _
        & Format(Month(Date), "00") & Format(Val(Right(Range("H8").Value, 3)) + 1, "000")   ' mois différent facture + 1
1
Merci

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

CCM 56917 internautes nous ont dit merci ce mois-ci

Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 102
bonjour

Si j'ai bien compris ton désir je te propose de modifier ta macro ainsi :
 Sub copie_facture()
'
' copie_facture Macro
' copie renome efface facture modèle
'
' Keyboard Shortcut: Ctrl+j
'
Sheets("Facture_Modele").Copy Before:=Sheets(3)
ActiveSheet.Name = Replace(Range("H8").Value, "/", "-")     ' le nom de l'onglet n'accepte pas /
Sheets("Facture_Modele").Select
Range("B11:B16").ClearContents
Range("H7").ClearContents
Range("detail").ClearContents
If Val(Mid(Range("H8").Value, 7, 2)) = Month(Date) Then
    Range("H8").Value = Left(Range("H8").Value, 8) _
        & Format(Val(Right(Range("H8").Value, 3)) + 1, "000")   'même mois facture +1
Else
    Range("H8").Value = Left(Range("H8").Value, 6) _
        & Format(Month(Date), "00") & Format(1, "000")   ' mois différent facture 1
End If
End Sub

Pour effacer une zone il est inutile de la sélectionner.
Ton onglet de copie est nommé du N° de facture en remplaçant "/" par "-"

Si tu factures beaucoup, ce que je te souhaite, ton classeur va rapidement prendre une taille importante.
Messages postés
1
Date d'inscription
jeudi 20 mars 2008
Statut
Membre
Dernière intervention
20 mars 2008

Bonjour,
J'aimerais savoir si on ne pourrait pas m'aider...
Je veux incrémenter un numéro de reçu... pour ça pas de pb... en revanche, il faudrait qu'à chaque ouverture du classeur, que les champs à renseigner soient vierges :
en B2 : N° de reçu et j'ai nommé la cellule
et j'aimerais que les lignes de B4 à B11 se réinitialisent et soient vierges après chaque enregistrement.
Est-ce possible?
Si oui merci pour votre apport personnel...
Merci beaucoup. Ca fonctionne très bien
Normalement je devrais avoir en fin d'année entre 25 et max 40 factures. Je travaille plusieurs jours par mois pour le meme clients et donc j'ai en général 2 à 3 factures par mois

Un tout grand merci encore
E
bonjour,

Je voudrais que excel garde une copie de ma facture 110101 (année:11, mois 01 et numéro:01) et un fichiser dans lequel les infos constituants la facture (date, prix HTVA, nom, adresse client, ...) et que quand je l ouvre il crée de suite un nouveau numéro et enregistre les anciennes dnnées.
Est-ce possible?
Messages postés
52041
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
3 août 2020
13 786
NON.

Bonjour,

En partant de cette discussion, je me suis permis d'utiliser le script proposé par gbinforme que je remercie et de le modifier en fonction de ce que je voulais obtenir, à savoir exécuter la macro sur le modèle que j'ai enregistré. Je souhaite que le numéro de facture apparaisse en cellule B4, mais que les numéros de factures se suivent sur l'année et reparte à zéro l'année suivante. et non chaque mois.
La macro sera adaptée à chaque client.
Le problème qui se passe est que le numéro n'évolue pas lorsque je rouvre le document., ce qui est un souci, car cela créée des factures différentes avec le même numéro.
Auriez vous une solution à m'apporter.
Merci par avance de votre aide.

Voici le script modifié pour ma facture

Sub Numéro_Facture()
'
'
'
'
'
Range("E18:E30").ClearContents

If Val(Mid(Range("B4").Value, 7, 2)) = Year(Date) Then
Range("B4").Value = "DGB-"
Range("B4").Value = Left(Range("B4").Value, 8) _
& Format(Val(Right(Range("B4").Value, 3)) + 1, "000") 'même mois facture +1

Else
Range("B4").Value = "DGB-"
Range("B4").Value = Left(Range("B4").Value, 6) _
& Format(Year(Date), "00") & Format(1, "000") ' année différente facture 1
End If
End Sub
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 102
Bonjour chibronator,

le numéro n'évolue pas lorsque je rouvre le document

Il faut bien sûr rajouter la sauvegarde de ton modèle pour que le numéro évolue à ta convenance.
Messages postés
23404
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
2 août 2020
6 276
Bonjour,

après avoir modifié il faut que tu enregistres ton modèle .xlt pour sauvegarder le dernier n° de facture, puis que tu ré-enregistres en .xls que le format soit correct pour l'utilisateur.

C'est peut-être plus simple d'utiliser un fichier texte annexe pour mémoriser le dernier n° de facture.
Ex qui peut te servir de base : https://www.cjoint.com/c/DCojXE2zVjm

eric

J'enregistre le modèle en fichier excel prenant en charge les macros (je fonctionne avec office 2010). Je ferme le fichier, puis le réouvre pour vérifier que le script fonctionne automatiquement à l'ouverture.
Ai-je oublié une écriture dans le script ou une étape dans la création de la macro?
Ou ai je un cerveau tellement blond que je ne vois pas ce que je suis censé faire? lol.
Merci pour votre réactivité dans vos premières réponses.
Messages postés
23404
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
2 août 2020
6 276
Il faut appeler ta macro de fabrication du n° de facture à l'ouverture du fichier.
C'est l'évènement Private Sub Workbook_Open() dans ThisWorkbook.

eric

Merci de vos aides qui m'ont été très utiles.

En rajoutant le workbook et en modifiant encore quelques peu le code, le script fonctionne et génère mes numéros de factures idéalement.

Encore merci.
Messages postés
1
Date d'inscription
jeudi 19 juin 2008
Statut
Membre
Dernière intervention
19 juin 2008

Bonjour,

J'ai lu ton post et je suis très interessée par ta macro, c'est tout a fait ce que je recherche mais je n'arrive pas à la réaliser, il faut dire que je n'y connait rien en VBA, mais rien de rien. Si quelqu'un pouvait m'envoyer une feuille avec la macro, ce serai formidable.
Merci
A tous, EXCELlente journée.
Messages postés
1664
Date d'inscription
mardi 22 janvier 2008
Statut
Membre
Dernière intervention
30 avril 2012
486
Bonjour.

Regarde ici post41.