Récupérer le samedi/le jeudi d'une semaine à partir d'une date

Résolu
Karin.code Messages postés 183 Date d'inscription vendredi 2 septembre 2016 Statut Membre Dernière intervention 16 janvier 2018 - 3 mai 2017 à 16:04
Karin.code Messages postés 183 Date d'inscription vendredi 2 septembre 2016 Statut Membre Dernière intervention 16 janvier 2018 - 4 mai 2017 à 10:02
Bonjour,
je veux créer une application pour faire des rapports (dans un fichier Word), j'ai presque terminé l'application il me manque juste une chose
comme l'indique le titre j'ai besoin de connaître le samedi (le premier jour de travail dans la semaine) et le jeudi (le dernier jour de travail dans la semaine) à partir d'une date (la date est obtenue à partir d'un DateTimePicker1)
par exemple :
Aujourd'hui, Lundi 03/05/2017, les deux dates récupéré seront :
Le Samedi 29/04/2017 et Le Jeudi 04/05/2017

Le Samedi 06/05/2017, les deux dates récupéré seront :
Le Samedi 06/05/2017 et Le Jeudi 11/05/2017

j'ai bien trouvé beaucoup de choses qui traite des sujets similaires il commence tous par trouver le numéro de la semaine, En utilisant par exemple le code suivant :
 Public Function NumSemaine(ByVal dat As Date) As Integer
If IsDate(dat) Then
Dim semaine As Integer
Dim semain As Integer
semain = Weekday(dat)
If semain = 2 Then
dat = dat.AddDays(6)
End If
If semain = 3 Then
dat = dat.AddDays(5)
End If
If semain = 4 Then
dat = dat.AddDays(4)
End If
If semain = 5 Then
dat = dat.AddDays(3)
End If
If semain = 6 Then
dat = dat.AddDays(2)
End If
If semain = 7 Then
dat = dat.AddDays(1)
End If
semaine = DatePart("ww", dat, vbMonday)
Return semaine
End If
Return Nothing
End Function

mais les étapes qui suivre après ne correspond pas à ce que je veux
merci d'avance pour votre aide et vos conseils concernant ce sujet

2 réponses

Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 656
3 mai 2017 à 16:19
Bonjour


Aujourd'hui, Lundi 03/05/2017

heu on est mercredi, mais on était bien le 29 et demain sera bien le 4.


Pour ton problème, tu n'as pas besoin du numéro de semaine, mais du numéro de jour dans la semaine.

       Dim laDate As DateTime = DateTime.Now

        Dim numero As Integer = DirectCast(laDate.DayOfWeek, Integer) '0 pour dimanche, 1 pour lundi ect....
        Dim samedi As DateTime

        Select Case numero
            Case 6
                samedi = laDate.Date '.Date  car sinon on va avoir les minutes et les secondes

            Case 0 To 5 ' dimanche à vendredi
                samedi = laDate.Date.AddDays(-1 - numero)
            Case Else
                'y a une erreur
        End Select

        Dim jeudi As DateTime = samedi.AddDays(5)



0
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169
Modifié le 3 mai 2017 à 16:39
bonjour Karin.code

Tues sûre de ce que tu as écrit:
Aujourd'hui, Lundi 03/05/2017, les deux dates récupérées seront :
Le Samedi 29/04/2017 et Le Jeudi 04/05/2017


Le 29/04/2017 est un Jeudi et 04/05:2017 est un Mardi à mon avis

Ce n'est pas plutôt :
Aujourd'hui, Lundi 03/05/2017, les deux dates récupérées seront :
Le Samedi 01/05/2017 et Le Jeudi 06/05/2017

La première chose à faire est de trouver quel est le jour de la semaine qui représente ta date en paramètre en tenant compte du premier jour de la semaine que tu désires

tu as là tout le nécessaire pour le faire : https://msdn.microsoft.com/fr-fr/library/20ee97hz(v=vs.90).aspx

Ensuite selon le résultat retourné ( par exemple lundi est retourné : on déduit le samedi avant en ôtant 2 jours et le jeudi après en ajoutant 3 jours



La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. 
0
Karin.code Messages postés 183 Date d'inscription vendredi 2 septembre 2016 Statut Membre Dernière intervention 16 janvier 2018 2
3 mai 2017 à 22:59
Bonsoir vb95,
ton code fait exactement ce que je veux, de plus il est très bien commenter, ça m'a beaucoup aidé à comprendre le fonctionnement du code
c'est vrai j'ai fait beaucoup de fautes un j'étais un petit peu fatigué du travail désolé

heu on est mercredi, mais on était bien le 29 et demain sera bien le 4.

c'est Mercredi 03/05/2017 et non Lundi 03/05/2017

Aujourd'hui, Lundi 03/05/2017, les deux dates récupérées seront :
Le Samedi 29/04/2017 et Le Jeudi 04/05/2017
Le 29/04/2017 est un Jeudi et 04/05:2017 est un Mardi à mon avis


et aussi ce n'est pas Le Samedi 29/04/2017 mais le Samedi 28/04/2017 (ce n'est pas avril mes mai)
Le 04/05/2017 c'est demain (c'est un jeudi et pas un mardi d'après le calendrier lol)
comme toujours merci infiniment pour ton aide ☺
bonne nuit
0
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169 > Karin.code Messages postés 183 Date d'inscription vendredi 2 septembre 2016 Statut Membre Dernière intervention 16 janvier 2018
3 mai 2017 à 23:51
Excuse-moi
Pour les dates j'ai pris tes données à la lettre sans vérifier leur véracité
Bonne nuit
0
Karin.code Messages postés 183 Date d'inscription vendredi 2 septembre 2016 Statut Membre Dernière intervention 16 janvier 2018 2 > vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024
4 mai 2017 à 10:02
tu n'as pas besoin de t'excuser c'est moi qui a fait une erreur au début

passe une bonne journée
0
Rejoignez-nous