Numérotation automatique (concatenation) sans doublon
Bonjour
dans le fichier joint,
en page Compéts,
je souhaiterais qu'un Numéro spécial soit crée automatiquement en concatenant la date au format aaaa-mm-jj puis(/) puis un nombre (001, 002,003 etc) dans le Txtbox : Txt_CompetNumSaison du formulaire et sans doublon.
Quelqu'un aurait-il une idée?
Merci
Etoile
Bonjour
Est-ce que cela te convient ?
J’ai simplement ajouté une instruction à la procédure
‘’ Private Sub Txt_CompetDate_Exit(ByVal Cancel As MSForms.ReturnBoolean)
de la feuille ‘’Compets ‘’
Bonjour Gmb
Merci pour ton aide
Ta solution fonctionne mais ne répond que partiellement à ma question
le format date est ok : aaaa-mm-jj
la concatenation se fait
Me.Txt_CompetNumSaison = Me.Txt_CompetDate & "-" & Format(Me.Txt_CompetNumenr, "00#")Mais En fait tu as pris le N° EOFnumero d'enregistrement dans la base)
Or je souhaitais que le N° 001 .... soit créé par rapport à la date
Si il existe déjà un enregistrement avec la date et bien le suivant c'est date+002 (eviter doublon)
Le n° (=colonne J=Me.Txt_CompetNumenr) doit étre crée par rapport à la date (colonne Me.Txt_CompetDate)
et non par rapport à la colonne A (N° eof)
Aurais tu une autre solution?
Merci
Cdl
Etoile
Aurais tu une autre solution?
Peut-être : essaie cette nouvelle version.
J'ai remplacé ma ligne supplémentaire par 8 nouvelles lignes de code, au même endroit.
Cela te convient-il mieux ?
Bye !
Bonsoir gmb, le Forum
Merci ta procédure ci-dessous fonctionne super.
Private Sub Txt_CompetDate_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'procedure qui permet de gérer le format date avec les "/"
Dim C As Range, dte As Date, Cptr As Integer
If Len(Me.Txt_CompetDate) = 0 Then Exit Sub
If IsDate(Me.Txt_CompetDate) Then
Me.Txt_CompetDate = Format(Me.Txt_CompetDate, "dd/mm/yyyy")
dte = Me.Txt_CompetDate
Cptr = 1
For Each C In Range("G4:G" & Range("G" & Rows.Count).End(xlUp).Row)
If C.Value = dte Then
Cptr = Cptr + 1
End If
Next C
Me.Txt_CompetNumSaison = Me.Txt_CompetDate & "/" & Format(Cptr, "00#")
Else
MsgBox "Date non conforme"
Me.Txt_CompetDate = ""
Cancel = True
End If
End SubBanzai64 venait également de me donner sa version
je la colle ci-dessous en complément et je ferme ce fil
Encore merci au forum et à ces membres.
Etoile
Private Sub Txt_CompetDate_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'procedure qui permet de gérer le format date avec les "/"
If Len(Me.Txt_CompetDate) = 0 Then Exit Sub
If IsDate(Me.Txt_CompetDate) Then
Me.Txt_CompetDate = Format(Me.Txt_CompetDate, "dd/mm/yyyy")
CreationNumeroCompet
Else
MsgBox "Date non conforme"
Me.Txt_CompetDate = ""
Cancel = True
End If
End Sub
Sub CreationNumeroCompet()
Dim Cel As Range
Dim Recherche As String
Dim Nombre As Integer
Do
Nombre = Nombre + 1
Recherche = Format(CDate(Txt_CompetDate), "yyyy-mm-dd") & "/" & Format(Nombre, "000")
Set Cel = WsBase.Columns("J").Find(what:=Recherche, LookIn:=xlValues, lookat:=xlWhole)
If Cel Is Nothing Then
Me.Txt_CompetNumSaison = Recherche
Exit Do
End If
Loop
End Sub