Aller au contenu principal

Qu'est-ce que la fonction NO.SEMAINE.ISO ?

Définition
La fonction NO.SEMAINE.ISO retourne le numéro de semaine ISO 8601 d'une date : semaine débutant le lundi, semaine 1 = celle qui contient le premier jeudi de l'année (ou le 4 janvier).

NO.SEMAINE.ISO (ISOWEEKNUM en anglais) te sert dès que ton reporting croise des équipes ou des pays différents et que tu veux que tout le monde parle du même numéro de semaine, sans discussion possible sur le jour où elle commence.

NO.SEMAINE.ISO est indispensable pour les plannings projet, les suivis de production, les analyses de ventes hebdomadaires et tout reporting international. Elle n'a qu'un seul paramètre, ce qui la rend plus simple et moins sujette aux erreurs que NO.SEMAINE avec le paramètre type 21.

Syntaxe

=NO.SEMAINE.ISO(numéro_de_série)

Clique sur un argument pour aller à son explication.

NO.SEMAINE.ISO est disponible depuis Excel 2013. Sur des versions antérieures, utilise =NO.SEMAINE(date; 21) qui produit exactement le même résultat. Les premières et dernières dates de l'année peuvent appartenir à la semaine 52 ou 53 de l'année précédente, ou à la semaine 1 de l'année suivante.

Lucas, la mascotte du Dojo, inspecte les arguments de la fonction à la loupe

Comprendre chaque paramètre de la fonction NO.SEMAINE.ISO

1

numéro_de_série

: la date dont tu veux obtenir le numéro de semaine ISO

Ce paramètre accepte plusieurs formats : une référence de cellule contenant une date (A2), une fonction DATE (DATE(2024;3;15)), la fonction AUJOURDHUI pour la date actuelle (AUJOURDHUI()), ou un texte converti avec DATEVAL (DATEVAL("15/03/2024")).

Excel stocke les dates comme des nombres (le nombre de jours depuis le 1er janvier 1900). Si ta cellule contient du texte qui ressemble à une date, la fonction retournera une erreur #VALEUR!. Utilise DATEVAL pour convertir le texte en date.

Attention : Les dates en début janvier et fin décembre peuvent appartenir à une autre année ISO. Le 1er janvier 2023 était semaine 52 de 2022. Si tu construis des totaux annuels, vérifie l'année ISO avec : =SI(ET(MOIS(A2)=1; NO.SEMAINE.ISO(A2)>50); ANNEE(A2)-1; ANNEE(A2)).

Lucas, la mascotte du Dojo, fait une démonstration pas à pas de la fonction dans Excel

Exemples pratiques pas à pas

Exemple 1

Comment trouver le numéro de semaine ISO d'une date avec la fonction NO.SEMAINE.ISO

Ton planning d'événements mélange des réunions, des livraisons et des sprints étalés sur toute l'année, et l'équipe raisonne en numéros de semaine plutôt qu'en dates. Chaque ligne porte sa date, et tu veux la semaine correspondante pour regrouper et comparer les événements. La fonction NO.SEMAINE.ISO traduit chaque date en numéro de semaine selon la norme ISO 8601, celle que tout le monde utilise en Europe.

