VBA

Résolu
zara70 Messages postés 188 Statut Membre -  
Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   -
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. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
    
    1
  2. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
     
    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