IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Calcul d'échéance [AC-2003]


Sujet :

VBA Access

  1. #1
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2011
    Messages : 8
    Points : 4
    Points
    4
    Par défaut Calcul d'échéance
    Bonjour,

    Dans ma base access je cherche a faire un calcul d'échéance de contrat en fonction d'un champ date de conclusion additionné de sa validité première, additionné de sa validité secondaire, moins le délais de résiliation et moins un délais supplémentaire et ceci à jour pour l'année en cours quand il n'est pas inférieur à la validité première.

    Je cherche la solution pour cette réalisation.

    Est-ce que quelqu'un peut m'aider.

    Merci d'avance pour vos réponses.

    Daniel

  2. #2
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 579
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 579
    Points : 56 602
    Points
    56 602
    Billets dans le blog
    40
    Par défaut
    Bonsoir,

    le tuto qu'il te faut sur les dates : Les Fonctions Date/Heure

  3. #3
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2011
    Messages : 8
    Points : 4
    Points
    4
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  4. #4
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 239
    Points : 19 364
    Points
    19 364
    Billets dans le blog
    61
    Par défaut
    Bonjour,

    Qu'entendez-vous par "pas performante" ?

    Le résultat donné est correct mais vous la trouvez lente ?

    Cdlt,
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  5. #5
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2011
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Bonjour,
    Les calculs se bloquaient. Mais j'ai trouvé la solution, c'est parce que le résultat était enregistré dans la table.
    Maintenant un autre problème surgit: Dans mon formulaire j'ai créer des onglets ou j'ai placé mon sous formulaire avec mon calcul sur l’échéance mais l'affichage change pour tous les enregistrements en même temps je ne comprends pas pourquoi quel est le paramètre qui est faut ?
    Merci pour votre participation.
    Daniel

  6. #6
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 239
    Points : 19 364
    Points
    19 364
    Billets dans le blog
    61
    Par défaut
    Bonjour,

    Ton contrôle "échéance" semble être indépendant, il n'y a pas de liaison avec un champ de ta table ou de ta requête source (cf. propriété "source contrôle").

    Il faudrait créer un champ calculé à partir de ton code et lier ta zone de texte "échéance" à ce champ avec la propriété "source contrôle".

    Cdlt,
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  7. #7
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2011
    Messages : 8
    Points : 4
    Points
    4
    Par défaut Calcul d'echeance
    Mais comment utiliser mon code dans le champ ou placer le code?

  8. #8
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 239
    Points : 19 364
    Points
    19 364
    Billets dans le blog
    61
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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,
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  9. #9
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2011
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Bonjour,
    J'ai appliqué ce que tu m'as dit et ça fonctionne. Merci
    Mais maintenant est-ce que je peut simplifier ma fonction et comment le faire pour quelle puisse fonctionner sur de nombreuses années ?
    Salutations.
    Daniel

  10. #10
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 239
    Points : 19 364
    Points
    19 364
    Billets dans le blog
    61
    Par défaut
    Bonjour,

    Peux-tu préciser les choses avec un exemple concret ?

    Cdlt,
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  11. #11
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2011
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Bonjour,
    Avec la fonction case ou with est-ce possible et plus rapide dans l'exécution ?
    Daniel

  12. #12
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 239
    Points : 19 364
    Points
    19 364
    Billets dans le blog
    61
    Par défaut
    Pour être honnête je ne crois pas qu'il y ait une grosse différence.

    Le select case simplifie juste les choses au niveau de l'écriture :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Select case Variable
     
    Case 1
    ...
     
    Case 2
    ...
     
    End select
    a+
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  13. #13
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2011
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Merci pour ton aide elle m'a été précieuse.
    Salutations.
    Daniel

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Calcul date échéance, avec RechercheV
    Par diego21 dans le forum Excel
    Réponses: 4
    Dernier message: 13/03/2015, 23h25
  2. Calculer date échéance
    Par thaundeadboss dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 17/09/2014, 17h47
  3. [AC-2010] Calcul prochaine échéance future
    Par jlv25 dans le forum IHM
    Réponses: 6
    Dernier message: 26/05/2011, 13h38
  4. calcul date échéance
    Par popofpopof dans le forum IHM
    Réponses: 18
    Dernier message: 13/10/2009, 21h39
  5. Calcul de date d'échéance
    Par neuro dans le forum Access
    Réponses: 15
    Dernier message: 26/08/2005, 16h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo