OVH Cloud OVH Cloud

Un souci avec les num semaines

4 réponses
Avatar
Patrice
Bonjour,

Je cherche à déterminer le numéro de la semaine en fonction d'une date.
J'ai fait mes recherches sur le site d'excelabo et j'ai trouvé ce code

Sub NoSem()
reP = InputBox("Saisissez une date sous la forme jj/mm/aaaa" _
& Chr(10) & "(ex: 01/01/" & Year(Date) &")")
If reP = "" Or Not IsDate(reP) Then
Exit Sub
Else reP = DateValue(reP)
dteVar = CDate(reP)
D = Int(dteVar)
reS = DateSerial(Year(D + (8 - Weekday(D)) Mod 7 - 3), 1, 1)
reS = ((D - reS - 3 + (Weekday(reS) + 1) Mod 7)) 7 + 1
MsgBox "Semaine: " & reS
end if
End Sub

J'ai tenté de l'exécuter mais VBE m'indique une erreur de syntaxe à la
ligne
reS = ((D - reS - 3 + (Weekday(reS) + 1) Mod 7)) 7 + 1

Je recherche la cause de cette erreur depuis un bon moment mais je ne
trouve rien!

Y-a-t-il une personne qui puisse m'aider un peu?

D'avance merci.

4 réponses

Avatar
AV
Sub NoSem() 'AV
daT = InputBox("Saisissez une date sous la forme jj/mm/aaaa" _
& Chr(10) & "(ex: 01/01/" & Year(Date) & ")")
If daT = "" Or Not IsDate(daT) Then
Exit Sub
Else: daT = DateValue(daT)
If Day(daT) = 2 And Month(daT) = 1 And Year(daT) Mod 400 = 101 Then n°S = 52:
Exit Sub
n°S = IIf(Weekday(daT) = 2 And Month(daT) = 12 And Day(daT) > 28, 1,
DatePart("ww", daT, 2, 2))
MsgBox "Semaine: " & n°S
End If
End Sub

AV
Avatar
JB
Bonjour,


'http://support.microsoft.com/default.aspx?scid=kb;fr;200299

Function NoSemaine(MyDate As Date) As Integer ' Week Of Year
NoSemaine = Format(MyDate, "ww", vbMonday, vbFirstFourDays)
If NoSemaine > 52 Then
If Format(MyDate + 7, "ww", vbMonday, vbFirstFourDays) = 2 Then
NoSemaine = 1
End If
End Function

Cordialement JB


Bonjour,

Je cherche à déterminer le numéro de la semaine en fonction d'une d ate.
J'ai fait mes recherches sur le site d'excelabo et j'ai trouvé ce code

Sub NoSem()
reP = InputBox("Saisissez une date sous la forme jj/mm/aaaa" _
& Chr(10) & "(ex: 01/01/" & Year(Date) &")")
If reP = "" Or Not IsDate(reP) Then
Exit Sub
Else reP = DateValue(reP)
dteVar = CDate(reP)
D = Int(dteVar)
reS = DateSerial(Year(D + (8 - Weekday(D)) Mod 7 - 3), 1, 1)
reS = ((D - reS - 3 + (Weekday(reS) + 1) Mod 7)) 7 + 1
MsgBox "Semaine: " & reS
end if
End Sub

J'ai tenté de l'exécuter mais VBE m'indique une erreur de syntaxe à la
ligne
reS = ((D - reS - 3 + (Weekday(reS) + 1) Mod 7)) 7 + 1

Je recherche la cause de cette erreur depuis un bon moment mais je ne
trouve rien!

Y-a-t-il une personne qui puisse m'aider un peu?

D'avance merci.


Avatar
JLuc
*Bonjour Patrice*,
Une fouction que j'utilise tous les jours :

Public Function ISOWeekNum(d1 As Date) As Integer
' Fonction recuperee sur
http://www.excelabo.net/xl/calendriers.php#numsemVBA
'Daniel Maher
Dim Jan03 As Long
Jan03 = DateSerial(Year(d1 - Weekday(d1 - 1) + 4), 1, 3)
ISOWeekNum = Int((d1 - Jan03 + Weekday(Jan03) + 5) / 7)
End Function


Bonjour,

Je cherche à déterminer le numéro de la semaine en fonction d'une date.
J'ai fait mes recherches sur le site d'excelabo et j'ai trouvé ce code

Sub NoSem()
reP = InputBox("Saisissez une date sous la forme jj/mm/aaaa" _
& Chr(10) & "(ex: 01/01/" & Year(Date) &")")
If reP = "" Or Not IsDate(reP) Then
Exit Sub
Else reP = DateValue(reP)
dteVar = CDate(reP)
D = Int(dteVar)
reS = DateSerial(Year(D + (8 - Weekday(D)) Mod 7 - 3), 1, 1)
reS = ((D - reS - 3 + (Weekday(reS) + 1) Mod 7)) 7 + 1
MsgBox "Semaine: " & reS
end if
End Sub

J'ai tenté de l'exécuter mais VBE m'indique une erreur de syntaxe à la ligne
reS = ((D - reS - 3 + (Weekday(reS) + 1) Mod 7)) 7 + 1

Je recherche la cause de cette erreur depuis un bon moment mais je ne trouve
rien!

Y-a-t-il une personne qui puisse m'aider un peu?

D'avance merci.


--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O

Avatar
Jacquouille
Binamé Président
En Gaulois: Bien Aimé ou Gentil Président -))

Ce filet de macro s'exécute parfaitement jusqu'à la fin du premier msg qui
demande d'entrer une date.
Ensuite, pffffft, plus rien.
J'ai mis un contrôle (MsgBox daT) immédiatement avant If daT = "" Or Not
IsDate(daT) Then
et il m'affiche bien daT
Par contre, si je le mets après cette même ligne, il me jette !
Porquè?
Le msgbox ne reconnaîtrait-il pas le format date?
Tout au plaisir de vous lire ......

Bien amicalmement,
Vivement conseillés:
http://www.excelabo.net
http://jacxl.free.fr/mpfe/trombino.html
http://dj.joss.free.fr/netiquet.htm
http://frederic.sigonneau.free.fr/

Jacquouille.

"AV" a écrit dans le message de news:

Sub NoSem() 'AV
daT = InputBox("Saisissez une date sous la forme jj/mm/aaaa" _
& Chr(10) & "(ex: 01/01/" & Year(Date) & ")")
If daT = "" Or Not IsDate(daT) Then
Exit Sub
Else: daT = DateValue(daT)
If Day(daT) = 2 And Month(daT) = 1 And Year(daT) Mod 400 = 101 Then n°S =
52: Exit Sub
n°S = IIf(Weekday(daT) = 2 And Month(daT) = 12 And Day(daT) > 28, 1,
DatePart("ww", daT, 2, 2))
MsgBox "Semaine: " & n°S
End If
End Sub

AV