Salut Jolicoeur79,
J'ai eu la même chose à faire pour une de mes sources(Gestion Expéditions), il me fallait un nouveau numéro de bl à chaque changement d'année ex:
En 2006 mon Bl était N6/001
En 2007 mon BL devenait N7/001
En faite j'ai un champ(année) supplémentaire dans ma table BL, et à chaque fois que je créé un bl, j'inscrit dans ce champ l'année en cours "2007".
quand je change d'année je vais comparer l'année de mon dernier numéro de bl avec l'année en cours. Si cela est pareil je continu en "2007", si cela est différent je prend donc la nouvelle année "2008" pour faire une nouveau BL "N8/001"
Voici un bout de code de ma source pour te montrer comment j'ai procédé..
Bon je suis sûr que ce n'est pas trop optimisé, mais pour te faire une idée de comment procéder. J'espère que cela pourra t'aider.
'On récupère le dernier N° de bl et année pour attribuer un bl par année
'Positionement sur le dernier enregistrement de la base
resultatADO.MoveLast
'Déclare variables pour acquisitions info
Dim Rannée, Rdate
If Not IsNull(resultatADO!bl) Then rrésulta = (resultatADO!bl)
If Not IsNull(resultatADO!année) Then Rannée = (resultatADO!année)
rrésulta = Mid(rrésulta, 4)
'Rdate = Mid(Date, 7)
Rdate = Year(Date) 'Récupère la date systeme(année) et la met en long(ex:2006 au lieu de 06)
'Condition pour les années supérieur à 2009
If Rdate > "2009" Then
Rdate = Mid(Rdate, 3)
GoTo suite
End If
'On compare les dates en vu du nouveau N° de BL
If Rannée = Rdate Then
Rdate = Mid(Rdate, 4)
GoTo suite
Else
Rdate = Mid(Rdate, 4)
GoTo suite
End If
suite:
'On reconstitut et attribu un nouveau N° de BL
'Condition pour les chiffres < à 9
If rrésulta < 9 Then
rrésulta = rrésulta + 1
rrésulta = "00" & rrésulta
rrésulta = "N" & Rdate & "/" & rrésulta
Text4(0).text = rrésulta
GoTo suite1
End If
'Condition pour les chiffres >= 10 et < 100
If rrésulta >= 9 And rrésulta < 100 Or rrésulta = "9" Then
rrésulta = rrésulta + 1
rrésulta = "0" & rrésulta
rrésulta = "N" & Rdate & "/" & rrésulta
Text4(0).text = rrésulta
GoTo suite1
End If
'Condition pour les chiffres >= 100 et < 1000
If rrésulta >= 99 Or rrésulta = "99" Then
rrésulta = rrésulta + 1
rrésulta = "N" & Rdate & "/" & rrésulta
Text4(0).text = rrésulta
GoTo suite1
End If
suite1:
'Bl par année
Rannée = Rannée Like année_encours
'Condition
If Rannée = False Then
Dim modi
modi = Mid(Text4(0).text, 4)
modi = "N" & Rdate & "/" & "001"
Text4(0).text = modi
End If
'Init de mes varaibles
rrésulta = ""
Rdate = ""
Rannée = ""
A+
Exploreur