Date et Heure VBA

Numéro de semaine à partir d’une date

Temps de lecture 2 minutes

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. Lorsqu'une année commence un vendredi, un samedi ou un dimanche, ceci n'est pas considéré comme une semaine.

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.

Calcul du numéro de semaine avec le 1er Janvier
  • Avec la fonction NO.SEMAINE, quelques soit le jour de la semaine, la fonction retourne toujours la valeur 1.
  • Avec NO.SEMAINE.ISO, si le jour de la semaine 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.

Calcul du numéro de semaine avec le 3 Janvier

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)

Related posts

Création d’un calendrier automatique

Frédéric LE GUEN

Afficher les heures au-delà de 24H dans Excel

Frédéric LE GUEN

VBA : Toutes les commandes pour les barres d’outils et menus

Frédéric LE GUEN

Laissez un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Ce site utilise des cookies pour améliorer votre expérience et vos recherches. Nous pensons que vous êtes dʼaccord sur ce principe mais vous pouvez refuser cette option. Accepter Continuer

Privacy & Cookies Policy