Aller au contenu principal

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

Définition
La fonction NO.SEMAINE renvoie le numéro de la semaine dans l'année pour une date donnée. Le paramètre optionnel `type_retour` contrôle le système de numérotation utilisé (américain, européen ou ISO 8601).

NO.SEMAINE (WEEKNUM en anglais) te sert dès que tu dois comparer ou regrouper des données par semaine plutôt que par date précise, ce qu'une date brute ne permet pas de faire directement dans un tri ou une synthèse. Elle t'évite de recompter les lundis sur un calendrier à chaque fois que tu veux savoir à quelle semaine appartient une ligne.

Concrètement, c'est elle qui numérote automatiquement les ventes par semaine pour tes tableaux croisés dynamiques, qui groupe les demandes de congés par période, ou qui crée des identifiants semaine-année uniques pour tes reportings pluriannuels. Le paramètre type_retour est crucial : il détermine si tu suis la convention américaine, européenne ou la norme ISO 8601.

Syntaxe

Clique sur un argument pour aller à son explication.

Si tu omets type_retour, Excel utilise 1 (système américain : la semaine commence le dimanche). Pour la France et l'Europe, utilise 21 (norme ISO 8601 : semaine commence le lundi, semaine 1 = celle contenant le premier jeudi de l'année).

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

Comprendre chaque paramètre de la fonction NO.SEMAINE

1

numéro_de_série

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

Ça peut être une référence de cellule comme A1, une date construite avec DATE(2024; 3; 15), ou le résultat d'une fonction comme AUJOURDHUI().

Excel stocke les dates en interne comme des nombres entiers (nombre de jours depuis le 1er janvier 1900), donc tu peux aussi passer directement un numéro de série. Mais c'est bien plus clair de travailler avec de vraies dates.

2

[type_retour]

: le paramètre qui détermine comment Excel numérotait les semaines(facultatif)

Il fixe à la fois le premier jour de la semaine et la façon dont la semaine 1 est définie au début de chaque année. Par défaut (si tu omets ce paramètre), Excel utilise 1 : semaine commençant le dimanche, système américain.

