Calculer la prochaine date selon un numero du jour

Résolu
RahSam Messages postés 12 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 4 novembre 2014 - Modifié par BunoCS le 21/10/2014 à 14:41
jordane45 Messages postés 37538 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 7 juin 2023 - 21 oct. 2014 à 22:05
Bonjour,

Je voulais faire une petite fonction qui me retourne en passant en paramètre le numéro jours (Date.Now.DayOfWeek) et je veux atteindre un numéro jours qui existe dans mon base de donnée.

Ex: Ma numéro du jours est 2 et la prochaine est 0
Comment puisse-je afficher la date complet de ma prochaine journée.

Private Function ObtenirNumeroJours(ByVal pNumJours As Integer, ByVal pNumJoursPlannifier As Integer) As Integer

        Dim NbjrRetour As Integer

        If pNumJours < pNumJoursPlannifier Then

            Dim diff As Integer = pNumJoursPlannifier - pNumJours
            For i As Integer = 0 To diff
                NbjrRetour = pNumJours + i
            Next

        Else

            Dim diff As Integer = (7 - pNumJours) + pNumJoursPlannifier
            For i As Integer = 0 To diff - 1
                NbjrRetour = pNumJours + i
            Next

        End If

9 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 219
21 oct. 2014 à 18:25
Bonjour,
Déjà :
pourquoi donc une boucle ?
Elle aboutit à l'ajout de diff, non ?

0
RahSam Messages postés 12 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 4 novembre 2014
Modifié par RahSam le 21/10/2014 à 18:35
Parce que suppossant que mon numéro du jours est 3 et ma prochaine numero que je veux atteindre est 5. Donc je verifie si mon numero du jours est inferieur a 5 oui alors je soustrait le numero a atteindre avec mon numero du jour et la j increment pour aller jusqu a 5.

Et lorsque j arrive a 5 je sors de ma boucle parce que c mon but.
Et la j fais Date.AddDay(NbjrRetour )
0
Whismeril Messages postés 18417 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 7 juin 2023 624
21 oct. 2014 à 18:41
Bonsoir, je ne comprends pas peux expliquer plus clairement s'il te plait?

0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 219
Modifié par ucfoutu le 21/10/2014 à 18:44
Ah ?
Et quand sors-tu donc de ta boucle ? Je ne le vois pas autrement qu'à la fin, moi ... et donc lorsque diff est atteint... et donc ta boucle ne fait qu'ajouter diff au bout du compte (et est donc inutile !)

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
RahSam Messages postés 12 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 4 novembre 2014
Modifié par RahSam le 21/10/2014 à 18:48
Oui c ca

exemple aujourd hui on est 21/10/2014 et le numero du jours est 2

Puis moi j ai dans mn base de donnee le numero du jours 5 a atteindre (c-a-d Vendredi prochain).

Donc, je veux donner la date complet du vendredi prochain.
0
Whismeril Messages postés 18417 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 7 juin 2023 624
21 oct. 2014 à 18:49
Il serait plus logique que tu stockes directement la date dans ta base de données.
Parce que dés que tu changeras de semaine ton calcul sera faux.
0
RahSam Messages postés 12 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 4 novembre 2014
21 oct. 2014 à 18:51
Non parce que les numeros des jours resteront les meme sauf que la date du jours se changera.
0
Whismeril Messages postés 18417 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 7 juin 2023 624
21 oct. 2014 à 19:07
Ton jour de référence c'est toujours "aujourd'hui" ou non?
Quand le jour cherché à le même numéro que le jour de référence, on reste sur la même semaine ou celle d'après?
0
RahSam Messages postés 12 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 4 novembre 2014
21 oct. 2014 à 19:40
Celle d'après
0
Whismeril Messages postés 18417 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 7 juin 2023 624
21 oct. 2014 à 20:03
Déjà si tu veux une date, alors il faut que ta fonction retourne une date et pas un int.
Ensuite, comme le dit Uc, ta boucle ne sert à rien.

Voici un code qui à l'air de marcher, (testé sur une semaine avec un jour de référence différent d'aujourd'hui)
    Function TrouveDate(JourRef As Int32, JourRecherche As Int32) As DateTime
        Dim ecart As Int32

        Select Case Math.Sign(JourRecherche - JourRef)
            Case -1 'le jour recherché vient avant le jour de référence dans la semaine, il sera donc la semaine suivante
                ecart = 7 - JourRef + JourRecherche

            Case 0 'le jour recherché est le même que le jour de référence
                ecart = 7

            Case 1 'le jour recherché vient aprés le jour de référence
                ecart = JourRecherche - JourRef

        End Select


        Dim Aujourdhui As DateTime = DateTime.Now.Date 'on part d'aujourd'hui pour avoir la bonne semaine
        Dim Dimanche As DateTime = Aujourdhui.AddDays(-1 * Aujourdhui.DayOfWeek) 'on cherche le dimanche précédent
        Dim DateRef As DateTime = Dimanche.AddDays(JourRef) 'on arrive à la date de référence
        Return DateRef.AddDays(ecart) 'on ajoute l'écart


    End Function

0
RahSam Messages postés 12 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 4 novembre 2014
21 oct. 2014 à 20:40
J ai pas bien compris ton parameter JourRecherche.
Car moi je prends en parametre le numero du jours et le numero de jours a atteindre.
0
Whismeril Messages postés 18417 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 7 juin 2023 624
21 oct. 2014 à 20:42
ben oui celui de référence et celui que l'on recherche.....
0
RahSam Messages postés 12 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 4 novembre 2014
21 oct. 2014 à 21:09
Oui Merci, enfin tu m as debloqué..
0
RahSam Messages postés 12 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 4 novembre 2014
21 oct. 2014 à 21:26
Pour une dernier question lorsque ma fonction porte plusieur parametre et je veux tester si mes parametres sont different de vide avant d executer quel est la meilleur pratique pour valider mes parametres??
0
jordane45 Messages postés 37538 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 7 juin 2023 341
21 oct. 2014 à 22:05
Bonsoir,
Il est demandé sur ce forum de ne poser QU'UNE question par discussion.
Hors...là... c'est une nouvelle question... tu devrais donc (après avoir mis en RESOLU celle-ci) ouvrir une nouvelle discussion.

Mais bon... faisons une petite exception.
Si tu veux vérifier que les paramètres de ta fonctions ne sont pas vides avant d'en lancer le code... un "simple" IF suffira.

Si tes paramètres sont de type STRING tu peux utiliser :
If (Not String.IsNullOrEmpty(Mavariable1) AND Not String.IsNullOrEmpty(Mavariable2)) Then
'....
'.. Je lance le code
else

' je ne lance pas le code

End if
0
RahSam Messages postés 12 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 4 novembre 2014
21 oct. 2014 à 21:27
EN vbnet
0