Les jours d'une semaine bien precise !!!

Résolu
foufidou Messages postés 156 Date d'inscription mardi 31 août 2004 Statut Membre Dernière intervention 21 mai 2015 - 22 avril 2007 à 15:26
OneHacker Messages postés 1447 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 23 septembre 2007 - 23 avril 2007 à 19:37
bonjours tout le monde,
dans mon application en vb 2005 j'aimerai developper un petit module qui consiste a consulter un planning / semaine (genre google agenda il suffit de choisir une date avec une datepicker et la gride va se rafrechire pour enumerer la FixedRow a partir du 1er jour de la semaine "Lundi 16/04" jusqu'au "Samedi 21/04").
Le probleme c'est que j'arrive pas le faire puisque parfois l'utilisateur  choisi une date tel que le lundi de la semaine contenant cette date est dans le mois qui precedent ou dans le mois qui suit....
Ce que j'aimerai faire c'est juste recuperer la datre et le mois de chaque jour de la semaine choisi avec la date choisi.
j'espere etre bien explicite et merci d'avance pour votre aide.

16 réponses

OneHacker Messages postés 1447 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 23 septembre 2007 2
23 avril 2007 à 02:57
J'ai réussi je crois à faire le code que tu cherches.

Alors j'ai une form avec un DateTimePicker dtpMonday, un bouton btnShow et un combobox cnDates.

Private Sub btnShow_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnShow.Click
        cbDates.Items.Clear() ' Vide le combobox
        Dim dMonday As Date dtpMonday.Value ' dMonday la date choisie

        If Not dMonday.DayOfWeek = DayOfWeek.Monday Then ' Si ce n'est pas un Lundi
            MsgBox("Ce n'est pas un Lundi !", MsgBoxStyle.Exclamation)
            Exit Sub' Quitte la procédure
        End If

        Dim d(6) As Date' Créer un tableau de 7 jours
        d(0) = dMonday ' Définit le premier jour étant le jour Lundi choisi

        For i As Integer = 1 To 6 ' pour chaque jour de la semaine suivant Lundi            d(i) dMonday.AddDays(i) ' d(i) Lundi(1) + i
        Next

        For Each dday As Date In d ' Pour chaque date dans d()
            cbDates.Items.Add(dday.ToString) ' Ajouter la date dans le combobox
        Next
    End Sub

Voilà !

Redman
3
OneHacker Messages postés 1447 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 23 septembre 2007 2
23 avril 2007 à 14:11
J'ai modifié mon code(je le recolorise pas car c'est chiant :p)

    Private Sub btnShow_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnShow.Click
        cbDates.Items.Clear() ' Vide le combobox
        Dim dMonday As Date dtpMonday.Value ' dMonday la date choisie

        If Not dMonday.DayOfWeek = DayOfWeek.Monday Then ' Si ce n'est pas un Lundi
            If Not dtpMonday.Value.DayOfWeek = DayOfWeek.Sunday Then
                dMonday = dMonday.AddDays(-(dMonday.DayOfWeek - 1))
            Else
                dMonday = dMonday.AddDays(dMonday.DayOfWeek - 6)
            End If
            MsgBox(dtpMonday.Value.DayOfWeek)
        End If
        MsgBox(dMonday.ToString)
        Dim d(6) As Date ' Créer un tableau de 7 jours
        d(0) = dMonday ' Définit le premier jour étant le jour Lundi choisi

        For i As Integer = 1 To 6 ' pour chaque jour de la semaine suivant Lundi            d(i) dMonday.AddDays(i) ' d(i) Lundi(1) + i
        Next

        For Each dday As Date In d ' Pour chaque date dans d()
            cbDates.Items.Add(dday.ToString) ' Ajouter la date dans le combobox
        Next
    End Sub

Redman
3
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
22 avril 2007 à 17:13
Salut,

Je n'ai pas de réponse à te donner, mais regarde ici, peut-être la trouvera-tu...

A+
Exploreur

 
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
22 avril 2007 à 22:36
"Ce que j'aimerai faire c'est juste recuperer la datre et  le mois de chaque jour de la semaine choisi avec la date choisi.
j'espere etre bien explicite et merci d'avance pour votre aide."


