Deux intervalles de temps se chevauchent lorsque chacun commence avant la fin de l’autre. Ce test inclut l’inclusion complète. Voici comment l’appliquer dans Numbers sur votre Mac pour comparer des périodes de publication, valider des dates et gérer les extrémités qui se touchent.

Ce processus s’adresse à une personne qui planifie des périodes de publication dans un tableur. Toutes les dates et tous les libellés ci-dessous sont fictifs. Vous comparerez deux périodes par ligne et obtiendrez un résultat clair sans écrire de programme.

Qu’est-ce qu’un chevauchement ?

Commencez par décider si un intervalle inclut son instant de fin. Cet article utilise un intervalle dont le début est inclus et la fin exclue, noté [start, end). Une période allant de 09:00 à 12:00 inclut son début et s’arrête à midi. Une autre période commençant à 12:00 ne la chevauche donc pas. Cela correspond à la convention des événements dans iCalendar : DTSTART est inclusif et DTEND est non inclusif. RFC 5545, section 3.6.1.

Pour deux intervalles valides de longueur positive, le test complet de chevauchement est le suivant :

A.start < B.end AND B.start < A.end

Le raisonnement est simple. Deux périodes sont distinctes si A se termine avant que B commence, ou au moment exact où B commence, ou si B se termine avant que A commence, ou au moment exact où A commence. Si aucune de ces conditions de séparation n’est remplie, elles partagent une partie de leur durée. Cette déduction explique aussi pourquoi l’inclusion complète ne nécessite pas de condition de chevauchement supplémentaire.

Prenons A, qui s’étend de 09:00 à 12:00. Si B s’étend de 08:00 à 13:00, aucune extrémité de B ne se trouve à l’intérieur de A, et pourtant B contient toute la période A. Un test qui vérifie seulement si le début ou la fin de B se situe dans A manquerait ce cas. La règle des deux comparaisons le détecte.

Gardez ce jeu de tests fictifs à côté de votre tableur. Toutes les heures ci-dessous correspondent au 10 novembre 2026 et utilisent la même base horaire.

Période A Période B Résultat attendu Motif
09:00–12:00 11:00–13:00 Chevauchement Intersection partielle
09:00–12:00 10:00–11:00 Chevauchement A contient B
09:00–12:00 08:00–13:00 Chevauchement B contient A
09:00–12:00 09:00–12:00 Chevauchement Périodes identiques
09:00–12:00 12:00–13:00 Pas de chevauchement Les extrémités se touchent uniquement
09:00–12:00 13:00–14:00 Pas de chevauchement Intervalle entre les périodes

Configurer des dates et des heures comparables dans Numbers

Utilisez des dates et des heures complètes pour les périodes de publication minutées. Une heure seule ne permet pas de distinguer ce matin de demain matin. Numbers ajoute également les composants manquants : saisir une heure seule ajoute la date du jour. Masquer une date ou une heure modifie son affichage, tandis que le composant enregistré continue de participer aux calculs. Formater les dates, les devises et d’autres données dans Numbers sur Mac.

Créez un tableau avec les colonnes suivantes, en utilisant la ligne 1 pour les en-têtes :

Colonne En-tête Rôle
A Paire Libellé neutre pour la comparaison
B Début A Début de la première période
C Fin A Fin exclue de la première période
D Début B Début de la deuxième période
E Fin B Fin exclue de la deuxième période
F Vérification des données Indique si la comparaison est possible
G Résultat du chevauchement La réponse

Sélectionnez les cellules de saisie des colonnes B à E. Dans la barre latérale Format, choisissez Cellule, puis réglez Format des données sur Date et heure. Choisissez un affichage qui montre la date et l’heure. La Vue intelligente des cellules, en bas de la fenêtre, vous permet d’inspecter les deux composants d’une valeur sélectionnée. Instructions d’Apple pour formater les dates et les heures.

Pour reproduire le premier exemple, saisissez Paire exemple dans A2 et entrez les formules suivantes dans les cellules indiquées. Elles définissent A comme 09:00–12:00 et B comme 10:00–11:00 le 10 novembre 2026. Considérez que chaque extrémité de cet exemple est en UTC ; indiquez cette convention à côté du tableau.

