Robert aime travailler sur la généalogie. Parfois, lorsqu’il trouve un cimetière plus ancien, au lieu que les dates de naissance et de décès soient visibles sur une pierre tombale, une seule date est visible et un âge. Par exemple, « né: 18 janvier 1801, décédé 81 ans, 11 mois, 17 jours » ou « âge: 93 ans, 8 mois, 22 jours, décédé le 18 mars 1901. » Robert se demande s’il existe un moyen de calculer la date manquante à la journée.

Il existe un moyen de le faire, mais cela n’implique pas l’utilisation de fonctions de feuille de calcul normales. Alors qu’Excel inclut un riche assortiment de fonctions de feuille de calcul qui vous permettent de manipuler des dates, la «date de base» pour Excel est le 1er janvier 1900; c’est la date à partir de laquelle toutes les dates sont calculées. (Vous pouvez modifier la date de base, mais seulement de quatre ans, à 1904. Cette fonctionnalité est fournie pour la compatibilité avec Excel sur le Mac.) Cela signifie que les dates plus anciennes, telles que celles que vous trouveriez dans le cimetière à des fins de généalogie, peuvent ne sera pas calculé directement dans Excel.

Heureusement, VBA n’a pas cette limitation. Cela signifie que vous pouvez facilement créer une fonction définie par l’utilisateur (une macro) qui fera le calcul pour vous. Commencez par placer la date de début (date de naissance ou de décès)

dans la cellule B1. Ensuite, dans les cellules B2: B4, entrez le nombre d’années, de mois et de jours pour lesquels vous souhaitez ajuster la date de début. Ainsi, si B1 contient une date de naissance, alors les cellules B2: B4 doivent être positives (vous voulez les ajouter à la date de début). Si B1 contient une date de décès, alors B2: B4 doit être négatif (vous voulez les soustraire de la date de début).

Ensuite, créez cette macro:

Function FindDate(Start As Date, iYrs As Integer, _   iMths As Integer, iDays As Integer)



Application.Volatile     Dim D As Date

D = DateAdd("yyyy", iYrs, Start)

D = DateAdd("m", iMths, D)

D = DateAdd("d", iDays, D)



FindDate = Format(D, "m/d/yyyy")

End Function

Dans la cellule où vous souhaitez afficher la date calculée, vous pouvez entrer la formule suivante:

=FindDate(B1,B2,B3,B4)

Le résultat de la fonction est une date formatée qui représente la date de début ajustée en fonction des années, des mois et des jours que vous spécifiez. Ainsi, si la cellule B1 contient 1/18/1801, la cellule B2 en contient 81, la cellule B3 en contient 11 et la cellule B4 en contient 17, alors la fonction renverra 1/4/1883. De même, si la cellule B1 contient 3/18/1901, la cellule B2 contient -93, la cellule B3 contient -8 et la cellule B4 contient -22, le résultat renvoyé sera 6/26/1807.

_Note: _

Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites ExcelTips), j’ai préparé une page spéciale qui comprend des informations utiles.

lien: / excelribbon-ExcelTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur].

ExcelTips est votre source pour une formation Microsoft Excel rentable.

Cette astuce (12277) s’applique à Microsoft Excel 2007, 2010, 2013 et 2016.

Vous pouvez trouver une version de cette astuce pour l’ancienne interface de menu d’Excel ici: link: / excel-Tombstone_Date_Math [Tombstone Date Math].