Euh ... ou je suis très fatigué... ou ...
Un mois fait partie d'une date
La date d'un jour est par ailleurs composée d'un n° de jour, d'un n° de mois et d'un n° d'année
Que charches-tu donc à faire ?
Est-ce simplement celà :
Déterminer les dates des 7 jours qui composent une semaine incluant une date donnée en  observant la convention : 1er jour de la semaine = le Lundi ?
0

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

Posez votre question
foufidou Messages postés 156 Date d'inscription mardi 31 août 2004 Statut Membre Dernière intervention 21 mai 2015
23 avril 2007 à 00:02
je sait que c'est plutot simple la reponse est : oui c ca ce que je cherche j'arrive pas a avoir ce resultat !!!
0
cs_lermite222 Messages postés 492 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 2 juillet 2012 4
23 avril 2007 à 00:41
Bonsoir,
je travail en VB6 mais il y a surement des fonctions similaires en VB2005
alors je t'ai mis un petit exemple, a adapter en fonction de ton programme.


Dim dateDépart As Long

Private Sub Form_Load()
'en supposant que les données de la ligne 1 est 1/1/2007
dateDépart = DateSerial(2007, 1, 1)
End Sub

Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
Dim D As Date, DT As Long, jour As Integer
Dim Ligne As Integer
    If KeyCode = 13 Then 'j'ai ,mis un texte pour tester
        D = Text1.Text
        DT = DateSerial(Year(D), Month(D), Day(D))
        'la semaine va de lundi à dimanche (dépend de  vbMonday)
        'N° du jour pris dans calendrier
        jour = Weekday(D, vbMonday)
        'de 1 à 7 ,si pas de FixedRow pour les WE a adapter)
        Ligne = DT - dateDépart - jour
    End If
End Sub
ca t'aideras peut-être un peu.
cordialement
louis
0
foufidou Messages postés 156 Date d'inscription mardi 31 août 2004 Statut Membre Dernière intervention 21 mai 2015
23 avril 2007 à 11:01
oui c'est presque ça, il manque juste le fait qu'il doit reculer jusqu'au lundi meme si le jour choisi n'est pas lundi et afficher les jours de la semaine a partir du lundi de la semaine de la date choisi !!! le probleme c'est qu'il y a addDays mais il y a pas SubsractDays !!
en tous cas, merci les gars, merci a toi aussi OneHaker, j'y travaille
0
OneHacker Messages postés 1447 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 23 septembre 2007 2
23 avril 2007 à 11:25
Remplace

If Not dMonday.DayOfWeek = DayOfWeek.Monday Then ' Si ce n'est pas un Lundi
            MsgBox("Ce n'est pas un Lundi !", MsgBoxStyle.Exclamation)
            Exit Sub' Quitte la procédure
        End If

par

   If Not dMonday.DayOfWeek = DayOfWeek.Monday Then ' Si ce n'est pas un Lundi
            dMonday = dMonday.AddDays(-(dMonday.DayOfWeek - 1))
        End If