Les valeurs les plus utiles : 1 ou omis = semaine commence dimanche (USA) ; 2 = semaine commence lundi (Europe simple, semaine 1 = celle avec le 1er janvier) ; 21 = norme ISO 8601 (semaine commence lundi, semaine 1 = celle qui contient le premier jeudi de l'année) ; 11 à 17 = semaines commençant de lundi à dimanche, semaine 1 = celle avec le 1er janvier.

Le conseil du pro
Pour la France et les échanges européens, précise toujours le type 21 (ISO 8601) : la semaine commence un lundi et chaque semaine appartient à une seule année. Tes collègues à Paris, Bruxelles ou Berlin parlent alors de la même semaine.
Lucas, la mascotte du Dojo, fait une démonstration pas à pas de la fonction dans Excel

Exemples pratiques pas à pas

Exemple 1

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

Le point commercial du lundi arrive et on te demande de comparer les ventes semaine par semaine, pas date par date. Tu as la liste des ventes avec leur date, le commercial, le montant et la région, et tu veux une colonne qui donne le numéro de semaine de chaque ligne. La fonction NO.SEMAINE lit la date et sort ce numéro toute seule, sans que tu aies à compter les lundis sur un calendrier.

Les étapes
  1. 1
    Dans une cellule, écris =NO.SEMAINE(.
  2. 2
    En 1er argument : clique sur la cellule qui porte la date à traiter, A2. NO.SEMAINE a besoin d'une vraie date reconnue par Excel et non d'un texte qui lui ressemble, sans quoi elle renvoie #VALEUR!.
  3. 3
    En 2ᵉ argument : saisis le système de numérotation, 2. Avec cette valeur, la semaine commence le lundi et la semaine 1 est celle qui contient le 1er janvier, la convention du quotidien en France. Si tu l'omets, Excel retombe sur 1 et fait démarrer les semaines le dimanche.
  4. 4
    Ferme la parenthèse et appuie sur Entrée, puis recopie la formule vers le bas pour numéroter chaque vente.
Au final, ta formule devrait ressembler à ça :=NO.SEMAINE(A2; 2)
Explication
Ici, la fonction lit la date du 08/01/2024 et renvoie 2. Le 1er janvier 2024 tombait un lundi, donc la semaine 1 court du 1er au 7 janvier et le 8 janvier ouvre la semaine 2. Recopiée vers le bas, la formule numérote chaque vente et tu peux ensuite regrouper ton tableau par semaine.
Exemple 2

Comment choisir le système de numérotation avec la fonction NO.SEMAINE

Ton client à Berlin te réclame la livraison « en semaine 1 » et vous n'êtes visiblement pas d'accord sur les dates. Ton planning liste les étapes de reprise de janvier 2021 avec leur date, et tu veux le numéro de semaine tel que lui le voit de son côté. La fonction NO.SEMAINE accepte un système de numérotation en deuxième argument, et c'est ce réglage qui met tout le monde sur le même calendrier.

Les étapes
  1. 1
    Dans une cellule, écris =NO.SEMAINE(.
  2. 2
    En 1er argument : clique sur la cellule qui porte la date à traiter, A2. C'est la date de l'étape de chantier dont tu cherches le numéro de semaine.
  3. 3
    En 2ᵉ argument : saisis le système de numérotation, 21. C'est la norme ISO 8601, où la semaine commence le lundi et où la semaine 1 est celle qui contient le premier jeudi de l'année. Les valeurs 1 (du dimanche au samedi) et 2 (du lundi au dimanche, avec la semaine 1 contenant le 1er janvier) sont les deux autres réglages que tu croiseras vraiment.
  4. 4
    Ferme la parenthèse et appuie sur Entrée.
Voici la formule que tu obtiens à la fin :=NO.SEMAINE(A2; 21)
Explication
Le 1er janvier 2021 tombait un vendredi. Avec le type 21, la semaine 1 est celle qui contient le premier jeudi de l'année (le 7 janvier ici), donc le 1er janvier appartient encore à la semaine 53 de 2020. Avec le type 2, cette même date renvoie 1. C'est l'argument type_retour, et lui seul, qui fait basculer le résultat.
Exemple 3

Comment créer un identifiant semaine-année avec les fonctions NO.SEMAINE et TEXTE

Tu suis les dépenses d'un chantier depuis deux ans et ton tableau croisé mélange la semaine 6 de 2024 avec celle de 2025. Chaque ligne a une date et un montant, et tu veux une colonne d'identifiants uniques du type S06-2024 sur laquelle regrouper sans ambiguïté. La fonction NO.SEMAINE donne le numéro, et il ne reste qu'à l'habiller pour qu'il se range dans le bon ordre.

Les étapes
  1. 1
    Dans une cellule, écris = puis le préfixe entre guillemets, "S", et relie-le à la suite avec l'esperluette &. Ce S est ce qui rend l'identifiant lisible d'un coup d'œil dans un filtre.
  2. 2
    Écris TEXTE( juste après le &, puis :
    1. aEn 1er argument : écris le calcul du numéro de semaine et referme-le, NO.SEMAINE(B2; 2). La cellule B2 porte la date de la dépense, et le 2 fait démarrer les semaines le lundi comme partout ailleurs dans ton classeur.
    2. bEn 2ᵉ argument : saisis le masque d'affichage entre guillemets, "00". Il force le numéro à tenir sur deux chiffres, sans quoi la semaine 6 s'écrit 6 et se classe après la semaine 12 dans un tri.
  3. 3
    Referme la parenthèse de la fonction TEXTE, puis enchaîne avec & "-" & ANNEE( et clique sur la cellule de la date, B2. Avec le type 2, une semaine appartient toujours à l'année de sa date, donc la fonction ANNEE ne peut pas te trahir ici.
  4. 4
    Ferme la parenthèse de la fonction ANNEE et appuie sur Entrée.
Une fois les morceaux assemblés, ta formule donne ça :="S" & TEXTE(NO.SEMAINE(B2; 2); "00") & "-" & ANNEE(B2)
Explication
La fonction NO.SEMAINE renvoie 6 pour le 05/02/2024, la fonction TEXTE l'écrit 06, et l'assemblage avec le « S » et l'année donne S06-2024. Ce format se trie correctement et reste unique d'une année sur l'autre (sans l'année, la semaine 6 de 2024 et celle de 2025 tomberaient dans le même groupe).
Exemple 4

Comment éviter une erreur #VALEUR! avec les fonctions NO.SEMAINE et SIERREUR

Le fichier de commandes tombe chaque matin par export, et une ligne sur dix contient une date que personne n'a saisie proprement. Tu veux quand même ta colonne de numéros de semaine, sans que des erreurs viennent casser le tri et les totaux en dessous. La fonction NO.SEMAINE ne sait traiter que de vraies dates, alors tu l'emballes dans la fonction SIERREUR pour qu'une ligne douteuse affiche un message plutôt qu'une erreur.

Les étapes
  1. 1
    Dans une cellule, écris =SIERREUR(.
  2. 2
    En 1er argument : écris le calcul que tu veux vraiment obtenir et referme-le, NO.SEMAINE(B2; 2). Tant que B2 contient une vraie date, c'est ce numéro de semaine qui s'affiche, avec des semaines qui démarrent le lundi grâce au 2.
  3. 3
    En 2ᵉ argument : saisis le texte de repli entre guillemets, "Date à vérifier". Il ne s'affiche que si le premier calcul part en erreur, par exemple sur à confirmer ou sur 01/22/2024 qu'un classeur français lit comme du texte et non comme une date.
  4. 4
    Ferme la parenthèse et appuie sur Entrée.
En mettant tout bout à bout, tu écris :=SIERREUR(NO.SEMAINE(B2; 2); "Date à vérifier")
Explication
La formule tente d'abord le calcul normal et n'intervient que s'il échoue : le 08/01/2024 est une vraie date, donc le résultat est 2. Sur à confirmer ou sur 01/22/2024 (un format américain qu'un classeur français lit comme du texte), la fonction NO.SEMAINE renvoie l'erreur #VALEUR! et ton message prend sa place. Le reste de la colonne continue de se calculer normalement.
Lucas, la mascotte du Dojo, l'air gêné face à une erreur Excel

Les erreurs fréquentes avec la fonction NO.SEMAINE

#VALEUR! avec des dates en format texte

Quand une date est stockée en texte (fréquent après un import CSV ou une saisie manuelle), NO.SEMAINE ne peut pas la traiter et renvoie #VALEUR!. Excel affiche parfois un triangle vert dans le coin de la cellule pour indiquer ce problème.

Solution : Enveloppe ta date dans DATEVAL pour convertir le texte en date reconnue : =NO.SEMAINE(DATEVAL("15/03/2024"); 21). Si tu veux protéger la formule contre les cellules invalides, utilise =SIERREUR(NO.SEMAINE(A1; 21); "") pour afficher une cellule vide en cas d'erreur.

Incohérence entre deux formules utilisant des types différents

Si tu utilises type_retour 1 dans une formule et type_retour 21 dans une autre, les résultats ne correspondent plus. Le 1er janvier 2024 peut être la semaine 1 (type 1) ou la semaine 52 de 2023 (type 21 ISO). Cette incohérence passe souvent inaperçue.

Solution : Choisis un seul système et utilise-le partout dans ton classeur. Crée une cellule nommée TYPE_SEMAINE avec la valeur 21 et référence-la dans toutes tes formules : =NO.SEMAINE(A1; TYPE_SEMAINE). Si tu dois changer de système, tu ne modifies qu'une seule cellule.

Confusion avec SEMAINNUM dans des formules copiées

Dans certaines versions ou tutoriels en ligne, tu peux trouver SEMAINNUM à la place de NO.SEMAINE. Si tu copies cette formule dans Excel français, il renvoie #NOM? car le nom de la fonction est incorrect.

Solution : Dans Excel en français, utilise toujours NO.SEMAINE avec des points. Remplace tout SEMAINNUM par NO.SEMAINE. En anglais, la fonction s'appelle WEEKNUM.

L’erreur fatale
Un même jour n'a pas le même numéro selon le type choisi : le 1er janvier peut tomber en semaine 1 (type 1) ou en semaine 52 de l'année précédente (type 21 ISO). Fixe un seul système et garde-le dans tout le classeur.
Lucas, la mascotte du Dojo, compare deux fonctions Excel

NO.SEMAINE vs NO.SEMAINE.ISO vs JOURSEM

Ces trois fonctions traitent des données de calendrier hebdomadaire, mais elles ne renvoient pas la même information.

CritèreNO.SEMAINENO.SEMAINE.ISOJOURSEM
RetourneN° de semaine (1-53)N° de semaine ISO (1-53)Jour de la semaine (1-7)
Systèmes de numérotation17 types différentsISO 8601 uniquement3 types
Norme ISO 8601Oui, avec type 21Oui, par défautNon applicable
FlexibilitéMaximaleFixe (ISO uniquement)Limitée
Usage principalPlanning, reporting, multi-systèmesPlanning européen (syntaxe courte)Filtrer par jour de semaine
Lucas, la mascotte du Dojo, avec une ampoule, partage des astuces avancées

Astuces avancées avec NO.SEMAINE

1Astuce

Crée des identifiants semaine-année pour les analyses pluriannuelles

=NO.SEMAINE(A1; 21) & "-" & ANNEE(A1) génère un identifiant comme 15-2024. Ce format est indispensable dans les tableaux croisés dynamiques et les SOMME.SI sur des données qui s'étendent sur plusieurs années.
Sans l'année, la semaine 15 de 2024 et la semaine 15 de 2025 seraient confondues dans tes agrégations.

2Astuce

Protège tes formules avec SI.ERREUR sur les données saisies

Quand des utilisateurs peuvent saisir des valeurs dans une colonne date, certains entreront du texte. =SIERREUR(NO.SEMAINE(A1; 21); "") renvoie une cellule vide au lieu d'un #VALEUR! qui pollue tout le tableau.
Une cellule laissée vide est plus sournoise : elle ne déclenche aucune erreur, Excel la lit comme un 0 et sort un numéro de semaine que SI.ERREUR ne rattrape pas. Dans les tableaux remplis par plusieurs personnes, teste donc aussi le vide : =SI(A1=""; ""; SIERREUR(NO.SEMAINE(A1; 21); "")).

3Astuce

Combine avec SOMME.SI pour des totaux par semaine

Une fois les numéros de semaine en colonne C, =SOMME.SI(C:C; 15; B:B) additionne tous les montants de la semaine 15. Pour compter plutôt qu'additionner, utilise NB.SI de la même façon.
Cette technique est plus performante qu'un tableau croisé dynamique pour des dashboards qui doivent se recalculer en temps réel.

FAQ

Questions fréquentes

Le type 1 considère que la semaine commence le dimanche (système américain), tandis que le type 2 considère qu'elle commence le lundi (système européen simple, où la semaine 1 est celle qui contient le 1er janvier). Le choix impacte directement les numéros obtenus pour les dates en début et fin d'année.

Ressources

Pour aller plus loin

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

Tout voir