Déterminer si une date et une heure sont comprises dans les heures de travail (Microsoft Excel)
Ken a une date et une heure stockées dans la cellule C3. Il a besoin d’une formule pour déterminer si cette date et cette heure se situent dans les heures normales de travail (8 h à 17 h, du lundi au vendredi). Ken peut facilement vérifier l’heure, mais n’arrive pas à trouver un moyen de vérifier si c’est un jour de travail.
Il existe une multitude de formules que vous pourriez trouver pour résoudre cette situation. Les éléments clés de toute formule sont que vous déterminez si la date est comprise entre le lundi et le vendredi (ce que Ken dit savoir faire) et que vous déterminez si l’heure est comprise entre 8 h et 17 h. Une fois que vous avez déterminé ces deux faits, vous pouvez utiliser la fonction ET pour déterminer une condition globale «vrai» ou «faux».
À titre d’exemple, vous pouvez utiliser la formule suivante pour déterminer si la date est comprise entre lundi et vendredi:
=WEEKDAY(C3, 2) < 6
Cela renvoie True ou False et fonctionne car le deuxième paramètre de la fonction WEEKDAY, lorsqu’il est défini sur 2, indique que WEEKDAY renvoie une valeur de 1 à 7 où 1 = lundi et 7 = dimanche. Ainsi, WEEKDAY renverrait 1, 2, 3, 4 ou 5 pour la plage du lundi au vendredi.
Pour la partie temporelle de la formule, vous pouvez utiliser la fonction HOUR, de cette manière:
=HOUR(C3) >= 8
Cela renvoie True ou False selon que l’heure est supérieure ou égale à 8h00. Vous pouvez tester, de la même manière, si l’heure est avant 17h00 de cette manière:
=HOUR(C3) <= 17
Une fois ces trois tests définis, vous pouvez tous les combiner en utilisant la fonction AND:
=AND(WEEKDAY(C3, 2) < 6, HOUR(C3) >= 8, HOUR(C3) <= 17)
Puisque la fonction HOUR renvoie une valeur entière (0 à 23), vous pouvez raccourcir encore plus la formule de cette manière:
=AND(WEEKDAY(C3, 2) < 6, HOUR(C3) > 7, HOUR(C3) < 18)
Si les trois conditions sont remplies, la fonction AND renvoie True.
Ainsi, vous pouvez envelopper cette formule dans une instruction IF, comme ceci:
=IF(AND(WEEKDAY(C3, 2) < 6, HOUR(C3) > 7, HOUR(C3) < 18), "Working", "Non-Working")
Cela fonctionne très bien, à moins que vous ne souhaitiez commencer à prendre en compte les vacances ou que votre semaine de travail soit différente du lundi au vendredi. Dans ce cas, il vous suffit de modifier la première partie de la formule; la partie qui utilise la fonction WEEKDAY. Ma suggestion serait de s’appuyer, à la place, sur les fonctions NETWORKDAYS ou NETWORKDAYS.INTL. Plutôt que de décrire ici comment utiliser ces fonctions, vous voudrez vous référer au ExcelTip intitulé « ` link: / excelribbon-Calculating_Business_Days [Calculating Business Days] `. »
ExcelTips est votre source pour une formation Microsoft Excel rentable.
Cette astuce (4270) s’applique à Microsoft Excel 2007, 2010, 2013 et 2016.