Déterminer si une année est une année bissextile (Microsoft Excel)
Bob se demande s’il existe un moyen facile de déterminer si l’année d’une date particulière est une année bissextile, aux fins du calcul des intérêts et du nombre de jours de composition.
Nous savons tous que si une année est divisible par 4, alors c’est une année bissextile, non? Eh bien, en fait, c’est faux. Donc, vous ne pouvez pas simplement diviser un nombre d’année par 4, comme dans l’exemple suivant, pour déterminer s’il s’agit d’une année bissextile:
=IF(MOD(YEAR(A1), 4) = 0, "Leap", "Regular")
La formule fonctionnera pour toutes les dates de ce siècle (années 2000 à 2099), mais elle ne fonctionnera pas de manière fiable en dehors de cette plage. La raison en est que «divisible par 4» n’est pas le seul test pour une année bissextile. Si l’année est une année du siècle (divisible par 100), alors c’est une année bissextile seulement si elle est divisible par 400. Ainsi, l’année 2000 est une année bissextile, mais l’année 2100 ne l’est pas.
Si vous voulez un moyen infaillible de déterminer si une date survient dans une année bissextile, alors votre formule doit être plus complexe:
=IF(OR(AND(MOD(YEAR(A1),4)=0,MOD(YEAR(A1),100)>0), MOD(YEAR(A1),400)=0),"Leap","Regular")
Notez qu’il s’agit d’une formule unique; il est montré ici sur deux lignes afin qu’il s’adapte entièrement à l’écran. La formule teste les trois conditions nécessaires pour déterminer si une date tombe dans une année bissextile.
Bien sûr, une approche différente consiste simplement à déterminer si une année donnée contient un 29 février. Il existe un certain nombre de formules qui pourraient être utilisées pour accomplir cette tâche:
=IF(DAY(EOMONTH("1Jan"&YEAR(A1),1))=29, "Leap", "Regular") =IF(MONTH(DATE(YEAR(A1),2,29))=2, "Leap", "Regular") =IF(DAY(DATE(YEAR(A1),2,29))=29, "Leap", "Regular") =IF(DAY(DATE(YEAR(A1),3,0))=29, "Leap", "Regular")
Toutes les méthodes décrites jusqu’à présent fonctionnent correctement pour toute date prise en charge par Excel, à une exception près. Ceux qui utilisent la fonction DATE (les trois derniers ci-dessus) ne fonctionneront pas si la date dans la cellule A1 est en 1900. Ceux-ci renverront toujours que 1900 est une année bissextile, même si ce n’est pas le cas. (Il est intéressant de noter que la fonction EOMONTH ne présente pas le même problème que la fonction DATE à cet égard.)
Si vous devez travailler avec des dates antérieures à celles prises en charge par Excel (avant le 1er janvier 1900), vous devrez travailler directement avec les années au lieu de tirer l’année à partir d’une date Excel. La variation de la formule à trois tests fonctionnera très bien, si la cellule A1 ne contient qu’une année:
=IF(OR(AND(MOD(A1,4)=0,MOD(A1,100)>0),MOD(A1,400)=0),"Leap","Regular")
Vous pouvez également créer une fonction définie par l’utilisateur qui testerait la date.
Cette approche fonctionnera très bien, que la cellule contienne une valeur de date ou une valeur de texte pour une date. (Si vous entrez une valeur de date non prise en charge dans une cellule, telle que 1/1/1896, Excel traite l’entrée comme une valeur de texte plutôt que d’essayer de l’analyser comme une date.) L’exemple suivant fonctionne correctement avec toutes les dates prises en charge par VBA, qui se situe entre l’année 100 et l’année 9999:
Function IsLeap1(c As Range) As Boolean YearNo = Year(c.Value) If YearNo Mod 100 = 0 Then IsLeap1 = ((YearNo \ 100) Mod 4 = 0) Else IsLeap1 = (YearNo Mod 4 = 0) End If End Function
Pour utiliser la fonction dans votre feuille de calcul, vous devez entrer une formule comme celle-ci:
=IF(IsLeap1(A1),"Leap", "Regular")
La macro sur une seule ligne suivante fonctionne en utilisant l’astuce consistant à déterminer s’il y a un 29 février dans l’année en question:
Function IsLeap2(c As Range) IsLeap2 = IsDate("2/29/" & Year(c.Value)) End Function
La macro est référencée de la même manière dans votre feuille de calcul que la macro précédente:
=IF(IsLeap2(A1),"Leap", "Regular")
Si vous avez besoin de moyens plus créatifs pour déterminer si une date est dans une année bissextile, consultez cet article:
http://chandoo.org/wp/2012/02/29/check-leap-year-using-excel/
_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 (9978) s’applique à Microsoft Excel 2007, 2010, 2013, 2016, 2019 et Excel dans Office 365.