comment crée un numéro de fascture automatique

patrick965

XLDnaute Impliqué
bonjour les ami(e)s
je fais des recherches mais en vain
je recherche a faire sur ma fiche Excel que je joint un numéro de facture qui lorsque j'ouvre une nouvelle feuille vierge un nouveau numéro de facture sera automatiquement inscrit .
j'aimerais que dans ce numéro de facture on y retrouve la date du jour. exemple ; j'ouvre une nouvelle facture et par exemple in est inscrit 140620140001 lorsque j'ouvre une nouvelle le même jour elle inscrira par exemple 140620140002
si par exemple 2 jour passe et Jai une nouvelle facture a crée j'ouvre ma nouvelle page et il sera inscrit 160620140003 .
je veux que la date du jour change mais aussi le numéro a la fin 0001 augmente de 1 a chaque nouvelle ouverture d'une nouvelle facture .
je veut par exemple que lorsque l'année change le numéro 0001 par exemple recommence a 0001

mais....
je veux que lorsque jais enregistrer ma facture dans une fiche client je veux que la date et le numéro ne change plus a chaque jour ou chaque ouverture .


merci beaucoup...
 

Pièces jointes

  • FACTURATION LA SOLUTIONPAT HABITATION TEST.xlsx
    50.6 KB · Affichages: 74

job75

XLDnaute Barbatruc
Re : comment crée un numéro de fascture automatique

Re,

Les factures sont dans les sous-dossiers créés, il suffit de faire un double-clic dessus.

Quant au fichier Numero_Facture, il ne sert qu'à stocker le numéro de la dernière facture créée.

Il ne faut pas y toucher, c'est pour ça qu'il y a un mot de passe :rolleyes:

A+
 

patrick965

XLDnaute Impliqué
Re : comment crée un numéro de fascture automatique

bonsoir job
je te remercie pour ta réponse
le problème est pour ce qui est des sous dossier c'est exactement ce que je ne trouve pas il ces crée a la même endroit ou j'ai enregistrer la facture vierge un fichier numéro de facture qui je comprend bien que nous devon pas y toucher mais il na rien d'autre de crée quand jais enregistrer la facture il a le numéro qui est apparue dans le fichier numéro de facture et c'est tout je ne voie aucun sous dossier .
merci de prendre le temps de m'expliquer ou ce cache mais facture ;).
 

job75

XLDnaute Barbatruc
Re : comment crée un numéro de fascture automatique

Bonjour Patrick, le forum,

Attention j'ai bien dit dans le code que le nom est déterminé en cellule C10 :

'à partir du 5ème caractère...

Il faut donc qu'en C10 il y ait l'inscription Nom: sans espace entre "Nom" et les 2 points.

Et il ne faut pas non plus qu'il y ait Nom et prénom:

Sinon l'enregistrement ne peut pas se faire car le caractère : (2 points) est interdit dans les noms de fichiers.

A+
 

job75

XLDnaute Barbatruc
Re : comment crée un numéro de fascture automatique

Re,

Bon j'ai modifié le code pour éviter tout problème avec les 2 points :

Code:
Dim numero$, NomMemo$ 'mémorisation des variables

Sub EnregistrerModifications()
'Alt+F8 pour exécuter la macro (la feuille doit être vierge)
'évite de déclencher la macro Workbook_BeforeSave
Application.EnableEvents = False
Me.Save
Application.EnableEvents = True
End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Source As Range)
'interdit la modification du numéro de facture et du nom enregistré
Application.EnableEvents = False
With Sheets("Facture de service")
  .[F4] = numero
  If NomMemo <> "" Then .[C10] = NomMemo
End With
  Application.EnableEvents = True
End Sub

Private Sub Workbook_Open()
Dim n As Variant, chemin$, nomfich$
Sheets("Facture de service").Activate 'au cas où...
'---date du jour---
[F5] = Date
'---numéro de facture---
chemin = Me.Path & "\" 'chemin du dossier à adapter
nomfich = Dir(chemin & "Numero_Facture.xls*")
If nomfich <> "" Then
  n = ExecuteExcel4Macro("'" & chemin & "[" & nomfich & "]Feuil1'!R1C1")
  n = IIf(Left(n, 4) = CStr(Year(Date)), Val(Mid(n, 9, 4)), 0)