Les étapes
  1. 1
    Dans une cellule, écris =NO.SEMAINE.ISO(.
  2. 2
    En 1er argument : clique sur la cellule qui porte la date, B2. NO.SEMAINE.ISO n'attend que cette date et applique toujours la règle ISO, sans second réglage. Il lui faut une vraie date reconnue par Excel, car une date restée en texte, alignée à gauche dans la cellule, la ferait renvoyer #VALEUR!.
  3. 3
    Ferme la parenthèse et appuie sur Entrée, puis recopie la formule vers le bas pour couvrir tout le planning. La référence B2 étant relative, elle suit chaque ligne et lit sa propre date.
Au final, ta formule devrait ressembler à ça :=NO.SEMAINE.ISO(B2)
Explication
Le 1er janvier 2024 était un lundi, donc la première semaine de l'année couvre le 1er au 7 janvier et le 15/01/2024 tombe dans la troisième. La dernière ligne recopiée montre déjà le comportement qui surprend : le 30/12/2024 ressort en semaine 1, parce que la norme ISO le rattache à l'année suivante.
Exemple 2

Comment numéroter une semaine à cheval sur deux années avec la fonction NO.SEMAINE.ISO

La clôture de fin d'année approche et tes tableaux de suivi hebdomadaire doivent tomber juste sur la dernière semaine de décembre. C'est exactement là que les numéros de semaine cessent d'être intuitifs, parce que la frontière entre deux années ne tombe presque jamais un lundi. La fonction NO.SEMAINE.ISO applique la règle ISO 8601 sans hésiter, à condition de savoir ce qu'elle va répondre.

Les étapes
  1. 1
    Dans une cellule, écris =NO.SEMAINE.ISO(.
  2. 2
    En 1er argument : clique sur la cellule qui porte la date, A2. Ici c'est le 27/12/2024, et chaque ligne du tableau ne fait varier que cette date d'un jour à la fois pour voir précisément où la bascule se produit. Contrairement à d'autres fonctions de semaine, NO.SEMAINE.ISO n'accepte aucun second réglage et applique toujours la règle du premier jeudi.
  3. 3
    Ferme la parenthèse et appuie sur Entrée, puis recopie vers le bas jusqu'au 02/01/2025 pour voir la semaine 52 céder la place à la semaine 1 dès le lundi 30/12/2024, soit deux jours avant le changement d'année.
Voici la formule que tu obtiens à la fin :=NO.SEMAINE.ISO(A2)
Explication
La bascule ne se produit pas au 1er janvier mais le lundi 30/12/2024, parce que la norme ISO ouvre la semaine 1 sur la semaine qui contient le premier jeudi de l'année, ici le 02/01/2025. Les 30 et 31 décembre 2024 appartiennent donc déjà à la semaine 1, et le dimanche 29/12/2024 clôt la semaine 52.
Exemple 3

Comment construire un identifiant année-semaine fiable en combinant la fonction NO.SEMAINE.ISO et la fonction ANNEE

Ton reporting empile plusieurs années de données et chaque ligne doit porter une étiquette de semaine unique et triable, du genre 2024-S03. Un identifiant qui colle bêtement l'année de la date au numéro de semaine se casse la figure fin décembre et mélange deux exercices. En combinant la fonction NO.SEMAINE.ISO et la fonction ANNEE sur le jeudi de la semaine, tu obtiens une étiquette juste toute l'année.

Les étapes
  1. 1
    Dans une cellule, écris =ANNEE(.
  2. 2
    À l'intérieur, écris le jeudi de la semaine plutôt que la date brute, A2-JOURSEM(A2;3)+3, puis referme la parenthèse de la fonction ANNEE. Le 3 passé à JOURSEM numérote le lundi 0, si bien que retrancher ce numéro ramène au lundi et qu'ajouter 3 avance jusqu'au jeudi. C'est ce jeudi qui porte la bonne année ISO, celle qui donne 2025 sur la ligne du 31/12/2024.
  3. 3
    Enchaîne avec l'opérateur &, le séparateur "-S" et un nouvel & pour accrocher le numéro de semaine derrière l'année.
  4. 4
    Écris TEXTE( juste après, puis :
    1. aEn 1er argument : écris le numéro de semaine et referme-le, NO.SEMAINE.ISO(A2). On repart de la date d'origine, A2, et non du jeudi, car les deux tombent dans la même semaine et donnent le même numéro.
    2. bEn 2ᵉ argument : saisis le masque d'affichage entre guillemets, "00". Il force le numéro sur deux chiffres, sinon S3 se classerait après S29 dans un tri alphabétique.
  5. 5
    Ferme la parenthèse de la fonction TEXTE et appuie sur Entrée.
Une fois les morceaux assemblés, ta formule donne ça :=ANNEE(A2-JOURSEM(A2;3)+3)&"-S"&TEXTE(NO.SEMAINE.ISO(A2);"00")
Explication
L'année ISO n'est pas toujours l'année de la date : le 31/12/2024 appartient à la semaine 1 de 2025. Coller ANNEE(A2) au numéro de semaine produirait 2024-S01 sur cette ligne, un identifiant qui rangerait la semaine tout en haut du classement au lieu de la fin. Passer par le jeudi de la semaine règle le problème, puisque ce jeudi tombe toujours dans la bonne année ISO.
Le savais-tu ?
En norme ISO 8601, la semaine 1 est celle qui contient le premier jeudi de l'année, pas forcément celle du 1er janvier. Résultat déroutant : le 1er janvier 2023 appartenait à la semaine 52 de 2022. Pense à vérifier l'année ISO sur tes totaux de début janvier.
Lucas, la mascotte du Dojo, l'air gêné face à une erreur Excel

Les erreurs fréquentes avec la fonction NO.SEMAINE.ISO

Ce qui fait trébucher NO.SEMAINE.ISO, ce n'est presque jamais le calcul lui-même : c'est ce qu'on lui donne à manger. Le cas le plus fréquent est une date saisie comme texte (le fameux "15/03/2024" aligné à gauche dans la cellule), qui renvoie aussitôt un #VALEUR! parce qu'Excel n'y voit pas un vrai numéro de série.

Les deux autres pièges sont plus sournois car ils ne déclenchent pas d'erreur visible : un janvier qui bascule en semaine 52 de l'année d'avant, et le #NOM? sur Excel 2010 et antérieur où la fonction n'existe tout simplement pas.

Erreur #VALEUR! avec une date stockée en texte

NO.SEMAINE.ISO ne reconnaît pas les dates stockées au format texte. Si tu as "15/03/2024" saisi comme texte dans ta cellule, la fonction retournera une erreur #VALEUR! car Excel ne peut pas interpréter ce texte comme un numéro de série de date.

Solution : Utilise DATEVAL pour convertir le texte en date : =NO.SEMAINE.ISO(DATEVAL("15/03/2024")). Pour les cellules de ton tableau, vérifie que le format de cellule est bien "Date" et non "Texte". Le triangle vert dans le coin de la cellule signale souvent ce problème.

Confusion entre l'année civile et l'année ISO en janvier et décembre

Les premiers jours de janvier peuvent appartenir à la dernière semaine de l'année précédente. Par exemple, le 1er janvier 2023 était semaine 52 de 2022. Inversement, les derniers jours de décembre peuvent appartenir à la semaine 1 de l'année suivante.

Solution : Pour tes totaux annuels, crée une colonne "Année ISO" avec : =SI(ET(MOIS(A2)=1; NO.SEMAINE.ISO(A2)>50); ANNEE(A2)-1; ANNEE(A2)) pour janvier, et complète avec =SI(ET(MOIS(A2)=12; NO.SEMAINE.ISO(A2)=1); ANNEE(A2)+1; ANNEE(A2)) pour décembre.

Erreur #NOM? : fonction non disponible sur les anciennes versions

NO.SEMAINE.ISO n'existe que depuis Excel 2013. Si tu travailles avec Excel 2010 ou une version antérieure, Excel ne reconnaît pas cette fonction.

Solution : Utilise =NO.SEMAINE(date; 21) à la place, qui produit exactement le même résultat et fonctionne depuis Excel 2007. Le paramètre 21 indique à NO.SEMAINE d'utiliser la norme ISO 8601.

Erreur #VALEUR! ou #NUM! sur les cellules vides

Si ta cellule de référence est vide ou contient une valeur qui n'est pas une date valide, NO.SEMAINE.ISO retournera une erreur qui peut se propager dans toutes les formules qui en dépendent.

Solution : Protège ta formule avec SIERREUR : =SIERREUR(NO.SEMAINE.ISO(A2); "") pour afficher une cellule vide. Pour une validation plus robuste : =SI(OU(ESTVIDE(A2); NON(ESTNUM(A2))); ""; NO.SEMAINE.ISO(A2)).

Lucas, la mascotte du Dojo, compare deux fonctions Excel

NO.SEMAINE.ISO vs NO.SEMAINE vs ANNEE vs MOIS

Prends NO.SEMAINE.ISO dès que ton reporting est hebdomadaire et qu'il croise des équipes ou des sites à l'international : la norme ISO 8601 est la seule sur laquelle tout le monde tombe d'accord, et son unique argument t'évite le piège du type mal réglé. Garde NO.SEMAINE uniquement si tu as besoin d'un autre système de numérotation que l'ISO, sinon NO.SEMAINE(date; 21) ne fait que recopier le résultat en plus verbeux.

ANNEE et MOIS jouent dans une autre cour : elles servent à agréger par année ou par mois, pas par semaine. C'est l'une ou l'autre selon la maille de ton total, pas une alternative à la semaine ISO.

CritèreNO.SEMAINE.ISONO.SEMAINEANNEEMOIS
Ce que ça retourneNuméro semaine ISO (lundi comme 1er jour)Numéro semaine (avec choix du système)Année (1900-9999)Mois (1-12)
Arguments1 seul (date)2 (date + type)1 seul (date)1 seul (date)
Norme internationaleOui (ISO 8601)Dépend du type choisiSans objetSans objet
Disponible depuisExcel 2013Toutes versionsToutes versionsToutes versions
Cas d'usage typiqueReporting international, planning agileQuand le système de semaine varieExtraire l'année pour un total annuelExtraire le mois pour un total mensuel
Lucas, la mascotte du Dojo, avec une ampoule, partage des astuces avancées

Astuces avancées avec NO.SEMAINE.ISO

1Astuce

Créer un code semaine bien trié avec l'année incluse

Pour des codes semaine triables alphabétiquement et sans ambiguité entre années, adopte le format ANNEE-S## : =ANNEE(A2)&"-S"&TEXTE(NO.SEMAINE.ISO(A2);"00"). Le TEXTE(...;"00") force l'affichage sur 2 chiffres (S01, pas S1), ce qui garantit un tri alphabétique correct.
Sans le zéro devant, S9 apparaîtrait après S19 dans n'importe quel tableau croisé dynamique.

2Astuce

Totaliser les données de la semaine en cours automatiquement

Pour afficher en temps réel le total de la semaine actuelle, combine NO.SEMAINE.ISO avec SOMME.SI.ENS : =SOMME.SI.ENS(C:C; B:B; NO.SEMAINE.ISO(AUJOURDHUI())) où la colonne B contient les numéros de semaine précalculés. Cette formule se met à jour automatiquement chaque jour.
Ajoute une colonne de numéros de semaine ISO dès la création de ta table de données : c'est le meilleur investissement pour tes futures analyses.

FAQ

Questions fréquentes

NO.SEMAINE.ISO retourne uniquement le numéro de semaine selon la norme ISO 8601 (lundi comme premier jour, semaine 1 contenant le premier jeudi). C'est l'équivalent de NO.SEMAINE avec type_retour 21, mais en plus simple car elle n'a qu'un seul argument. Si tu veux toujours utiliser la norme ISO, NO.SEMAINE.ISO est plus rapide à écrire et évite les erreurs de paramétrage.

Ressources

Pour aller plus loin

Continue sur ta lancée après la fonction NO.SEMAINE.ISO : la leçon associée, un modèle prêt à l'emploi et le guide pour progresser.

Tout voir