Dans Excel, il est très facile de trouver le numéro de semaine correspondant à une date MAIS il y a un piège à éviter
Deux fonctions pour retourner le numéro de semaine ?
Dans Excel il y a la 2 fonctions pour retourner le numéro de semaine
- NO.SEMAINE(date;paramètre)
- NO.SEMAINE.ISO(date)
La fonction NO.SEMAINE a toujours existé dans Excel mais elle correspond au système de comptage des semaines pour les US (normal, c'est Microsoft qui a développé la fonction)/
Mais, à partir de la version d'Excel 2013, la fonction NO.SEMAINE.ISO a été créée pour gérer la norme ISO8601 du comptage des semaine.
Pas la même règle entre les US et l'Europe
En Europe, le calcul des numéros de semaine est régie par la norme ISO 8601. Cette norme considère que la première semaine de l'année doit avoir au minimum 4 jours. Lorsque la première semaine de l'année commence un vendredi, un samedi ou un dimanche, ces jours ne sont pas considérés comme la première semaine de l'année.
Mais pour l'Amérique du Nord, cette règle n'existe pas. Le calcul des numéros de semaine commence dès le 1er Janvier, même si le 1er Janvier est un dimanche.
Conséquence avec Excel
Pour bien comprendre l'impact de ces 2 formules sur le calcul des numéros de semaine, voici 2 tableaux avec la même date de départ
Calcul avec le 1er Janvier
Dans le document suivant, nous avons toutes les dates du 1er Janvier de 2015 à 2025.

- Avec la fonction NO.SEMAINE, quelques soit le premier jour de l'année, la fonction retourne toujours la valeur 1.
- Avec NO.SEMAINE.ISO, si le premier jour de l'année est un vendredi, samedi ou dimanche, la fonction considère que la date du 1er Janvier appartient à la semaine de l'année précédente.
Numéro de semaine avec le 3 Janvier
Dans le document suivant, nous avons toutes les dates du 3 Janvier de 2015 à 2025.



Avec NO.SEMAINE, quand le jour de la semaine est un dimanche, le numéro de semaine change. Ceci est dû au second paramètre de la fonction mais par défaut est = 1 (semaine débute un dimanche). Si vous mettez la valeur 2, la numéro de semaine change le lundi
=NO.SEMAINE(date;2)
Par contre, avec la fonction NO.SEMAINE.ISO, tant qu'il n'y a pas au moins 2 jours ouvrés dans la première semaine de l'année, le numéro de semaine calculé appartient toujours à celui de l'année précédente.
Numéro de semaine en VBA
En VBA, pour retourner le numéro de semaine, le plus simple c'est de faire appel aux fonctions de calculs d'Excel.
Sub Num_Semaine()
'Num semaine Format Europe
Cells(1, 1) = Application.WorksheetFunction.IsoWeekNum(Date)
'Num semaine Format US
Cells(1, 1) = Application.WorksheetFunction.WeekNum(Date)
End Sub
Comment retourner la bonne valeur avec des versions anciennes d'Office ?
Version antérieure à Excel 2010
Pour retourner le numéro de semaine avec la norme ISO 8601, il faut utiliser cette formule très complexe.
=ENT((AUJOURDHUI()-SOMME(MOD(DATE(ANNEE(AUJOURDHUI()-MOD(AUJOURDHUI()-2;7)+3);1;2);{1E+99;7})*{1;-1})+5)/7)
Excel 2010
Dans cette version, le second paramètre de la fonction NO.SEMAINE a été modifié pour prendre en compte les 2 modes de calcul.
Il existe beaucoup de nouvelles valeurs pour le second paramètre mais seule la valeur 21 permet de retourner le numéro de semaine selon la norme ISO 8601.
=NO.SEMAINE(Date;21)