Xynder59
Messages postés48Date d'inscriptionlundi 13 octobre 2003StatutMembreDernière intervention13 septembre 2007
-
10 juil. 2007 à 16:05
Xynder59
Messages postés48Date d'inscriptionlundi 13 octobre 2003StatutMembreDernière intervention13 septembre 2007
-
11 juil. 2007 à 08:47
Bonjour, j'aimerai faire une fonction qui en fonction du jour, du mois et de l'année me remène les dates de ce jour...
Je m'explique :
par exemple pour le mois de juillet 2007 j'aimerai que la fonction me ramène les dates des lundis (réponses : les 2-9-16-23-30)
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 10 juil. 2007 à 20:30
Bon,...
Voilà qui me rassure (j'aime pas passer pour ce que je suis : un vieux)
Merci ami Chibat ... Dieu te le rendra.
Voilà donc :
Private Sub Command1_Click() mois 3: annee 2002
couic = 1
Do While Month(DateSerial(annee, mois, couic)) = mois
madate = DateSerial(annee, mois, couic)
couic = couic + 1
If WeekDay(madate) = vbMonday Then
MsgBox madate
couic = couic + 6
End If
Loop
End Sub
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 10 juil. 2007 à 16:13
Bonjour,
Weekday te ramène le N° d'un jour
Tu peux donc extraire le N° du jour du 1er du mois et en déduire la date du 1er lundi suivant (par datadd)
Il te suffit ensuite de partir de cette dernière date et d'ajouter 7 jours (de 7 en 7) jusqu'à ne plus être dans le mois considéré.
Il te reste à ouvrir ton aide en ligne et à y voir la syntaxe de WekkDay et de DateAdd.
cs_JMO
Messages postés1854Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention24 juin 201827 10 juil. 2007 à 17:03
Bonjour à tous
Il y a diverses possibilités pour obtenir tous les lundis d'un mois.
En voici une:
msgbox NbreJoursMois(07,2007, strListe)
Function NbreJoursMois(strMois, strAnnee, strListe)
Select Case (strMois)
'Avril, Juin, Septembre, Novembre
Case 4, 6, 9, 11
NbreJoursMois = 30
'Février
Case 2
'Si divisible par 400 alors bisextile if (strAnnee Mod 4 0) And (strAnnee Mod 100 <> 0) Or (strAnnee Mod 400 0) Then
NbreJoursMois = 29
Else
NbreJoursMois = 28
End if
'Les autres mois
Case Else
NbreJoursMois = 31
End Select
For i = 1 To NbreJoursMois If Len(i) 1 Then i"0" & i If Len(strMois) 1 Then strMois "0" & strMois
If Left(FormatDateTime(CDate(i & "/" & strMois & "/" & strAnnee), 1),5) = "lundi" Then
strListe = strliste &vbCrLf& FormatDateTime(CDate(i & "/" & strMois & "/" & strAnnee), 1)
End If
Next
NbreJoursMois = strListe
End Function
jean-marc
Vous n’avez pas trouvé la réponse que vous recherchez ?
chaibat05
Messages postés1883Date d'inscriptionsamedi 1 avril 2006StatutMembreDernière intervention20 novembre 20072 10 juil. 2007 à 17:24
Salut,
essaies ceci :
Function Jour_Voulu(xJ As String,xM As Integer, xA As Integer) As String
Dim i As Integer
Dim sDate As String
Dim dDate As Date
For i=1 To 31
sDate=Format(i,"00") & "/" & Format(xM,"00") & "/" & Format(xA,"0000")
If IsDate'sDate) Then
dDate=CDate(sDate)
If Format(dDate,"dddd")=xJ Then _
Jour_Voulu=Jour_Voulu & "-" & i
End If
Next
'supprimer le "-" du début
Jour_Voulu=Mid(Jour_Voulu,2,Len(Jour_Voulu)-1)
End Function
Exemple :
Jour_Voulu("lundi",7,2007) renvoi "2-9-16-23-30"
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 10 juil. 2007 à 18:11
Salut à tous,
Vous ne pensiez tout de même pas "rigoler" sans moi, non ?
Private Sub Command1_Click() mois 3: annee 2002
j1 = WeekDay("01/" & mois & "/" & annee, vbMonday)
For i = 0 To 4 voir DateAdd("d", 7 * i, IIf(j1 vbMonday, j1, DateAdd("d", 8 - j1, "01/" & mois & "/" & annee)))
If Month(voir) = mois Then MsgBox voir
Next
End Sub
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 10 juil. 2007 à 19:20
Re,
On jette maintenant le IIF (t'aimes pas, alors on jette) et on se sert de DateSerial (t'aimes et on garde donc), mais en bouclant non sur tous les jours mais sur un minimum; d'accord ?
Qu'est-ce que çà donne ?
Ceci, alors :
Private Sub Command1_Click() mois 3: annee 2002
madate = DateSerial(annee, mois, 1)
couic = 0
While Month(madate) = mois
madate = DateAdd("d", couic, DateSerial(annee, mois, 1)) If WeekDay(madate) vbMonday And Month(madate) mois Then
MsgBox madate
couic = couic + 7
Else
couic = couic + 1
End If
Wend
End Sub
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 10 juil. 2007 à 20:13
Attends un peu, Xybder59,...
J'ai fait (un peu volontairement et un peu à cause du pastis,... une ... non pas une erreur, mais oui, un code inutilement redondant...). J'attendais d'être remis à ma place...
Je vois que personne n'a osé le faire et pose la question suivante à tous :
Pourquoi ? Parce que je suis un vieux ? ou quoi ?
Corrigez-moi vite (non pas, une fois de plus, cette erreur, mais cette redondance inutile).
S'il vous plait !!!
J'attends cette correction.... que chacun y aille de bon coeur et vous me ferez non pas de la peine, mais le plus grand des cadeaux ...
A bientôt.