Les jours d'une semaine bien precise !!! [Résolu]

foufidou 156 Messages postés mardi 31 août 2004Date d'inscription 21 mai 2015 Dernière intervention - 22 avril 2007 à 15:26 - Dernière réponse : OneHacker 1466 Messages postés jeudi 2 novembre 2000Date d'inscription 23 septembre 2007 Dernière intervention
- 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.
Afficher la suite 

Votre réponse

16 réponses

Meilleure réponse
OneHacker 1466 Messages postés jeudi 2 novembre 2000Date d'inscription 23 septembre 2007 Dernière intervention - 23 avril 2007 à 02:57
3
Merci
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

Merci OneHacker 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 72 internautes ce mois-ci

Commenter la réponse de OneHacker
Meilleure réponse
OneHacker 1466 Messages postés jeudi 2 novembre 2000Date d'inscription 23 septembre 2007 Dernière intervention - 23 avril 2007 à 14:11
3
Merci
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

Merci OneHacker 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 72 internautes ce mois-ci

Commenter la réponse de OneHacker
cs_Exploreur 4824 Messages postés lundi 11 novembre 2002Date d'inscription 15 novembre 2016 Dernière intervention - 22 avril 2007 à 17:13
0
Merci
Salut,

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

A+
Exploreur

 
Commenter la réponse de cs_Exploreur
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 22 avril 2007 à 22:36
0
Merci
"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 ?
Commenter la réponse de jmfmarques
foufidou 156 Messages postés mardi 31 août 2004Date d'inscription 21 mai 2015 Dernière intervention - 23 avril 2007 à 00:02
0
Merci
je sait que c'est plutot simple la reponse est : oui c ca ce que je cherche j'arrive pas a avoir ce resultat !!!
Commenter la réponse de foufidou
cs_lermite222 500 Messages postés jeudi 5 avril 2007Date d'inscription 2 juillet 2012 Dernière intervention - 23 avril 2007 à 00:41
0
Merci
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
Commenter la réponse de cs_lermite222
foufidou 156 Messages postés mardi 31 août 2004Date d'inscription 21 mai 2015 Dernière intervention - 23 avril 2007 à 11:01
0
Merci
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
Commenter la réponse de foufidou
OneHacker 1466 Messages postés jeudi 2 novembre 2000Date d'inscription 23 septembre 2007 Dernière intervention - 23 avril 2007 à 11:25
0
Merci
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
Commenter la réponse de OneHacker
foufidou 156 Messages postés mardi 31 août 2004Date d'inscription 21 mai 2015 Dernière intervention - 23 avril 2007 à 11:50
0
Merci
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
Commenter la réponse de foufidou
OneHacker 1466 Messages postés jeudi 2 novembre 2000Date d'inscription 23 septembre 2007 Dernière intervention - 23 avril 2007 à 13:35
0
Merci
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
Commenter la réponse de OneHacker
foufidou 156 Messages postés mardi 31 août 2004Date d'inscription 21 mai 2015 Dernière intervention - 23 avril 2007 à 15:01
0
Merci
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 ????
Commenter la réponse de foufidou
OneHacker 1466 Messages postés jeudi 2 novembre 2000Date d'inscription 23 septembre 2007 Dernière intervention - 23 avril 2007 à 18:46
0
Merci
J'ai testé, ca ne bugue pas, ca marche impec mon code.

Redman
Commenter la réponse de OneHacker
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 23 avril 2007 à 19:18
0
Merci
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
Commenter la réponse de jmfmarques
OneHacker 1466 Messages postés jeudi 2 novembre 2000Date d'inscription 23 septembre 2007 Dernière intervention - 23 avril 2007 à 19:22
0
Merci
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
Commenter la réponse de OneHacker
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 23 avril 2007 à 19:35
0
Merci
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 ....
Commenter la réponse de jmfmarques
OneHacker 1466 Messages postés jeudi 2 novembre 2000Date d'inscription 23 septembre 2007 Dernière intervention - 23 avril 2007 à 19:37
0
Merci
Je te signale que ici c'est VB.NET ensuite j'ai déjà donné le code.

Redman
Commenter la réponse de OneHacker

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.