Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > IHM
IHM Ce forum est dédié aux questions relatives à la création de formulaires et d'états, avec ou sans code VBA, et macros.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/05/2011, 09h43   #1
Invité de passage
 
Inscription : mai 2011
Messages : 8
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : mai 2011
Messages : 8
Points : 4
Points : 4
Par défaut Calcul prochaine échéance future

Bonjour à tous,

Petit nouveau sur le forum, je sollicite votre aide.

Dans un formulaire Access 2010, je cherche l'expression permettant de calculer la prochaine échéance future d'un contrat de X années qui se renouvelle automatiquement pour des périodes de même durée.

Exemple
Date de début de contrat 01/05/2001 pour une durée de 3 ans.
Les échéances successives sont 01/05/2004, 2007, 2010, 2013, ....
Étant donné que nous sommes le 22/05/2011, donc après le 01/05/2010, je souhaiterais que l'expression affiche la date du 01/05/2013 qui est la prochaine échéance du contrat.

J'ai utilisé l'expression AjDate("aaaa";[duree_contrat];[date_debut_contrat]) qui me donne la prochaine échéance (01/05/2004) mais ne me donne pas l'échéance future.
Je ne voudrais, dans la mesure du possible, ne pas utiliser de code VBA (aucune connaissance dans ce domaine !).
Toutefois, si c'est la seule solution, je remonterai mes manches...

Merci de votre aide

Bien Cordialement
jlv25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2011, 11h05   #2
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 176
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 176
Points : 2 805
Points : 2 805
Bonjour Jlv25,

Citation:
Envoyé par Jlv25
Étant donné que nous sommes le 22/05/2011 .../...
Citation:
Envoyé par Jlv25
J'ai utilisé l'expression AjDate("aaaa";[duree_contrat];[date_debut_contrat]) qui me donne la prochaine échéance (01/05/2004) mais ne me donne pas l'échéance future.
==> la date du jour n'intervient pas dans ta formule... il est donc impossible d'en tenir compte.


Essaies
Code sql :
AjDate("yyyy";[duree_contrat];Jour([date_effet]) & "/" & Mois([date_effet]) & "/" & Année(Date()))
==> pas testé... mais tu vois l'idée.
__________________
Dis-nous et à bientôt,
Richard.
----------------------------------------------------------------------------------------------
En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
Richard_35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2011, 17h52   #3
Membre Expert
 
Homme Robert JAMIN
Retraité
Inscription : juillet 2009
Messages : 1 223
Détails du profil
Informations personnelles :
Nom : Homme Robert JAMIN
Âge : 73
Localisation : Belgique

Informations professionnelles :
Activité : Retraité
Secteur : Enseignement

Informations forums :
Inscription : juillet 2009
Messages : 1 223
Points : 2 022
Points : 2 022
Bonjour,

Une suggestion basée sur des champs calculés dans un requête.
Je considère que l'on a les champs
Dt_Debut_Ctr, Duree_Ctr et je veux calculer Proch_Ech
Je fais le calcul en 3 étapes

Etape 1 calcul du NbrEch déjà échues.
Code :
NbrEch: Int((Année(Date())-Année([Dt_Debut_Ctr]))/[Duree_Ctr])
Etape 2 calcul de la dernière échéance passée
Code :
Der_Ech: AjDate("aaaa";[Duree_Ctr]*[NbrEch];[Dt_Debut_Ctr])
Etape 3 clacul de la Prochaine échéance
Code :
Proch_Ech: AjDate("aaaa";[Duree_Ctr];[Der_Ech])
__________________
Cordialement.

RJ
rjamin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 09h52   #4
Invité de passage
 
Inscription : mai 2011
Messages : 8
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : mai 2011
Messages : 8
Points : 4
Points : 4
Bonjour,

Merci de votre réponse et pour la belle leçon de logique !

La méthode fonctionne bien sauf dans le cas où l'année de fin de la dernière échéance est identique à l'année en cours.
Exemple
Contrat au 1/6/2005 pour une durée de 3 ans ; la prochaine échéance sera au 1/6/2011.
Le calcul du nombre d'échéances échues donne 2.
Le calcul de la dernière échéance passée donne donc 1/6/2011 et une prochaine échéance au 1/6/2014.

Je continue sur cette piste. Si vous avez une idée, n'hésitez pas.

Merci à Richard_35 de m'avoir ré-aiguillé sur le forum suite à mon envoi en MP.
jlv25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 10h10   #5
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 176
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 176
Points : 2 805
Points : 2 805
Bonjour Jlv25 et Rjamin,

Une solution proche de celle de Rjamin et identique, dans l'esprit.

Via l'assistant (DDJ=Date du jour) :
Code sql :
DDJ-Début: DiffDate("yyyy";[debut];Date())
Code sql :
DDJ-Début/durée: Ent([DDJ-Début]/[duree])
Code sql :
CalcEch: AjDate("yyyy";[DDJ-début/durée]*[duree];[debut])
==> pas testé.


Ce qui est sûr, c'est qu'il faut faire
Citation:
Envoyé par Rjamin
.../... le calcul en 3 étapes
__________________
Dis-nous et à bientôt,
Richard.
----------------------------------------------------------------------------------------------
En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
Richard_35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 15h38   #6
Membre Expert
 
Homme Robert JAMIN
Retraité
Inscription : juillet 2009
Messages : 1 223
Détails du profil
Informations personnelles :
Nom : Homme Robert JAMIN
Âge : 73
Localisation : Belgique

Informations professionnelles :
Activité : Retraité
Secteur : Enseignement

Informations forums :
Inscription : juillet 2009
Messages : 1 223
Points : 2 022
Points : 2 022
Bonjour,

Essayer en modifiant le calcul du NbrEch

Remplacer la formule par

Code :
NbrEch: Int((Date()-[Dt_Debut_Ctr])/365,25/[Duree_Ctr])
A tester avec différentes dates de début.
__________________
Cordialement.

RJ
rjamin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2011, 12h38   #7
Invité de passage
 
Inscription : mai 2011
Messages : 8
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : mai 2011
Messages : 8
Points : 4
Points : 4
Bonjour,

Après essai de différentes dates, dont des 29 février, la formule fonctionne bien (celle de rjamin, je n'ai pas testé celle de Richard).

Merci à vous deux de votre collaboration efficace

Bien Cordialement
jlv25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h05.


 
 
 
 
Partenaires

Hébergement Web