Sub Archiver() 'Archive dans la feuille historique factures
Sheets("Facture modèle").Unprotect
Dim ligne As Long
If Range("J5") = "" Then
[J6] = "Renseigner nom du client"
Exit Sub ' Pas de client, on sort
'L'annotation en J6 ne s'efface pas
Else
[J6] = "" 'L'annotation en J6 ne s'efface pas
End If
nFact = Nouveau_NUM("FACT_") 'Compteur Fact_ dans le gestionnaire de nom
'Sheets("Facture modèle").Unprotect
Sheets("Facture modèle").[G3] = "FA" & Format(Now, "yyyy") & "-" & Format(nFact, "00")
With Sheets("Historique factures")
ligne = .Cells(Rows.Count, "B").End(xlUp).Row + 1
.Range("B" & ligne).Value = Sheets("Facture modèle").Range("G3").Value 'Num. facture
.Range("C" & ligne).Value = Sheets("Facture modèle").Range("F49").Value 'Date émission
.Range("D" & ligne).Value = Sheets("Facture modèle").Range("F5").Value 'Num. client
End With 'Récupère facture pour l'historique
'With Sheets("Facture modèle")
' .Range("J5").ClearContents
' If .Range("G3") Like "*-*" Then
' NumFact = Split(.Range("G3"), "-")(1)
' Else
' NumFact = 0
' End If
'
' .Range("G3").Value = "FA" & Format(Year(Now), "yyyy") & "-" & NumFact + 1
' 'Sheets("Facture modèle").Range("G3").Value = Sheets("Facture modèle").Range("G3").Value + 1 'Ajoute +1 en G3 après archivage
Sheets("Facture modèle").Protect
'End With
End Sub
Le fil,Hello
sans toucher à la fonction Nouveau_Num , avec ca
VB:Sub Archiver() 'Archive dans la feuille historique factures Sheets("Facture modèle").Unprotect Dim ligne As Long If Range("J5") = "" Then [J6] = "Renseigner nom du client" Exit Sub ' Pas de client, on sort 'L'annotation en J6 ne s'efface pas Else [J6] = "" 'L'annotation en J6 ne s'efface pas End If nFact = Nouveau_NUM("FACT_") 'Compteur Fact_ dans le gestionnaire de nom 'Sheets("Facture modèle").Unprotect Sheets("Facture modèle").[G3] = "FA" & Format(Now, "yyyy") & "-" & Format(nFact, "00") With Sheets("Historique factures") ligne = .Cells(Rows.Count, "B").End(xlUp).Row + 1 .Range("B" & ligne).Value = Sheets("Facture modèle").Range("G3").Value 'Num. facture .Range("C" & ligne).Value = Sheets("Facture modèle").Range("F49").Value 'Date émission .Range("D" & ligne).Value = Sheets("Facture modèle").Range("F5").Value 'Num. client End With 'Récupère facture pour l'historique 'With Sheets("Facture modèle") ' .Range("J5").ClearContents ' If .Range("G3") Like "*-*" Then ' NumFact = Split(.Range("G3"), "-")(1) ' Else ' NumFact = 0 ' End If ' ' .Range("G3").Value = "FA" & Format(Year(Now), "yyyy") & "-" & NumFact + 1 ' 'Sheets("Facture modèle").Range("G3").Value = Sheets("Facture modèle").Range("G3").Value + 1 'Ajoute +1 en G3 après archivage Sheets("Facture modèle").Protect 'End With End Sub
nFact = Nouveau_NUM("FACT_") 'Compteur Fact_ dans le gestionnaire de nom
j'aimerai construire un numéro de facture qui s'adapte selon l'année en cours.
Le fil,Bonjour @Orson83 et Vincent
Pourtant tout était fait ici
XL 2010 - Historique factures et incrémentation numéro croissant
Bonjour la communauté, J'ai une macro qui est censée sauvegarder l'historique des factures dans une feuille dédiée et incrémenter un numéro de facture croissant. Le problème, c'est qu'elle ne fonctionne pas :oops: Merci pour votre aide. Je joins un fichier exemple dans ce post. Orson83excel-downloads.com
Mais c'est pas la solution que tu as retenu mais l'avais tu essayé ?
Car tu aurais vu que le mois et l'année se gère automatiquement
Je vais essayer avec le code qui récupère les infos à insérer dans la feuille "Historique factures" et ta macro.Le fil,
Bonsoir @Phil69970,
Non, j'avais retenu la proposition de @Staple1600 au post#9. Il avait beaucoup travaillé dessus et il me semblait que c'était normal.
Finalement, j'ai juste voulu optimiser sa macro pour intégrer la mise à jour de l'année dans le numéro de facture.
Je crois que je me suis lancé dans une aventure qui me dépasse (je me demande si c'est une bonne idée).
Toujours est-il que je suis bloqué.
Private Sub CommandButton2_Click() 'Archiver les factures
'Doit récupérer les cellules de la Facture modèle pour les intégrer dans la feuille Historique factures
Dim ligne As Long
nFact = Nouveau_NUM("FACT_")
'Sheets("Facture modèle").Unprotect
Sheets("Facture modèle").[G3] = nFact
With Sheets("Historique factures")
ligne = .Cells(Rows.Count, "B").End(xlUp).Row + 1
.Range("B" & ligne).Value = Sheets("Facture modèle").Range("G3").Value 'Num. facture
.Range("C" & ligne).Value = Sheets("Facture modèle").Range("F48").Value 'Date émission
.Range("D" & ligne).Value = Sheets("Facture modèle").Range("F10").Value 'Num. client
.Range("E" & ligne).Value = Sheets("Facture modèle").Range("F5").Value 'Nom Prénom client
.Range("F" & ligne).Value = Sheets("Facture modèle").Range("F6").Value 'Adresse
.Range("G" & ligne).Value = Sheets("Facture modèle").Range("F8").Value 'CP & Ville
.Range("H" & ligne).Value = Sheets("Facture modèle").Range("E13").Value 'Libellé 1
.Range("I" & ligne).Value = Sheets("Facture modèle").Range("E14").Value 'Libellé 2
.Range("J" & ligne).Value = Sheets("Facture modèle").Range("E15").Value 'Libellé 3
.Range("K" & ligne).Value = Sheets("Facture modèle").Range("G37").Value 'Total HT
.Range("L" & ligne).Value = Sheets("Facture modèle").Range("G38").Value 'Total TVA
.Range("M" & ligne).Value = Sheets("Facture modèle").Range("G39").Value 'Total TTC
End With 'Récupère facture pour l'historique
Sheets("Facture modèle").Range("J5").ClearContents
Sheets("Facture modèle").Range("G3").Value = Sheets("Facture modèle").Range("G3").Value + 1
'Sheets("Facture modèle").Protect
End Sub
Sub NumFact()
Dim NumFact$, DebNumFact$
DebNumFact = "F" & Format(Date, "yyyy-mm-") 'Exemple ==> F2023-06- Année 2023 Mois 06 ==> Facture
NumFact = Sheets("Facture modèle").[M1] 'Feuille et Cellule ou est stockée le dernier N° de facture à adapter
If Left(NumFact, 9) = DebNumFact$ Then
NumFact = DebNumFact & Format(Val(Right(NumFact, 2) + 1), "00") 'limité à 100 factures/mois (Modifiable si besoin)
Else
NumFact = CStr(DebNumFact & "01") 'limité à 100 factures/mois (Modifiable si besoin)
End If
Sheets("Facture modèle").[M1] = NumFact 'Feuille et Cellule ou est stockée le dernier N° de facture
Sheets("Facture modèle").[G3] = NumFact
Bonjour le fil,Re
Je te propose ce fichier
J'ai rajouté un message si tu n'as pas mis le nom du client car pas de client pas besoin de facture !!!
Cependant, je rencontre un petit souci à la modification du numéro. En effet, il semblerait que la macro mémorise le dernier N° et fasse un blocage en cas de modification.
Autre petit souci, la largeur de ma cellule m'oblige à réduire la taille du numéro à 8 caractères maximum : F236-001 (FAAM-N°)
Pour finir, après avoir cliqué sur le bouton, le numéro affiché devrait être à +1
Et en octobre on passe à F2310-01 ???2) Je ne comprends pas le numéro de facture que tu veux car pour moi F236-001 n'est pas parlant pour moi
Le fil,Re
@Orson83
Pas du tout si tu veux modifier le N° tu peux le faire mais il faut le faire comme je l'ai prévu.
Tout d'abord que fait ma macro :
1) Elle prend la date du jour exemple 29/06/2023
2) Elle mémorise l'année et le mois et ajoute un F donc F-2023-06 qui est le début de numéro de la facture
3) On regarde si un N° de facture existe déjà cellule M1 si un numéro de facture existe cellule M1 (pour rappel le N° complet est de la forme (F-2023-06-XX) ou XX est le numéro qui s’incrémente de la facture pour un même mois et une même année) on récupère les 2 derniers numéro de la facture donc XX et on l’incrémente de 1 donc 24 deviendra 25 par exemple etc
4) Si tu veux passer du numéro 4 au numéro 76 par exemple
Regarde la pièce jointe 1173651
Et bien du met le numéro 75 pourquoi 75 et pas 76 directement et bien comme il regarde le dernier numéro auquel il rajoute 1==> 75+1 =76
En clair en M1 est stocké le dernier numéro de facture et pas le prochain
Regarde la pièce jointe 1173650
Et cela te donnera donc ceci
Regarde la pièce jointe 1173654
5) Si le mois change on repart à 01 donc le 1er juillet le N° deviendra F-2023-07-01
Exemple j'ai modifié la date système de mon PC pour obtenir ceci
Regarde la pièce jointe 1173655
Plusieurs remarques à cette question
1) Poses toi les bonnes questions combien auras tu de factures à faire par mois au maximum ?
10 par mois -100 par mois-1 000 par mois-10 000 par mois encore plus .....( c'est Amazon !)
2) Je ne comprends pas le numéro de facture que tu veux car pour moi F236-001 n'est pas parlant pour moi
3) Elargie la colonne si tous les numéros ne rentrent pas ou diminue la police
Et non la macro n'a pas été conçu comme cela mais relire le début de ce post .....
Le fil,Bonjour,
Et en octobre on passe à F2310-01 ???