Redman
0
foufidou Messages postés 156 Date d'inscription mardi 31 août 2004 Statut Membre Dernière intervention 21 mai 2015
23 avril 2007 à 11:50
Merci OneHacker mais ton code bug lorsqu'on choisi un Dimanche il retourne la semaine d'aprés !!
en tous cas j'ai ajouter quelque lignes à ton code et ca marche a merveille maintenant :

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim dMonday As Date dtpChoixJour.Value ' dMonday la date choisie

        Dim test As Date
        test = "01/01/" & Now.Year
        test = test.AddMonths(CInt(dtpChoixJour.Value.Month - 1))
        Dim lundi As Integer = 0
        If dMonday.DayOfWeek.ToString = "Sunday"Then
            lundi = dMonday.Day - 6
        ElseIf dMonday.DayOfWeek.ToString = "Monday"Then
            lundi = dMonday.Day
        ElseIf dMonday.DayOfWeek.ToString = "Tuesday"Then
            lundi = dMonday.Day - 1
        ElseIf dMonday.DayOfWeek.ToString = "Wednesday"Then
            lundi = dMonday.Day - 2
        ElseIf dMonday.DayOfWeek.ToString = "Thursday"Then
            lundi = dMonday.Day - 3
        ElseIf dMonday.DayOfWeek.ToString = "Friday"Then
            lundi = dMonday.Day - 4
        Else
            lundi = dMonday.Day - 5
        End If
        If lundi < 0 Then     'Si lundi est negatif c'est qu'on a passé au mois precedent
            lundi = CInt(Date.DaysInMonth(dMonday.Year, dMonday.Month - 1)) + lundi
            test = test.AddMonths(-1)
        ElseIf lundi = 0 Then 'Le Meme cas mais la ça indique qu'on est au dernier jour du mois precedent
            lundi = Date.DaysInMonth(dMonday.Year, dMonday.Month - 1)
            test = test.AddMonths(-1)
        End If
        test = test.AddDays(lundi - 1)

        cbDates.Items.Clear() ' Vide le combobox

        If Not dMonday.DayOfWeek = DayOfWeek.Monday Then ' Si ce n'est pas un Lundi
            MsgBox("Ce n'est pas un Lundi !", MsgBoxStyle.Exclamation)
            dMonday.AddDays(lundi)
        End If

        Dim d(6) As Date' Créer un tableau de 7 jours
        d(0) = test ' Définit le premier jour étant le jour Lundi choisi

        For i As Integer = 1 To 6 ' pour chaque jour de la semaine suivant Lundi            d(i) test.AddDays(i) ' d(i) Lundi(1) + i
        Next

        For Each dday As Date In d ' Pour chaque date dans d()
            cbDates.Items.Add(dday.ToString) ' Ajouter la date dans le combobox
        Next
    End Sub
0
OneHacker Messages postés 1447 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 23 septembre 2007 2
23 avril 2007 à 13:35
Ca fait plus compliqué mais me je sais pourquoi ca renvoi le Lundi. Vu que c'est une framework Anglais ou un truc comme ça, le premier jour de la semaine c'est le Dimanche donc je vais juste décalé d'un jour pour que le premier jour soit le Lundi.

Redman
0
foufidou Messages postés 156 Date d'inscription mardi 31 août 2004 Statut Membre Dernière intervention 21 mai 2015
23 avril 2007 à 15:01
loooooooooooooooooooooool (moi aussi je trouve que c'est chiant le coloriage)
est ce que ca bug lorsqu'on selectionne le 1 Janvier par exemple ou le 31 decembre ????
0
OneHacker Messages postés 1447 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 23 septembre 2007 2
23 avril 2007 à 18:46
J'ai testé, ca ne bugue pas, ca marche impec mon code.

Redman
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
23 avril 2007 à 19:18
Bonjour,

Je ne sais pas ce que vous fabriquez tous !!!

Il y a surement un moyen d'écrire les choses aussi facilement que sous VB6, avec lequel il suffirait de ceci, ma foi :

Private Sub Command1_Click()
  toto = "14/04/2007"
  For i = 0 To 6
    MsgBox Format(DateAdd("d", 2 - WeekDay(toto) + i, toto), "dddd dd/mm/yyy")
  Next
End Sub
0
OneHacker Messages postés 1447 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 23 septembre 2007 2
23 avril 2007 à 19:22
Déjà ton code a des erreurs. dddd dd/mm/yyy ca n'existe pas ! Et si t'avait lu ce que j'ai dit tu comprendrais que ton code buguerait pour le dimanche.

Redman
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
23 avril 2007 à 19:35
Relis-moi, onehacker !
"Il y a surement un moyen d'écrire les choses aussi facilement que sous VB6, avec lequel il suffirait de ceci, ma foi :"

Le code donné marche parfaitement sous VB6

Il y a une transposition à faire en VB.Net et je suis sur qu'elle est aussi simple.
Si tu n'y parviens pas (à transposer) un autre VB.Netiste le fera, je n'en doute pas ....
0
OneHacker Messages postés 1447 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 23 septembre 2007 2
23 avril 2007 à 19:37
Je te signale que ici c'est VB.NET ensuite j'ai déjà donné le code.

Redman
0
Rejoignez-nous