Cellule Formule
B2 =DATE(2026,11,10)+DURATION(0,0,9)
C2 =DATE(2026,11,10)+DURATION(0,0,12)
D2 =DATE(2026,11,10)+DURATION(0,0,10)
E2 =DATE(2026,11,10)+DURATION(0,0,11)

DATE construit une date à partir de l’année, du mois et du jour, ce qui évite les chaînes de date ambiguës. DURATION accepte les semaines, les jours et les heures comme ses trois premiers arguments ; DURATION(0,0,9) fournit donc neuf heures. Ce sont des formules de tableur, pas des commandes Terminal. DATE, DURATION.

Pour saisir une formule, sélectionnez la cellule de destination, tapez =, saisissez l’expression et appuyez sur Retour. Numbers prend en charge les comparaisons entre les valeurs des cellules et affiche leurs résultats booléens. Si vos réglages utilisent une virgule comme séparateur décimal, utilisez des points-virgules entre les arguments des fonctions au lieu de virgules. Calculer des valeurs à partir des données des cellules d’un tableau dans Numbers sur Mac, Présentation des fonctions.

Valider les périodes avant de tester le chevauchement

Pour cette tâche, exigez quatre valeurs de date et d’heure reconnues et une fin strictement postérieure au début correspondant. Un intervalle inversé doit être corrigé. Une période de publication de durée nulle nécessite aussi une décision distincte, car selon la convention choisie, elle ne représente aucune durée occupée.

Saisissez cette formule dans F2 :

=IF(AND(ISDATE(B2),ISDATE(C2),ISDATE(D2),ISDATE(E2)),IF(AND(B2<C2,D2<E2),"Ready","Invalid window"),"Check dates")

Le test externe vérifie si chaque extrémité est une valeur de date. Le test interne vérifie l’ordre des deux périodes. ISDATE identifie les valeurs de date, AND exige que toutes ses conditions soient vraies et IF sélectionne le résultat correspondant. ISDATE, AND, IF.

L’exemple doit renvoyer Ready. S’il renvoie Check dates, inspectez les cellules de saisie au lieu de considérer la ligne comme composée de périodes distinctes. S’il renvoie Invalid window, vérifiez que les extrémités ne sont pas égales, que les valeurs ne sont pas inversées et que la date du lendemain n’a pas été omise. Laissez toute erreur de formule visible jusqu’à ce que vous en ayez corrigé la cause.

Détecter le chevauchement, y compris l’inclusion complète

Saisissez cette formule dans G2 :

=IF(F2="Ready",IF(AND(B2<E2,D2<C2),"Overlap","No overlap"),"Check inputs")

Pour une ligne valide, les deux comparaisons appliquent directement la règle de chevauchement : B2 correspond au début de A, E2 à la fin de B, D2 au début de B et C2 à la fin de A. AND renvoie vrai uniquement si les deux comparaisons réussissent. Documentation d’Apple sur AND.

L’exemple renvoie Overlap, car B se situe entièrement dans A. Remplacez l’heure de D2 par 8 et celle de E2 par 13 : le résultat doit toujours être Overlap, cette fois parce que B contient A. Remplacez-les par 12 et 13 : le résultat doit devenir No overlap.

Utilisez le tableau de tests précédent pour vérifier les autres cas. Pour des comparaisons supplémentaires, saisissez une autre paire sur la ligne suivante et copiez les formules F et G dans cette ligne. Inspectez les formules copiées pour confirmer que leurs références pointent vers la nouvelle ligne.

Cette disposition compare les deux périodes fournies sur chaque ligne. Elle ne compare pas automatiquement chaque période d’une liste d’événements distincte à toutes les autres. Pour une petite liste, créez une ligne pour chaque paire distincte à examiner, en évitant les doublons dans l’ordre inverse.

Déterminer quelle période contient l’autre

Le chevauchement et l’inclusion répondent à des questions différentes. Si vous devez aussi savoir si A contient entièrement B, ajoutez une colonne H nommée A contient B et saisissez :

=IF(F2="Ready",AND(B2<=D2,E2<=C2),"Check inputs")

Pour B contient A, ajoutez une colonne I et saisissez :

=IF(F2="Ready",AND(D2<=B2,C2<=E2),"Check inputs")

