Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

VBA : récupérer premier jour de la semaine

Tib

XLDnaute Nouveau
Bonjour à tous,
J'ai récupéré un fichier et un code construit par une personne ne faisant plus partie de l'entreprise et le passage à l'année 2019 me pose un soucis. C'est un fichier dans lequel j'intègre des dates de contrats. A partir de ces dates (date de début et date de fin), un calcul automatique du numéro de semaine se fait.
Or depuis 2019, j'ai un décalage d'une semaine dans le fichier. Il considère que la semaine 1 commence le 07/01. Le fichier a un code long comme le bras. J'ai essayé d'isoler le code (sans certitude) mais voici ce que j'ai trouvé :

'#### RECUPERE LE PREMIER JOUR DE LA SEMAINE ####
For i = CDate("01/01/" & CStr(ComboBoxAnnee.Value)) To CDate("07/01/" & CStr(ComboBoxAnnee.Value))
If Weekday(i) = 2 Then
NumSemaine = i - 3
Exit For
End If
Next
Lundi = NumSemaine + 3 + 7 * (ComboBoxNumSemaine.Value - 1)
Dimanche = Lundi + 6

Pouvez-vous (si c'est le bonne portion de code) me dire ce qui ne va pas dans ce code ?

Merci infiniment pour votre aide et très belle soirée à toutes et tous.

Tib
 
C

Compte Supprimé 979

Guest
Salut Tib,
Voici une petite fonction qui te permettra de calculer la date
VB:
Function DateSemaineFR(ByVal intAnnee As Integer, Optional ByVal intSemaine As Integer = 1)
  Dim dt As Date
  ' Trouver le 1er jour de la semaine 1 de l'année
  dt = DateSerial(intAnnee, 1, 1)
  While DatePart("ww", dt, vbMonday, vbFirstFourDays) <> 1
    dt = dt + 1
  Wend
  ' Calculer le 1er jour de la semaine demandée
  dt = dt - DatePart("w", dt, vbMonday) + 1
  dt = dt + 7 * (intSemaine - 1)
  DateSemaineFR = dt
End Function

Pour appeler la fonction il suffit de faire
VB:
Lundi = DateSemaineFR(comboboxAnnee.vaue, ComboBoxNumSemaine.Value)
Dimanche = Lundi + 6

A+
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…