Microsoft 365 Numéro facture automatique

ivan27

XLDnaute Occasionnel
Bonjour à tous,

Je souhaiterais générer automatiquement des numéros de factures dans un format déterminé.
Fonctionnement :
- Je mets un "X" colonne A pour désigner les lignes sur lesquelles je souhaite obtenir un nouveau numéro de facture
- La procédure génère le numéro colonne B sous la forme :
Préfixe "DO"
Année de la date colonne C
Mois de la date colonne C
Numéro sur 5 chiffres (dernier numéro utilisé en colonne B +1)
Dans l'exemple joint je souhaite donc obtenir en
B3 : DO190600133
B9 : DO190600134
B16 : DO190700135
B19 : DO190700136

Merci d'avance pour votre aide

Ivan
 

Pièces jointes

  • NmrFacture.xlsm
    11.2 KB · Affichages: 12

mécano41

XLDnaute Accro
Une ligne à modifier (sinon, si l'on double-clique sur une ligne ayant déjà un N° de commande, celui-ci est remplacé par un nouveau...pas bien!)

Code:
If Cible.Offset(0, 2).Value <> "" Then
devient :
Code:
If Cible.Offset(0, 2).Value <> "" And Cible.Offset(0, 1).Value = "" Then
Cordialement
 

D.D.

XLDnaute Impliqué
Bonjour

Cible.Offset(0, 1).Value = "DO" & Format(DatePrest, "yy") & Format(DatePrest, "mm") & Format(Range("DerNoPris").Value + 1, "00000")
au lieu de
Cible.Offset(0, 1).Value = "DO" & Right(CStr(Year(DatePrest)), 2) & Right("0" & CStr(Month(DatePrest)), 2) & Right("00000" & CStr(Range("DerNoPris").Value + 1), 5)
 

mécano41

XLDnaute Accro
Bonjour D.D.,

Merci d'avoir corrigé. C'est ce que j'avais fait dans un premier temps mais le mois restait figé à "01" je n'ai pas compris pourquoi...alors j'ai abandonné...je n'aurais pas dû!

Pour Ivan27 : on pourrait aussi double-cliquer directement dans la cellule du N° à mettre ; ce serait peut-être plus "naturel".

Code:
Option Explicit

Private Sub Worksheet_BeforeDoubleClick(ByVal Cible As Range, Retour As Boolean)
Dim DatePrest As Date

If Not Application.Intersect(Cible, Range("B:B")) Is Nothing Then
    If Cible.Offset(0, 1).Value <> "" And Cible.Value = "" Then
        DatePrest = Cible.Offset(0, 1).Value
        Cible.Value = "DO" & Format(DatePrest, "yy") & Format(DatePrest, "mm") & Format(Range("DerNoPris").Value + 1, "00000")
        Range("DerNoPris").Value = Range("DerNoPris").Value + 1
    End If
End If
End Sub

Cordialement
 
Dernière édition:

ivan27

XLDnaute Occasionnel
Re bonjour le forum, méano41, D.D,
Merci pour vos recherches et vos propositions.
Je devrais parvenir à avancer grâce à vous...
Je tiens à utiliser le "X" en colonne A pour désigner les lignes concernées car le traitement ne s'arrête pas là mais je devrais être en mesure de m'en sortir seul pour la suite.
Je posterai à nouveau en cas de difficulté.
Bonne journée à tous
Ivan
 

Discussions similaires

Statistiques des forums

Discussions
314 634
Messages
2 111 429
Membres
111 133
dernier inscrit
dominique001