End If
numero = "'" & Format(Date, "yyyymmdd") & Format(n + 1, "0000")
[F4] = numero
End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUi As Boolean, Cancel As Boolean)
Dim nom$, chemin$, wb As Workbook
Cancel = True 'rend impossible l'enregistrement manuel
With Sheets("Facture de service")
  nom = Application.Trim(Replace(Replace(.[C10], "Nom", ""), ":", ""))
  nom = Application.Proper(nom) 'majuscule en tête pour le classement
  If nom = "" Then
    MsgBox "Le nom n'a pas été entré..."
    .[C10].Select
  Else
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    chemin = Me.Path & "\" 'chemin du dossier à adapter
    '---création du fichier facture---
    Set wb = Workbooks.Add(xlWBATWorksheet)
    .Copy After:=wb.Sheets(1)
    wb.Sheets(1).Delete
    wb.Sheets(1).Name = .[F4]
    On Error Resume Next
    MkDir chemin & nom 'création du sous-dossier s'il n'existe pas
    wb.SaveAs chemin & nom & "\" & .[F4] 'enregistrement
    wb.Close
    NomMemo = .[C10] 'mémorisation
    '---mémorisation du numéro de facture---
    Workbooks("Numero_Facture").Close False 'si le fichier est ouvert
    Set wb = Workbooks.Add(xlWBATWorksheet)
    .[F4].Copy wb.Sheets(1).[A1]
    wb.Sheets(1).Protect "TOTO" 'mot de passe à adapter
    wb.SaveAs chemin & "Numero_Facture" 'enregistrement
    wb.Close
  End If
End With
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Me.Saved = True 'évite l'invite
End Sub
La ligne modifiée est celle-ci :

Code:
nom = Application.Trim(Replace(Replace(.[C10], "Nom", ""), ":", ""))
Fichier (5).

A+
 

Pièces jointes

  • Création d'une facture(5).xls
    82.5 KB · Affichages: 49
  • Création d'une facture(5).xlsm
    56.4 KB · Affichages: 51

patrick965

XLDnaute Impliqué
Re : comment crée un numéro de fascture automatique

bonjour job
alors la sa fonctionne un gros merci
jais remarque quelque chose cependant
Jai remis les couleur d'origine au model de facture vierge et enregistrer
lorsque j'ouvre une nouvelle facture les modification de couleur que jais entrer sons encore la
mais lorsque jais toute entrer les donner client et que j'enregistre le tout et que je retourne dans le sous dossier
pour ouvrir la dite facture les couleur dessue son revenue comme avant .

bref je me demande comment je peu avoir et garder mes changement de couleur même après avoir sauve garder mais facture.

merci job...
 

job75

XLDnaute Barbatruc
Re : comment crée un numéro de fascture automatique

Re,

Je ne sais pas pour les couleurs, mais utilisez votre fichier, et pas les miens (créés sur Excel 2003).

Vous êtes sur Excel 2007, votre fichier doit être enregistré en .xlsm.

Bonne nuit.
 

job75

XLDnaute Barbatruc
Re : comment crée un numéro de fascture automatique

Bonjour patrick965, le forum,

La solution (5) de mon post #37 ne me plaît pas.

Essayez par exemple d'enregistrer avec les noms Nomblard ou Nomany...

Avec cette version (6) le nom est recherché après : (2 points) et il y a un message si ce caractère n'existe pas.

J'ai aussi ajouté un message pour éviter les caractères interdits dans le nom :

Code:
Dim numero$, NomMemo$ 'mémorisation des variables

Sub EnregistrerModifications()
'Alt+F8 pour exécuter la macro (la feuille doit être vierge)
'évite de déclencher la macro Workbook_BeforeSave
Application.EnableEvents = False
Me.Save
Application.EnableEvents = True
End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Source As Range)
'interdit la modification du numéro de facture et du nom enregistré
Application.EnableEvents = False
With Sheets("Facture de service")
  .[F4] = numero
  If NomMemo <> "" Then .[C10] = NomMemo
End With
Application.EnableEvents = True
End Sub

Private Sub Workbook_Open()
Dim chemin$, nomfich$, n As Variant
Sheets("Facture de service").Activate 'au cas où...
'---date du jour---
[F5] = Date
'---numéro de facture---
chemin = Me.Path & "\" 'chemin du dossier à adapter
nomfich = Dir(chemin & "Numero_Facture.xls*")
If nomfich <> "" Then
  n = ExecuteExcel4Macro("'" & chemin & "[" & nomfich & "]Feuil1'!R1C1")
  n = IIf(Left(n, 4) = CStr(Year(Date)), Val(Mid(n, 9)), 0)
