VBA

Résolu
Bonjour,

Je souhaite convertir une date de saisie sur 2 021 en n. de semaine. Pour cela j’utilise la variable WEEKNUM et je me rends compte que les n de semaine sont décalés.
Les saisies en date du 11/01 devrait indiquer la semaine n 2 alors qu’elle m’affiche le n. 3 et ainsi de suite.
Je commence sur VBA donc si quelqu’un chez vous veut bien m’aider. Ce sera avec grand plaisir.
Encore merci pour votre aide.
Zara70

Configuration: iPhone / Safari 14.0.2

2 réponses

  1. Bonjour,

    Une autre (même résultat) :
    Function SemaineISO(ByVal d As Date) As Integer
      d = Int(d) - (Int(d) + 5) Mod 7
      SemaineISO = (9 + d - DateSerial(Year(3 + d), 1, 0)) \ 7
    End Function

    1. Bonjour,

      Erreur en effet
      Je regarde de plus pret

      Une facon de faire
      Sub test_semaine()
          Dim x As Date
          x = "11 / 1 / 2021"
          xx = num_sem(x)
      End Sub
      
      Function num_sem(D As Date) As Long
      'Auteur: Laurent Longre. X-Cell
      'La fonction suivante renvoie le numéro de semaine conforme à la norme ISO,
      'utilisée dans les pays européens (la première semaine d'un mois étant définie
      'comme la première semaine comportant au moins quatre jours dans le mois).
      
      D = Int(D)
      num_sem = DateSerial(Year(D + (8 - Weekday(D)) Mod 7 - 3), 1, 1)
      num_sem = ((D - num_sem - 3 + (Weekday(num_sem) + 1) Mod 7)) \ 7 + 1
      End Function