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

  • Initiateur de la discussion Initiateur de la discussion KTM
  • 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 !

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😀 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

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😀 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?
 
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

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

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

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

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!
 
- 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
5
Affichages
1 K
Réponses
6
Affichages
3 K
Réponses
21
Affichages
2 K
Retour