Microsoft 365 Numéro facture automatique

  • Initiateur de la discussion Initiateur de la discussion ivan27
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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
 
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)
 
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:
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
18
Affichages
525
Réponses
1
Affichages
1 K
Retour