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

Karin.code 183 Messages postés vendredi 2 septembre 2016Date d'inscription 16 janvier 2018 Dernière intervention - 3 mai 2017 à 16:04 - Dernière réponse : Karin.code 183 Messages postés vendredi 2 septembre 2016Date d'inscription 16 janvier 2018 Dernière intervention
- 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
Afficher la suite 

5 réponses

Répondre au sujet
Whismeril 11406 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 19 avril 2018 Dernière intervention - 3 mai 2017 à 16:19
0
Utile
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)



Commenter la réponse de Whismeril
vb95 1501 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 19 avril 2018 Dernière intervention - Modifié par vb95 le 3/05/2017 à 16:39
0
Utile
3
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. 
Karin.code 183 Messages postés vendredi 2 septembre 2016Date d'inscription 16 janvier 2018 Dernière intervention - 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
vb95 1501 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 19 avril 2018 Dernière intervention > Karin.code 183 Messages postés vendredi 2 septembre 2016Date d'inscription 16 janvier 2018 Dernière intervention - 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
Karin.code 183 Messages postés vendredi 2 septembre 2016Date d'inscription 16 janvier 2018 Dernière intervention > vb95 1501 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 19 avril 2018 Dernière intervention - 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
Commenter la réponse de vb95

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.