Excellente idée ! C'est en forgeant qu'on devient forgeron.
C'est certain, lorsqu'on ouvre le tableur, on sait à peu près ce qu'on va y écrire. Autrement, inutile de l'ouvrir.
Je crois fermement que les ingrédients primaires sont : du papier, des crayons à papier, des gommes, du jus de cervelle, de la sueur et des larmes. Cela dit, je ne me risquerai pas à proposer une méthode. Peut-être quelques éléments ?
Décomposer le problème en éléments simples.
Aller du général au particulier. (Concevoir un algorithme dans ses grandes lignes avant de traiter les ramifications.)
Mais j'arrête, car ce genre de conseils est connu de tous et ne donne guère de prise...
Dans le cas qui nous occupe, j'ai rédigé ma démarche :
Je me place d'abord dans le cas où on ne traite que des dates postérieures au 28 février 1900, réservant le traitement des erreurs induites par la croyance persistante de Microsoft en l'existence d'un 29 février 1900.
Dans un premier temps, je ne considère que des dates à 0 heure, c'est-à-dire des dates repérées par un nombre entier dans Excel®.
D'autre part, je suppose toujours (et, je pense, logiquement) que la date de fin (que je noterai Date2 dans la suite) n'est pas antérieure à la date de début (désormais désignée par Date1).
Pour ce qui est de la méthode que je retiens, elle diffère notablement de la méthode généralement utilisée par ceux qui s'attaquent à ce problème.
En général, les gens utilisent une méthode que je qualifierai d'« anthropocentrée » : comme on le fait « à la main », ils cherchent d'abord combien d'années séparent les deux dates ; puis, le cas échéant, combien de mois résiduels doit-on ajouter à ces années ; enfin, si besoin est, le nombre de jours pour compléter l'écart.
Cette méthode a l'inconvénient de multiplier les problèmes dus au fait que ni l'année ni le mois ne sont des unités au sens métrologique du terme. D'où des considérations compliquées pour jongler avec les années bissextiles ou communes et les mois de 28, 29, 30 ou 31 jours.
C'est pourquoi j'ai abandonné cette approche. Remarquant que, si ni l'année ni le mois ne sont des unités, il n'en est pas moins vrai qu'on considère que l'année et le mois sont dans un rapport constant de un à douze, j'ai choisi de privilégier le décompte des mois séparant les deux dates. Ce décompte étant fait, une simple division euclidienne par douze me donne le nombre d'années (quotient de la division) et le nombre de mois résiduels (reste de la division) séparant les deux dates.
Cette approche m'a semblé d'autant plus intéressante qu'on dispose d'une fonction native qui semble assez sûre : MOIS.DECALER.
Etc.
Le texte étant un peu long (un peu plus de mille mots), je le joins au format
.pdf. (C'est un document éditable et modifiable à souhait avec
LibreOffice Writer.)
J'y donne la construction pas à pas de la « grrrande formule paramétrée » qui n'est en réalité que la juxtaposition un peu répétitive de petits éléments pas très-difficiles à construire.
Étant un piètre dactylographe, il se peut que j'ai laissé quelques fzutes de frqppe et quelques fantaisis orthotrafiques. Veuillez m'en excuser. Merci.
Arrêtez ! Je ne suis votre cadet que de moins de mille jours : vous me faites peur !