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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
|
Public Sub CreationNumeroAdh()'défini les variable
Dim premierLettreNom As String, LettreNombreAdh As String, tranchelettreadh As String, TrancheAdh As String, lalettre As String, trancheannee As String
Dim nomchercher As String, prenomchercher As String, promotionchercher As String, LettreADH As Boolean, NumeroAdh As String
'déclaration de la variable table
Dim tableouverte2 As New ADODB.Recordset
'recuperation des valeurs saisies dans le formulaire
nomchercher = Forms("rechercheAdherent").Controls("TxtNom").Value
prenomchercher = Forms("rechercheAdherent").Controls("TxtPrenom").Value
promotionchercher = Forms("rechercheAdherent").Controls("TxtPromotion").Value
'isole la premiere lettre du nom pour construction numero adhérent
premierLettreNom = Left(nomchercher, 1)
'ouverture de la table et copie des champs
tableouverte2.Open "creationNumeroAdh", CurrentProject.Connection, adOpenDynamic, adLockOptimistic
'Attribue à lalettre la première valeur de PremiereLettreNomAdh
lalettre = tableouverte2("PremiereLettreNomAdh")
'Parcourir la table tant que premierLettreNom est différent de lalettre
Do While Not premierLettreNom = lalettre
'Si pas trouvé, aller à l'enregistrement suivant
tableouverte2.MoveNext
'Attribuer la nouvelle valeur de lalettre
lalettre = tableouverte2("PremiereLettreNomAdh")
Loop
'!!!!Donc, normalement à la sortie de la boucle,
'!!!!nous nous trouvons à l'enregistrement où premierLettreNom = lalettre
'Là on lance tout le tralala
'si la lettre du nom correspond on récupere les valeurs des autres champs
' champ numérique correspondant à la premiere lettre nom
LettreNombreAdh = tableouverte2("LettreNombreAdh")
' vérifie si le champ de la lettre tranche est remplie
LettreADH = IsNull(tableouverte2("tranchelettreadh").Value)
' en fonction de la presence d'une lettr ou pas initialise le champ de la lettre tranche
If LettreADH = True Then
tranchelettreadh = ""
Else
'prend la valeur de la lettre si présente dans le champ
tranchelettreadh = tableouverte2("tranchelettreadh")
End If
'recupere le compteur de tranche entre 001 et 999
TrancheAdh = tableouverte2("TrancheAdh")
'définie le format à trois chiffres surtout si inférieur à 100
TrancheAdh = Format(TrancheAdh, "000")
'définie la partie année les deux dernier chiffre de l'année en cours
trancheannee = Str(Right(Year(Now), 2))
' construit le numéro du nouveaux adhérent
NumeroAdh = trancheannee & "/" & tranchelettreadh & LettreNombreAdh & TrancheAdh
MsgBox "Cet adhérent n'existe pas et aura comme numéro d'adhérent le " & trancheannee & "/" & tranchelettreadh & LettreNombreAdh & TrancheAdh
' met à jour la table pour le calcul du numero adhérent
'ajout de 1 à la tranche chiffre
TrancheAdh = TrancheAdh + 1
'condition si la tranche dépasse 1000 remise à 001
If TrancheAdh >= 1000 Then
TrancheAdh = "001"
tableouverte2("TrancheAdh").Value = TrancheAdh
'incrémente le compteur de la lettre de tranche
' condition si la tranche lettre est vide
If tranchelettreadh = "" Then
tranchelettreadh = "A"
'sinon prend le code ACSI de la lettre pour l'incrémenter
Else
tranchelettreadh = Asc(tranchelettreadh)
tranchelettreadh = tranchelettreadh + 1
' verifie si lettre correspond au H et le saute le cas échéant
If tranchelettreadh = 72 Then
tranchelettreadh = tranchelettreadh + 1
End If
' retransforme le code ACSI en lettre
tranchelettreadh = Chr(tranchelettreadh)
tableouverte2("tranchelettreadh").Value = tranchelettreadh
End If
' si le compteur n'a pas atteint 1000, incremente juste le compteur
Else
TrancheAdh = Format(TrancheAdh, "000")
tableouverte2("TrancheAdh").Value = TrancheAdh
End If
tableouverte2.Close 'On ferme la table
'libération de la mémoire
Set tableouverte2 = Nothing
End Sub |
Partager