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 Sub

Banzai64 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
Rechercher des sujets similaires à "numerotation automatique concatenation doublon"