Numéro de semaine dans Excel : NO.SEMAINE et NO.SEMAINE.ISO

Excel propose deux fonctions pour les numéros de semaine. Elles ne donnent pas toujours le même résultat. Comprendre la différence évite des erreurs de reporting, surtout en début et fin d'année.

NO.SEMAINE — la version américaine

=NO.SEMAINE(date; [type])

Par défaut (type=1), la semaine commence le dimanche. La semaine 1 est celle qui contient le 1er janvier, même si elle ne dure qu'un jour.

Valeurs du paramètre type les plus utiles :

TypeDébut de semaine
1 (défaut)Dimanche
2Lundi
21Lundi — calcul ISO 8601

Avec type=2, la semaine commence le lundi mais le découpage en fin d'année reste américain (semaine 1 = semaine contenant le 1er janvier). Ça ne donne pas le résultat ISO.

NO.SEMAINE.ISO — la version européenne (ISO 8601)

=NO.SEMAINE.ISO(date)

Pas de paramètre : la semaine commence toujours le lundi, et la semaine 1 est la première semaine contenant un jeudi (règle ISO 8601). Conséquence : certains jours de janvier peuvent appartenir à la semaine 52 ou 53 de l'année précédente, et certains jours de décembre à la semaine 1 de l'année suivante.

En France et dans toute l'Europe, c'est NO.SEMAINE.ISO qu'il faut utiliser. Les numéros de semaine dans les plannings, les DPAE, les bulletins de paie suivent tous la norme ISO.

Exemple concret : 1er janvier 2026

=NO.SEMAINE("01/01/2026"; 2)   → 1   (1er jan est dans la S1 selon la règle américaine)
=NO.SEMAINE.ISO("01/01/2026")  → 1   (le jeudi de cette semaine est le 1er jan)

=NO.SEMAINE("31/12/2026"; 2)   → 53  (31 déc 2026 est un jeudi)
=NO.SEMAINE.ISO("31/12/2026")  → 53

Les deux concordent ici par coïncidence. Voyons un cas problématique :

=NO.SEMAINE("01/01/2016"; 2)   → 1   (1er jan 2016 = vendredi, S1 selon règle US)
=NO.SEMAINE.ISO("01/01/2016")  → 53  (appartient à la S53 de 2015 selon ISO)

Remonter à la date de début de semaine

Connaître le numéro de semaine c'est bien, mais souvent on veut la date du lundi de cette semaine :

=A2-JOURSEM(A2;2)+1

Avec JOURSEM(date;2) qui retourne 1=lundi … 7=dimanche. On soustrait le rang du jour dans la semaine et on ajoute 1 pour tomber sur le lundi.

Pour obtenir le dimanche de fin de semaine :

=A2-JOURSEM(A2;2)+7

Afficher "S01", "S12"… avec le numéro formaté

="S"&TEXTE(NO.SEMAINE.ISO(A2);"00")

Le format "00" force deux chiffres : S01, S09, S52. Pratique pour les listes déroulantes et les tableaux de bord.

Regrouper par semaine dans un tableau croisé dynamique

Dans un TCD, si votre colonne date est reconnue comme date Excel, cliquez droit sur un champ date → Grouper → décochez Mois, cochez Jours et mettez 7. Vous obtenez des groupes par blocs de 7 jours, mais pas des numéros ISO. Pour de vrais numéros ISO, ajoutez une colonne calculée dans votre source avec NO.SEMAINE.ISO et regroupez sur cette colonne.

Erreurs fréquentes

  • #VALEUR! : la date est stockée comme texte. Utilisez DATEVAL(A2) pour la convertir.
  • Décalage de ±1 semaine en janvier/décembre : vous utilisez NO.SEMAINE au lieu de NO.SEMAINE.ISO.
  • Semaine 53 inexistante : certaines années n'ont pas de S53 selon ISO. C'est normal — 2026 en a une, 2025 non.

Flash Fill (Ctrl+E) → Fonction TEXTE Fonction JOURSEM