VBA

Résolu
zara70 Messages postés 178 Date d'inscription   Statut Membre Dernière intervention   -  
Patrice33740 Messages postés 8561 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

f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
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
Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention   1 780
 
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