XL 2016 Générer automatiquement numéro de bordereau

KTM

XLDnaute Impliqué
Bonjour chers tous !
Voici mon problème de ce matin:
J'ai des factures a enregistrer et leur attribuer des numéros qui doivent obéir a une nomenclature
Numéro d'ordre à 4 chiffres +la Date +Destination
Les colonnes A:D sont renseignées via un formulaire et la colonne E doit générer le numéro automatiquement.

Voir fichier joint

Merci
 

Pièces jointes

  • Classeur1.xlsm
    10.4 KB · Affichages: 7

cp4

XLDnaute Barbatruc
Bonjour chers tous !
Voici mon problème de ce matin:
J'ai des factures a enregistrer et leur attribuer des numéros qui doivent obéir a une nomenclature
Numéro d'ordre à 4 chiffres +la Date +Destination
Les colonnes A:D sont renseignées via un formulaire et la colonne E doit générer le numéro automatiquement.

Voir fichier joint

Merci
Bonjour,

Aucune logique dans ton fichier. Revois un peu ce que tu nous as présenté.
Où est le formulaire?
 

job75

XLDnaute Barbatruc
Bonjour KTM, cp4, nat54,

Le fichier du post #1 est clair et se suffit à lui-même.

Il suffit d'insérer la colonne E pour calculer le numéro, formule en E5 :
Code:
=SI(NB.SI(A$4:A5;A5)=1;MAX(E$4:DECALER(E5;-1;))+1;RECHERCHEV(A5;A:E;5;0))
Formule en F5 :
Code:
=TEXTE(E5;"0000")&TEXTE(A5;"-j-m-aa-")&D5
A+
 

Pièces jointes

  • Classeur(1).xlsm
    11.2 KB · Affichages: 5

KTM

XLDnaute Impliqué
Bonjour KTM, cp4, nat54,

Le fichier du post #1 est clair et se suffit à lui-même.

Il suffit d'insérer la colonne E pour calculer le numéro, formule en E5 :
Code:
=SI(NB.SI(A$4:A5;A5)=1;MAX(E$4:DECALER(E5;-1;))+1;RECHERCHEV(A5;A:E;5;0))
Formule en F5 :
Code:
=TEXTE(E5;"0000")&TEXTE(A5;"-j-m-aa-")&D5
A+
Merci Job75
vous m'avez compris.
J'aimerais traduire cela par code vba si possible.
Encore merci
 

Pièces jointes

  • Classeur1.xlsm
    23.6 KB · Affichages: 1

job75

XLDnaute Barbatruc
Le code du bouton Valider de l'UserForm :
VB:
Private Sub ValiderSaisie_Click()
If Not IsDate(TextBox1) Then TextBox1 = "": TextBox1.SetFocus: Exit Sub
Dim lig&
Application.ScreenUpdating = False
With Sheets("BL")
    lig = .Range("A" & Rows.Count).End(xlUp).Row + 1
    .Range("A" & lig) = CDate(TextBox1)
    .Range("B" & lig) = TextBox2
    .Range("C" & lig) = Val(TextBox3)
    .Range("D" & lig) = TextBox4
    .[E:E].Insert 'colonne auxiliaire
    .Range("E5").Resize(lig - 4) = "=IF(COUNTIF(A$4:A5,A5)=1,MAX(E$4:E4)+1,VLOOKUP(A5,A:E,5,0))"
    .Range("F5").Resize(lig - 4) = "=TEXT(E5,""0000"")&TEXT(A5,""-j-m-aa-"")&D5" 'si version française
    '.Range("F5").Resize(lig - 4) = "=TEXT(E5,""0000"")&TEXT(A5,""-d-m-yy-"")&D5" 'si version anglaise
    .Range("F5").Resize(lig - 4) = .Range("F5").Resize(lig - 4).Value 'supprime les formules
    .[E:E].Delete 'supprime la colonne auxiliaire
End With
Unload F_BLEspc
F_BLEspc.Show
End Sub
A+
 

Pièces jointes

  • Classeur(1).xlsm
    25.4 KB · Affichages: 0

job75

XLDnaute Barbatruc
Si l'on ne veut pas avoir de souci avec la version Excel on utilisera plutôt ce fichier (2) :
VB:
Private Sub ValiderSaisie_Click()
If Not IsDate(TextBox1) Then TextBox1 = "": TextBox1.SetFocus: Exit Sub
Dim lig&
Application.ScreenUpdating = False
With Sheets("BL")
    lig = .Range("A" & Rows.Count).End(xlUp).Row + 1
    .Range("A" & lig) = CDate(TextBox1)
    .Range("B" & lig) = TextBox2
    .Range("C" & lig) = Val(TextBox3)
    .Range("D" & lig) = TextBox4
    .[E:E].Insert 'colonne auxiliaire
    .Range("E5").Resize(lig - 4) = "=IF(COUNTIF(A$4:A5,A5)=1,MAX(E$4:E4)+1,VLOOKUP(A5,A:E,5,0))"
    .Range("F5").Resize(lig - 4) = "=TEXT(E5,""0000-"")&DAY(A5)&""-""&MONTH(A5)&""-""&RIGHT(YEAR(A5),2)&""-""&D5"
    .Range("F5").Resize(lig - 4) = .Range("F5").Resize(lig - 4).Value 'supprime les formules
    .[E:E].Delete 'supprime la colonne auxiliaire
End With
Unload F_BLEspc
F_BLEspc.Show
End Sub
 

Pièces jointes

  • Classeur(2).xlsm
    25.6 KB · Affichages: 6

KTM

XLDnaute Impliqué
Si l'on ne veut pas avoir de souci avec la version Excel on utilisera plutôt ce fichier (2) :
VB:
Private Sub ValiderSaisie_Click()
If Not IsDate(TextBox1) Then TextBox1 = "": TextBox1.SetFocus: Exit Sub
Dim lig&
Application.ScreenUpdating = False
With Sheets("BL")
    lig = .Range("A" & Rows.Count).End(xlUp).Row + 1
    .Range("A" & lig) = CDate(TextBox1)
    .Range("B" & lig) = TextBox2
    .Range("C" & lig) = Val(TextBox3)
    .Range("D" & lig) = TextBox4
    .[E:E].Insert 'colonne auxiliaire
    .Range("E5").Resize(lig - 4) = "=IF(COUNTIF(A$4:A5,A5)=1,MAX(E$4:E4)+1,VLOOKUP(A5,A:E,5,0))"
    .Range("F5").Resize(lig - 4) = "=TEXT(E5,""0000-"")&DAY(A5)&""-""&MONTH(A5)&""-""&RIGHT(YEAR(A5),2)&""-""&D5"
    .Range("F5").Resize(lig - 4) = .Range("F5").Resize(lig - 4).Value 'supprime les formules
    .[E:E].Delete 'supprime la colonne auxiliaire
End With
Unload F_BLEspc
F_BLEspc.Show
End Sub
Grand Merci à Job75 et tout le forum!
 

Discussions similaires

Statistiques des forums

Discussions
312 207
Messages
2 086 232
Membres
103 161
dernier inscrit
Rogombe bryan