Date sous forme aa/mm/jj

Fermé
Lima1965fr - Modifié le 28 janv. 2023 à 17:31
 Lima1965fr - 29 janv. 2023 à 20:18

Bonjour à toutes et tous,

Je me débat depuis un bon moment avec un p'tit problème de calculs sur dates...

J'aurais bien besoin de votre aide !

Voilà,

J'ai créé une Base de Données afin de gérer des membres d'une association.

Dans celle-ci, je note dans un champs leur date d'entrée.

Puis, dans mon formulaire principal, j'ai inséré un champs texte qui me permet de calculer leur ancienneté. Voici la formule : =DiffDate("m";[Date Entrée];Maintenant())

Celle-ci fonctionne parfaitement mais me donne un résultat -en toute logique- en nombre de mois (avec un masque de saisi : "ancienneté : " 0000 " Mois"... pour faire joli !)

Je voudrais que ce résultat me soit restitué sous forme "Ancienneté : " 00"ans" 00"mois" 00"jours".

Deuxième défi...

Certains de ces membres ont quitté l'association, mais je voudrait les conserver dans ma Base de Données. J'ai donc inclus un champs "date de sortie"

Je souhaite calculer également l'ancienneté moyenne, mais pour cela, il me faut tenir compte de l'ancienneté des présents (date du jour - date d'entrée) et l'ancienneté des sortis (date de sortie-date d'entrée)... tout cela ramené à une moyenne exposée sous le même format : 00"ans" 00"mois" 00"jours".

Merci beaucoup à ceux qui voudront bien prendre un peu de temps pour m'aider dans cette démarche.

Je précise que je ne suis pas du tout à l'aise avec le VBA, donc si on pouvait se limiter à des expressions (ou fonctions) Cela m'irait très bien.

Bien cordialement.


Windows / Chrome 109.0.0.0

2 réponses

yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
29 janv. 2023 à 07:18

bonjour,

pour la première question, un exemple:

=DiffDate("m";[Date Entrée];Maintenant()) & "," & DiffDate("aaaa";[Date Entrée];Maintenant())

Pour la seconde, que contient le champ "date de sortie" pour les membres actifs?

0

Bonjour yg_be et merci de ton aide.

Ton "DiffDate" ne me restitue pas ce que j'attends...

Il me donne l'ancienneté en nombre de mois, puis, une virgule, et en nombre d'année.

Ce que je souhaiterais moi, c'est que cette ancienneté me soit restituée sous forme x année, x mois et x jours.

Par exemple, pour quelqu'un adhérant depuis 61 mois, je voudrais voir apparaitre 5 ans et 1 mois.

Pour quelqu'un qui adhérerait depuis le premier janvier 2022 par exemple, qu'il me ressorte "1 an et 29 jours".

Merci.

Merci beaucoup à ceux qui pourraient m'éclairer.

Quant à la seconde partie, mon champ Date de Sortie reste vide si la personne est toujours active. Mais cela peut se modifier au besoin (par exemple le remplir par défaut avec une valeur nulle...).

Merci encore.

Bonne soirée

0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476 > Lima1965fr
29 janv. 2023 à 18:58

Mon exemple était destiné à te mettre sur le chemin d'une solution.  En l'analysant et en le comprenant, je pense que cela te permettra de mieux comprendre comment arriver à ce que tu souhaites.

Pour le second, essaie ceci:

iif(datedesortie is null; date(); datedesortie) - dateentree)
0

Merci encore.

Je vais essayer cela.

Concernant la première problématique, je viens de la résoudre assez simplement t avec une commande SplitDiffDate dans une requete, et même dans les données du champs de mon formulaire.

Cela fonctionne parfaitement.

C'est juste que je ne connaissait pas cette commande.

Merci encore de ton aide.

Je m'y remettrai dès demain matin et te tiendrai informé.

0