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

Access Discussion :

Formule de calcul avec date


Sujet :

Access

  1. #1
    Candidat au Club
    Femme Profil pro
    Ressources humaines
    Inscrit en
    septembre 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Industrie

    Informations forums :
    Inscription : septembre 2017
    Messages : 6
    Points : 4
    Points
    4
    Par défaut Formule de calcul avec date
    Bonjour,

    Pourriez vous m'aider?

    J'ai une table avec des codes "delaisReglement"
    une autre table avec des N° de factures et des "DateFactures"
    Je souhaiterais qu'en choisissant dans un menu déroulant, les conditions de règlement, l'échéance de la facture se mette automatiquement.
    facture du 01/09/2017 : Condition de règlement à 60 jours (code 066) : EchéanceFactures : 31/10/2017
    Si Condition de règlement à 30 jours le 15 (033) : EchéanceFactures : 15/10/2017, etc...

    J'essaye d'utiliser les mêmes formules que pour excel, mais je ne sais pas comment m'y prendre :
    31/08/2017 =FIN.MOIS(DateFacture;1) 30/09/2017 030
    31/08/2017 =FIN.MOIS(DateFacture;1)+10 10/10/2017 032
    31/08/2017 =FIN.MOIS(DateFacture;1)+15 15/10/2017 033
    31/08/2017 =DateFacture+60 30/10/2017 066
    31/08/2017 =FIN.MOIS(DateFacture+45;0) 31/10/2017 L45

    Merci

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    mai 2012
    Messages
    3 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : mai 2012
    Messages : 3 691
    Points : 7 441
    Points
    7 441
    Par défaut
    Bonjour,

    Pour récupérer les valeurs des autres colonnes d'une liste déroulante, il faut utiliser sa propriété column(i) où i indique le numéro de colonne et commence par 0.
    Il faut utiliser la fonction Datediff pour trouver le résultat d'une somme entre une date et un intervalle.

    Soit, tu as :
    - ton champ "DateFacture"
    - ta liste déroulante "CodeReglement" avec les champs CodeReglement et DelaiReglement (entier en nombre de jours) avec les propriétés :
    Nbre colonnes : 2
    Colonne liée : 1

    Dans ton champ destination, tu peux avoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    = Datediff("d",Me.DateFacture,Me.CodeRegelement.column(1))
    Cordialement.
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  3. #3
    Candidat au Club
    Femme Profil pro
    Ressources humaines
    Inscrit en
    septembre 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Industrie

    Informations forums :
    Inscription : septembre 2017
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Ta proposition est très intérressante. Sauf que les délais des règlements ne sont pas en jours fixes, sauf exception.
    C'est souvent 30 jours fin de mois le 15 du mois suivant, par exemple, d'ou l'utilisation de "FIN.MOIS+15"

    Par contre je ne comprends pas pourquoi le N° de colonne commence par 0, dans une requête ne peut on pas nommer le nom du champs où sont les formules?

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    mai 2012
    Messages
    3 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : mai 2012
    Messages : 3 691
    Points : 7 441
    Points
    7 441
    Par défaut
    Ta proposition est très intérressante. Sauf que les délais des règlements ne sont pas en jours fixes, sauf exception.
    C'est souvent 30 jours fin de mois le 15 du mois suivant, par exemple, d'ou l'utilisation de "FIN.MOIS+15"
    N'ayant pas les détails de tes données, je ne peux que proposer : pour trouver le numéro du dernier jour du mois, tu as des fonctions ICI

    Pour cela :
    dans une requête ne peut on pas nommer le nom du champs où sont les formules?
    Je n'ai pas compris ton questionnement.

    Cordialement.
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  5. #5
    Membre éprouvé
    Inscrit en
    août 2008
    Messages
    656
    Détails du profil
    Informations forums :
    Inscription : août 2008
    Messages : 656
    Points : 956
    Points
    956
    Par défaut
    Bonjour,

    cette fonctionnalite n'existe pas sur Access, il est cependant possible de la creer
    ce sera un peu plus complique si tes echeances sont multiples (ex: 50% a telle date, 50%, 1 mois apres), et si tu as des escomptes mais ce ne semble pas le cas.


    si on part du principe qu'il n'y a qu'une seule echeance avec 2 regles generales
    Regle 1: fin de mois +x jours
    Regle 2: Date facture (ou date de reception facture?) + x jours

    il faut creer une table de Delais reglement avec les champs suivants:
    -Code: 030, 033...
    -Description:fin de mois, fin de mois+30, reception facture+60...
    - Findemois: oui/non
    - Delai: nombre de jour
    - DateFacture: champDate
    - DateEcheance: champ calcule dont le metacode ressemble a: si(FinDeMois=Oui,DateSerial(Annee(DateFacture),Mois(DateFacture)+1,1)-1+Delai,DateAdd("dd",DateFacture,Delai))

    la dynamique serait que au moment de la selection de la condition de reglement dans la saisie de facture, le systeme envoie la date de la facture a la table des delais de reglements dans le champ DateFacture, ce qui mettra a jour le champ calcule [DateEcheance], puis, le systeme devra recuperer cette date Echeance pour la mettre a jour dans la facture.

    cette dynamique necessitera un peu de codage VBA ou datamacro

  6. #6
    Candidat au Club
    Femme Profil pro
    Ressources humaines
    Inscrit en
    septembre 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Industrie

    Informations forums :
    Inscription : septembre 2017
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Merci infiniment. Je vais commencer par créer la table.
    Ensuite, je vais surement revenir pour le codage VBA que je ne maitrise pas du tout.

    A bientot.

  7. #7
    Futur Membre du Club
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    décembre 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Industrie

    Informations forums :
    Inscription : décembre 2015
    Messages : 15
    Points : 9
    Points
    9
    Par défaut date échéance sur facture
    Bonjour

    Je ne trouve pas mon bonheur sur le forum.
    J'arrive à créer des dates d'échéance avec les règles à 60 jours net (ou 30 ou 45), 30 (ou un autre délai) jours fin de mois le 10
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =(SérieDate(Année(([DateFacture]+45));Mois(([DateFacture]+45))+1;10))
    Par contre je souhaiterai faire date facture + 30 jours et aller au 10 du mois suivant (le plus proche)
    ex : si facture date du 07/01/19 --> 7/02/19 -->échéance au 10/02/19
    si facture date du 14/01/19 --> 14/02/19 -->échéance au 10/03/19

    comment faire pour associer ces 2 expressions dans mon générateur d'expression.

    Merci beaucoup pour votre aide

  8. #8
    Rédacteur/Modérateur
    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    août 2004
    Messages
    6 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : août 2004
    Messages : 6 420
    Points : 13 538
    Points
    13 538
    Billets dans le blog
    11
    Par défaut
    Bonjour,

    Le 10 du mois le plus proche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =vraifaux(Day(datefacture + 30) <= 10; DateSerial(Year(datefacture + 30), Month(datefacture + 30), 10); DateSerial(Year(datefacture + 30), Month(datefacture + 30) + 1, 10))

    Cdlt,
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information en abondance, plein de bonnes choses à consulter sans modération

    Mes tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion de rendez-vous sur un agenda hebdomadaire
    Intégration d'un planning basé sur le module de classe clPlanner
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Un document pour vous aider à créer un formulaire de saisie des pointages dans Access :
    Pré-remplissage de sous-formulaires

  9. #9
    Futur Membre du Club
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    décembre 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Industrie

    Informations forums :
    Inscription : décembre 2015
    Messages : 15
    Points : 9
    Points
    9
    Par défaut
    Merci beaucoup,
    J'ai juste changé les virgules en point virgules et ça fonctionne parfaitement
    et surtout je l'ai intégré dans ma formule avec tout mes types d'échéances :

    VraiFaux([NombresDeJours]=2;"";VraiFaux([NombresDeJours]=0 Ou [NombresDeJours] Est Null;([DateFacture]+15);VraiFaux([NombresDeJours]=1;(SérieDate(Année(([DateFacture]+30));Mois(([DateFacture]+30))+1;0));VraiFaux([NombresDeJours]=30;[DateFacture]+30;VraiFaux([NombresDeJours]=3;(SérieDate(Année(([DateFacture]+45));Mois(([DateFacture]+45))+1;0));VraiFaux([NombresDeJours]=5;[DateFacture]+60;VraiFaux([NombresDeJours]=6;(VraiFaux(Jour([DateFacture]+30)<=10;SérieDate(Année([DateFacture]+30);Mois([datefacture]+30);10);SérieDate(Année([DateFacture]+30);Mois([DateFacture]+30)+1;10)));VraiFaux([NombresDeJours]=4;(SérieDate(Année(([DateFacture]+60));Mois(([DateFacture]+60))+1;0));[DateFacture]+47)-1)))))))


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

Discussions similaires

  1. Calcul avec date - formule à modifier
    Par Weiyin dans le forum Excel
    Réponses: 1
    Dernier message: 21/06/2009, 17h22
  2. formule de calcul avec Excel 2007
    Par linel dans le forum Excel
    Réponses: 1
    Dernier message: 22/02/2009, 10h05
  3. Calculs avec date
    Par jncoffy dans le forum Excel
    Réponses: 7
    Dernier message: 05/03/2008, 17h37
  4. Formule de calcul avec variable ?
    Par clarisse dans le forum Excel
    Réponses: 5
    Dernier message: 19/09/2007, 15h27
  5. Réponses: 2
    Dernier message: 12/04/2006, 11h33

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