XL 2010 Historique factures et incrémentation numéro croissant

Orson83

XLDnaute Impliqué
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.
Orson83
 

Pièces jointes

  • Num facture V1.xlsm
    68.2 KB · Affichages: 11
Solution
Re

@Orson83
De ce je comprends le code VBA de ton classeur, ligne est une variable qui permet d'identifier sur quelle ligne on doit recopier les données issues de la feuille Facture modèle
Le problème quand on utilise xlDown, c'est que si la colonne est vide, on arrive tout en bas de la feuille.

Pour la numérotation, que penses-tu de mon exemple ?
(On peut l'associer au bouton nouvelle facture)

Donc en mixant les deux codes, voila ce que j'obtiens
VB:
Sub Archiver_TER()
Dim ligne As Long
nFact = Nouveau_NUM("FACT_")
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
.Range("C"...

Phil69970

XLDnaute Barbatruc
Bonjour à tous

Perso pour le N° de facture je verrais comme ceci :

VB:
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                                     'Feuille et Cellule de la facture contenant le N° de facture à adapter
End Sub

Et il suffit dans ton code de mettre NumFact pour que la facture s'incrémente .....
Et tout se gère tout seul...

1687294350347.png


@Phil69970
 

Orson83

XLDnaute Impliqué
Bonsoir à tous,
Merci d'avoir résolu mon problème de numéro de facture et de macro 👍...
... particulièrement à @Staple1600 qui a résolu ce problème, mais aussi à
@TooFatBoy, @laurent950 et @Phil69970 (j'espère n'oublier personne ;)) qui ont contribué.
Je joins mon fichier corrigé qui pourra servir à d'autres visiteurs XLD.

Je continue les améliorations de mon fichier XL de location de matériel avec d'autres threads en cours o_O
Bonne soirée à tous ;)
 

Pièces jointes

  • Location de matériel V3.xlsm
    227.4 KB · Affichages: 14

Staple1600

XLDnaute Barbatruc
Re

Juste pour varier les plaisirs syntaxiques en VBA ;)
(en théorie, cette version light fait la même chose, les formats en moins)
Code:
Sub Archiver_CommeJAime()
Dim ligne As Long, vVals
nFact = Nouveau_NUM("FACT_")
Sheets("Facture modèle").[G3] = nFact
With Sheets("Facture modèle")
    vVals = Array(.[G3], .[F49], .[F10], .[F5], .[F6], .[F8], .[E13], .[E14], .[E15], .[G37], .[G38], .[G39])
End With
With Sheets("Historique factures")
ligne = .Cells(Rows.Count, "B").End(xlUp).Row + 1
.Cells(ligne, 2).Resize(, 12).Value = vVals
End With
Sheets("Facture modèle").Range("J5").ClearContents
End Sub
NB: On aura remarqué ... le subtil jeu de mots dans le nom de la macro ;)
 

Orson83

XLDnaute Impliqué
Re

Juste pour varier les plaisirs syntaxiques en VBA ;)
(en théorie, cette version light fait la même chose, les formats en moins)
Code:
Sub Archiver_CommeJAime()
Dim ligne As Long, vVals
nFact = Nouveau_NUM("FACT_")
Sheets("Facture modèle").[G3] = nFact
With Sheets("Facture modèle")
    vVals = Array(.[G3], .[F49], .[F10], .[F5], .[F6], .[F8], .[E13], .[E14], .[E15], .[G37], .[G38], .[G39])
End With
With Sheets("Historique factures")
ligne = .Cells(Rows.Count, "B").End(xlUp).Row + 1
.Cells(ligne, 2).Resize(, 12).Value = vVals
End With
Sheets("Facture modèle").Range("J5").ClearContents
End Sub
NB: On aura remarqué ... le subtil jeu de mots dans le nom de la macro ;)
@Staple1600,
Merci pour cette version light 😉
et le jeu de mots 🙂
 

Discussions similaires

Statistiques des forums

Discussions
313 320
Messages
2 097 137
Membres
106 848
dernier inscrit
toufk