Ces tests d’inclusion autorisent les limites communes. Des périodes identiques renvoient donc TRUE dans les deux colonnes. Si votre tâche exige une inclusion avec un espace de part et d’autre, remplacez les deux comparaisons non strictes de la formule d’inclusion concernée par des comparaisons strictes. Il s’agit d’une condition éditoriale supplémentaire ; elle ne modifie pas le résultat du chevauchement.

Distinguer les dates civiles, les instants, les décalages et les fuseaux horaires

Choisissez le sens de vos données avant d’appliquer les formules. Une date civile telle que 2026-11-10 désigne un jour du calendrier sans préciser de fuseau horaire. Elle convient à un libellé de publication valable toute la journée. L’API Temporal.PlainDate de TC39 modélise explicitement ce type de date indépendamment d’un fuseau. Temporal.PlainDate.

Un instant identifie un point sur la ligne du temps. Un décalage tel que +01:00 décrit la différence par rapport à UTC à ce moment-là. Un fuseau nommé tel que Europe/Paris fournit les règles régionales de l’heure. Ce sont des informations différentes : un décalage fixe ne contient pas les règles évolutives d’un fuseau nommé. Temporal.ZonedDateTime.

Par exemple, les horodatages fictifs 2026-11-10T10:00:00+01:00 et 2026-11-10T09:00:00Z désignent le même instant. Les comparer uniquement à partir des heures affichées donnerait un ordre incorrect.

Les formules du tableur ci-dessus comparent les valeurs que vous fournissez ; elles ne comportent aucune étape de conversion liée à un fuseau nommé. Pour les périodes minutées provenant de fuseaux différents, convertissez d’abord chaque extrémité en instant et exprimez toutes les extrémités en UTC. Conservez séparément les informations du fuseau d’origine si vous devez reconstituer le calendrier local prévu.

Pour une conversion automatisée, la méthode documentée par l’API consiste à construire un Temporal.ZonedDateTime avec son fuseau, puis à le convertir avec toInstant(). Sa méthode compare() ordonne les heures exactes. Lorsqu’une heure locale est ignorée ou répétée pendant une transition de décalage, l’API propose des options explicites de désambiguïsation, dont reject. Résolvez cette ambiguïté avant d’importer des valeurs comparables. Conversion, comparaison et désambiguïsation de Temporal.ZonedDateTime.

Pour les périodes d’une journée entière, travaillez avec des dates civiles. Une période de publication fictive couvrant les 10, 11 et 12 novembre inclus peut être représentée par [2026-11-10, 2026-11-13). iCalendar utilise également le jour suivant le dernier jour inclus comme fin exclusive d’un événement sur toute la journée. Dans Numbers, saisissez ces limites à l’aide des formules DATE afin que leurs composantes horaires soient cohérentes. Exemple d’événement sur plusieurs jours dans la RFC 5545.

Traiter les cas limites sans modifier la question

Un intervalle qui passe la nuit doit utiliser la date suivante pour sa valeur de fin. Une période allant du 10 novembre à 23:00 au 11 novembre à 01:00 est valide. Saisir les deux extrémités au 10 novembre inverse l’intervalle. Corrigez la date au lieu d’inverser automatiquement les valeurs, car cela pourrait masquer une erreur de saisie.

Si, pour votre tâche, les extrémités qui se touchent doivent compter comme un chevauchement, utilisez AND(B2<=E2,D2<=C2) dans la formule G2. Conservez la vérification de durée positive, sauf si vous avez défini séparément le comportement attendu pour les événements ponctuels. Cela modifie la règle appliquée aux limites et doit être consigné à côté du tableau.

Cette règle compte également lorsque vous utilisez les API natives de Mac. Apple décrit DateInterval de Foundation comme un intervalle fermé qui inclut les deux extrémités et autorise une durée nulle. Il fournit intersects et intersection(with:), mais son modèle d’intervalle fermé diffère de la convention iCalendar utilisée ici. Pour vérifier le chevauchement de périodes calendaires de durée positive, appliquez explicitement le test strict des extrémités au lieu de supposer que la politique d’intersection d’une API correspond à votre tâche. DateInterval.

Avant de vous fier à une comparaison, vérifiez trois points : chaque extrémité utilise la date et la base horaire prévues, les deux périodes ont une durée positive et l’exemple où les extrémités se touchent produit le résultat choisi. Une fois ces décisions explicites, les deux mêmes comparaisons gèrent les chevauchements partiels, les inclusions complètes et les périodes identiques.

Sources