XL 2019 Age sur deux siècles

Caninge

XLDnaute Accro
Bonjour à tous,

j'ai réussi à calculer le nombre d'années entre deux dates, mais seulement s'ils sont sur un même siècle.
Mais deux dates sur deux siècles je n'arrive pas.
Pouvez-vous m'aider s'il vous plait.
CANINGE
 

Pièces jointes

  • Age sur deux siècles.xlsx
    9 KB · Affichages: 28

patricktoulon

XLDnaute Barbatruc
Bonjour @Victor21
toute tes excuses mon oeuil oui !!! 🤣 🤣 🤣 🤣 🤣
non pour etre serieux
c'est pas jouable (dans toute les possibilité) vraiment correctement sans épaissir un peu le jeu de conditions
mais comme @eriiic a insister sur ce point , nous avons essayé a code réduit mais les résultats ne sont pas tous correctes
le jeu de conditions nécessaire est bien plus important que ces deux( if) simples
et est ce vraiment utile même si l'exercice est intéressant
c'est un peu pour ça et plein d'autre chose que je limite la fonction a 1800 ce qui est déjà pas mal en soit puisque excel ne le fait pas

et puis finalement ca n'est qu'une interprétation
exemple doit on dire
il y a 1 mois entre le 29 novembre 1582 et le 01/01/1583 ou 22 jours
car après tout le mois de decembre 31 ou 21 jour c'est un le mois de décembre quand meme
sachant que finalement le but de la fonction c'est de donner la datediff en année mois jour
parti de la je dois calculer le mois quand il est englobé dans l'intervalle ou pas
etc.. etc....
prise de tête ce truc 🤣 🤣 🤣
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
Bonjour @pierrejean au dessus de 1800 il y a plus court
comme tu peux le voir
le résultat est faux pour le mois de décembre 1582 qui est l'object de cette fin de discussion
on a 27 jours alors que l'on devrait en avoir 15
1625585263653.png

la méthode que tu emploie je l'utilisais avant (amener la date1 a l'année de la date2 avant calcul
car sur 2007 datedif fonctionnait bizarrement
jusqu'au moment ou je me suis aperçu que evaluate avec les même formule fonctionnait en vba
donc pourquoi s'en priver ;)

on rajoute 2000 ans de plus au 2 dates et
VB:
A = Evaluate("=DATEDIF(" & CLng(dat1) & "," & CLng(dat2) & ",""y"")")
M = Evaluate("=DATEDIF(" & CLng(dat1) & "," & CLng(dat2) & ",""ym"")")
J = Evaluate("=DATEDIF(" & CLng(dat1) & "," & CLng(dat2) & ",""md"")")
il ne te reste plus qu'a broder ta chaîne de retour après
Attention dat1 doit être plus ancienne que dat2 (dans ma fonction j'inverse les dates si c'est pas le cas )

j'ajouterais que ton test isnull n'est pas vraiment ce qu'il faut faire
Code:
If Not IsNull(Dated) And Not IsNull(Datef) Then
si j'injecte "barbapapa" et "trucmuche" il me plante une "#VALEUR"
 
Dernière édition:

Discussions similaires

Réponses
22
Affichages
750

Statistiques des forums

Discussions
315 147
Messages
2 116 770
Membres
112 857
dernier inscrit
sanogo