salut,
Je crois que le code qui suit peut résoudre ton problème à quelques retouches près. De toute façon, l'idée y est.
Tu dois avant tout traiter le nombre de caractères pour ne pas avoir par exemple 1-1-2014 comme numéro de dévis au lieu de 001-01-2014.
Crée avant tout dans table un champ texte NumeroDevis
Crée ensuite une procédure AfterUpdate sur ton champ date pour traiter le nombre de caractères avant de générer le numéro de dévis
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| Private sub ChampDate_AfterUpdate()
Dim NumMois, NumID as Variant 'le mois et l'identifiant
Dim Mois, ID as Variant 'le mois et l'ID après les traitements éventuels du nombre de caractères
NumMois=Month(Me.ChampDate.value)
NumID=Me.ChampID.value
'S' assurer que le mois soit sur 2 caratères
If len(NumMois)=1 Then
Mois= "0" & NumMois
Else
Mois= NumMois
End if
'S'assurer que la valeur ID soit sur 3 caractères, selon ta modélisation, je suppose que tu ne peux pas avoir 'plus de 999 factures
If len(NumID)=1 Then
ID="00" & NumID
ElseIf len(NumID)=2 Then
ID="0"& NumID
Else
ID=NumID
End if
'Gérons maintenant le numéro de dévis lui-même
Me.NumeroDevis.value= ID & "-"& Mois &"-"& Me.Year(ChampDate.Value)
End sub |
NB! Dans ce cas l'ID est ton numéro de dévis (celui sous la forme XXX).
Maintenant, si tu désires le gérer toi-même, c'est à dire, si tu le mets au type numérique au lieu de NumAuto, ça sera plus facile, parce que tu pourras gérer toi-même le format 3 caractères, et ton code sera simplifié. Mais vaut mieux écrire quelques lignes de code une seule fois au lieu de se demander 998 fois, quel est le numéro du dévis précédent.

Prions maintenant pour que ça marche!
Grand Merci à toi Robert pour ta vigilence

Partager