End If
numero = "'" & Format(Date, "yyyymmdd") & Format(n + 1, "0000")
[F4] = numero
End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUi As Boolean, Cancel As Boolean)
Dim der%, nom$, chemin$, wb As Workbook
Cancel = True 'rend impossible l'enregistrement manuel
With Sheets("Facture de service")
  der = InStr(.[C10], ":")
  If der = 0 Then MsgBox _
    "Il faut : (2 points) après ""Nom"" en C10 !!", 48: Exit Sub
  nom = Application.Trim(Mid(.[C10], der + 1))
  nom = Application.Proper(nom) 'majuscule en tête pour le classement
  If nom = "" Then
    MsgBox "Le nom n'a pas été entré..."
    .[C10].Select
  Else
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    chemin = Me.Path & "\" 'chemin du dossier à adapter
    '---création du fichier facture---
    Set wb = Workbooks.Add(xlWBATWorksheet)
    .Copy After:=wb.Sheets(1)
    wb.Sheets(1).Delete
    wb.Sheets(1).Name = .[F4]
    On Error Resume Next
    MkDir chemin & nom 'création du sous-dossier s'il n'existe pas
    wb.SaveAs chemin & nom & "\" & .[F4] 'enregistrement
    wb.Close
    If Dir(chemin & nom & "\*") = "" Then _
      MsgBox "Caractère interdit dans le nom !", 48: Exit Sub
    NomMemo = .[C10] 'mémorisation
    '---mémorisation du numéro de facture---
    Workbooks("Numero_Facture").Close False 'si le fichier est ouvert
    Set wb = Workbooks.Add(xlWBATWorksheet)
    .[F4].Copy wb.Sheets(1).[A1]
    wb.Sheets(1).Protect "TOTO" 'mot de passe à adapter
    wb.SaveAs chemin & "Numero_Facture" 'enregistrement
    wb.Close
  End If
End With
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Me.Saved = True 'évite l'invite
End Sub
Edit : j'ai aussi modifié la macro Workbook_Open avec Val(Mid(n, 9)) au lieu de Val(Mid(n, 9, 4))

A+
 

Pièces jointes

  • Création d'une facture(6).xls
    94 KB · Affichages: 40
  • Création d'une facture(6).xlsm
    56.6 KB · Affichages: 68
Dernière édition:

patrick965

XLDnaute Impliqué
Re : comment crée un numéro de fascture automatique

merci job 75 tu est super merci pour toute ton travail sa fonctionne et est au dessue de mes attentes.
une autre question mes venue en tête.
je me demandais ...
croyez vous que lorsque jais fais ma soumission et quelle est accepter pas le client et que le travail est fais il y aurrais tu un moyen pour que je puisse transformer ma soumission en facture c'est a dire qui y aurais que les numéro de tx en bas et le non soumission qui changerais pour facture .
sans changer le numéro de facture la date et autre .
merci beaucoup
 

job75

XLDnaute Barbatruc
Re : comment crée un numéro de fascture automatique

Bonjour patrick965,

croyez vous que lorsque jais fais ma soumission et quelle est accepter pas le client et que le travail est fais il y aurrais tu un moyen pour que je puisse transformer ma soumission en facture (...)

Bah, à mon avis c'est inutile de se casser la tête.

Vous allez chercher le fichier du client :

- vous l'ouvrez

- vous modifiez manuellement ce que vous voulez

- et soit vous enregistrez tel quel soit vous enregistrez sous un autre nom, par exemple 201406230001_Facture.

A+
 

Nessie

XLDnaute Occasionnel
Re : comment crée un numéro de fascture automatique

Bonsoir Patrick,

Un essai

@+

Denis


Bonsoir Denis,

J'ai regardé ton essai et il se trouve que ta proposition se rapproche d'un travail que j'effectue actuellement.
Puis-je savoir pourquoi la formule
=TEXTE(AUJOURDHUI();"ddmmyyyy")&TEXTE(MAX(Suivi!A:A)+1;"0000")
fait référence à la feuille de calcul Suivi!A:A ?

Dans mon cas, mon numéro de facture correspond est du type aa/mm-num de fact (en général sur 2 chiffres) qui doit revenir à 1 à chaque nouvel exercice comptable du 01/04/N au 31/03/N+1. Est-ce faisable ?

ET l'idée de ta macro me plait bien. En effet sur clic, un nouveau numéro de facture se créerait par rapport à la facture précédemment créée. Mais cette macro peut-elle également faire un refresh de certaines cellules (effacer les données saisies de la facture précédente).

Merci pour ton (vos) contributions/aides.
 

Discussions similaires

Statistiques des forums

Discussions
314 708
Messages
2 112 090
Membres
111 416
dernier inscrit
philipperoy83