Bonjour.
J'aimerai savoir si il est possible de connaitre la liste des date qui compose une semaine donnée.
Bonjour.
J'aimerai savoir si il est possible de connaitre la liste des date qui compose une semaine donnée.
Mais précise ta demande, je ne crois pas avoir répondu à ta question
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Sub DatesJourSemaine() Dim TabDate(7) DateDébut = InputBox("Saisir la date au format jj/mm/aaaa", "", "26/06/2006") TabDate(1) = DateDébut For i = 1 To 6 TabDate(i + 1) = Format(CDate(DateDébut) + i, "dd/mm/yy") Next 'Contrôle For i = 1 To 7 MsgBox TabDate(i) Next End Sub
Regarde aussi datepart, dans l'aide
A+
En fait datepart ne donne pas ce que je souhaite (ou alors alors j'ai rien compris) et ton code non plus (même si au pire je dois pouvoir modifier l'appli pour faire avec).
Ce que je souhaite, c'est que a partir d'un numéro de semaine passé en paramètre, la fonction me ressorte la liste des date de cette semaine.
Par exemple, si je lui passe 24, elle me retournerai 12/06/2006, 13/06/2006, 14/06/2006, 15/06/2006, 16/06,2006, 17/06/2006 et 18/06/2006. (en supposant que par défaut on travaille sur l'année en cours)
Shinta veut quelque chose ressemblant à ceci :
pas affiné !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Private Sub Command1_Click() alala = DateValue("01/01/2006") coucou = WeekDay(alala) ' on détermine ici quel jour de la semaine était le 01/01/2006 toto = 2 ' ici le numéro de la semaine concernée - le jour 1 de la semaine étant un dimanche dep = ((toto) * 7) If coucou > 1 Then dep = dep + coucou For i = 0 To 6 MsgBox alala + dep + i Next End Sub
EDIT :
J'ai édité et affiné avec ces conventions là (car c'est une question de conventions) :
- la 1ère semaine commence le 1er dimanche d'une année, le samedi et les jours précédents étant des jours de la dernière semaine de l'année précédente.
Si une autre convention que celle-ci est retenue, il suffit de modifier le code en conséquence.
Je ne modifie alors que le traitement de coucou !
en france toutes les semaines commencent un lundi
la semaine 1 est la première semaine contenant un jeudi
il ne s'agit pas d'une convention mais d'une norme
Comme je ne pense pas, d'une part, que le développement informatique doive être dépendant de normes et que, d'autre part, Windows considère que le Dimanche est le premier jour de la semaine... et pour preuve :
Voilà de quoi satisfaire chacun tout en restant totalement indépendant...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Private Sub preuve_Click() alala = DateValue("01/01/2006") MsgBox WeekDay(alala) & " " & Format(alala, "dddd,mm,yyyy") end sub
Sur une form : un bouton de command command1 et 2 optionButtons option1 et option2 (je n'ai pas voulu faire un groupe de contrôles pour rester compatible avec VBA également)
et le code suivant :
lancez, choisissez votre norme et voyez...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 Private norme As Integer Private Sub Command1_Click() alala = DateValue("01/01/2006") toto = 1 ' ici le numéro de la semaine concernée 'MsgBox WeekDay(alala) & " " & Format(alala, "dddd,mm,yyyy") coucou = WeekDay(alala) ' celà est le numéro de jour Windows, qui considère que Dimanche est ' le jour 1, lui. 'on va maintenant s'y prndre pour que le calcul soit toujours bon, quel que soit le jour 'retenu comme étrant le 1er jour de la semaine... et tout le monde sera d'accord. Le 'développement informatique n'est pas là pour obéir à des normes mais pour obéir à 'un cahier des charges... et celui-ci peut varier. Alors... If coucou - norme = norme Then dep = alala + ((toto - 1) * 7) + 1 - norme Else dep = alala + (7 - (coucou - norme)) + ((toto - 1) * 7) + 1 End If For i = 0 To 6 MsgBox dep + i Next End Sub Private Sub Form_Load() Option1.Value = False Option2.Value = True norme = 1 Option1.Caption = "on considère que la semaine commence un dimanche" Option2.Caption = "on considère que la semaine commence un lundi" End Sub Private Sub Option1_Click() norme = 0 End Sub Private Sub Option2_Click() norme = 1 End Sub
et évitez, s'il vous plait, un "MOUARF" en faisant remarquer qu'il suffit de calculer à la norme "windows" puis d'ajouter un jour à la date de départ de la semaine à détailler, pour être à la norme française (enfin... je vous conseille de réfléchir avant au bug que celà entraînerait....)
juste pour m'excuser de ne pas avoir repondu plus tôt, mais j'ai pas eut accès a Internet ce week, donc forcement ca aide pas. Quoi qu'il en soit merci pour vos réponses, je vais regarder ça dès que j'ai 5 minutes.
Salut
J'ai fait un petit test: Sur une Form, un controle Slider (inclus dans les Microsoft Windows Common Controls 6.0) et un ListBox.
les \ servent à forcer l'affichage du / si le séparateur de date est autre dans les paramètres régionaux.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 Private Sub Form_Load() AfficherSemaine Slider1.Value End Sub Private Sub Slider1_Change() AfficherSemaine Slider1.Value End Sub Private Sub AfficherSemaine(NoSemaine As Integer) Dim premJan As Date, premJourSem As Date Dim i As Integer List1.Clear premJan = CDate("01/01/" & Year(Date)) premJourSem = premJan + 7 * (NoSemaine - 1) For i = 0 To 6 ' une semaine List1.AddItem Format(premJourSem + i, "dd\/mm\/yyyy") Next End Sub
[Edit] J'ai oublié de mentionner que les valeurs des propriétés Min et Max du Slider sont respectivement 1 et 52.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager