Calcul d'échéance de contrat
J'ai fait la sub suivante pour calculer mes échéances mais elle marche pas bien parce quelle est pas performante comment faire pour améliorer mon code?
Code:
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
| Private Sub Form_AfterUpdate()
If ((Me.Conclusion + Me.Validite) - (Me.Delai_resiliation + Me.Delai_supp) > Date) Then
Me.Echeance = ((Me.Conclusion + Me.Validite) - (Me.Delai_resiliation + Me.Delai_supp))
Else
If ((Me.Conclusion + Me.Validite + Me.Ensuite) - (Me.Delai_resiliation + Me.Delai_supp) > Date) Then
Me.Echeance = ((Me.Conclusion + Me.Validite + Me.Ensuite) - (Me.Delai_resiliation + Me.Delai_supp))
Else
If ((Me.Conclusion + Me.Validite + (Me.Ensuite * 2)) - (Me.Delai_resiliation + Me.Delai_supp) > Date) Then
Me.Echeance = ((Me.Conclusion + Me.Validite + Me.Ensuite + Me.Ensuite) - (Me.Delai_resiliation + Me.Delai_supp))
Else
If ((Me.Conclusion + Me.Validite + (Me.Ensuite * 3)) - (Me.Delai_resiliation + Me.Delai_supp) > Date) Then
Me.Echeance = ((Me.Conclusion + Me.Validite + (Me.Ensuite * 3)) - (Me.Delai_resiliation + Me.Delai_supp))
Else
If ((Me.Conclusion + Me.Validite + (Me.Ensuite * 4)) - (Me.Delai_resiliation + Me.Delai_supp) > Date) Then
Me.Echeance = ((Me.Conclusion + Me.Validite + (Me.Ensuite * 4)) - (Me.Delai_resiliation + Me.Delai_supp))
Else
If ((Me.Conclusion + Me.Validite + (Me.Ensuite * 5)) - (Me.Delai_resiliation + Me.Delai_supp) > Date) Then
Me.Echeance = ((Me.Conclusion + Me.Validite + (Me.Ensuite * 5)) - (Me.Delai_resiliation + Me.Delai_supp))
Else
If ((Me.Conclusion + Me.Validite + (Me.Ensuite * 6)) - (Me.Delai_resiliation + Me.Delai_supp) > Date) Then
Me.Echeance = ((Me.Conclusion + Me.Validite + (Me.Ensuite * 6)) - (Me.Delai_resiliation + Me.Delai_supp))
End If
End If
End If
End If
End If
End If
End If
End Sub |
Créer une fonction personnalisée
Bonjour,
Il faudrait que tu crées une fonction personnalisée dans un module indépendant, le code serait un peu une adaptation de celui que tu as mis pour ton formulaire :
Code:
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
| Function EvalEcheance(Conclusion ,Validite , Ensuite,Delai_resiliation , Delai_supp)
If ((Conclusion + Validite) - (Delai_resiliation + Delai_supp) > Date) Then
EvalEcheance = ((Conclusion + Validite) - (Delai_resiliation + Delai_supp))
Else
If ((Conclusion + Validite + Ensuite) - (Delai_resiliation + Delai_supp) > Date) Then
EvalEcheance = ((Conclusion + Validite + Ensuite) - (Delai_resiliation + Delai_supp))
Else
If ((Conclusion + Validite + (Ensuite * 2)) - (Delai_resiliation + Delai_supp) > Date) Then
EvalEcheance = ((Conclusion + Validite + Ensuite + Ensuite) - (Delai_resiliation + Delai_supp))
Else
If ((Conclusion + Validite + (Ensuite * 3)) - (Delai_resiliation + Delai_supp) > Date) Then
EvalEcheance = ((Conclusion + Validite + (Ensuite * 3)) - (Delai_resiliation + Delai_supp))
Else
If ((Conclusion + Validite + (Ensuite * 4)) - (Delai_resiliation + Delai_supp) > Date) Then
EvalEcheance = ((Conclusion + Validite + (Ensuite * 4)) - (Delai_resiliation + Delai_supp))
Else
If ((Conclusion + Validite + (Ensuite * 5)) - (Delai_resiliation + Delai_supp) > Date) Then
EvalEcheance = ((Conclusion + Validite + (Ensuite * 5)) - (Delai_resiliation + Delai_supp))
Else
If ((Me.Conclusion + Validite + (Ensuite * 6)) - (Delai_resiliation + Delai_supp) > Date) Then
EvalEcheance = ((Conclusion + Validite + (Ensuite * 6)) - (Delai_resiliation + Delai_supp))
End If
End If
End If
End If
End If
End If
End If
End Sub |
Fonction que tu appelles ensuite dans ta requête source dans un champ calculé comme ceci :
Code:
Echeance: EvalEcheance([Conclusion] ,[Validite] , [Ensuite],[Delai_resiliation] , [Delai_supp])
Enfin, tu lies ton formulaire à cette requête et la zone de texte "Echeance" de ta fiche à ce champ calculé.
Cdlt,