RecupNumeroSemaine

RecupNumeroSemaine

Messagepar Stephane Maillard » 19 Juil 2005 à 20:53

Cette fonction retourne le numéro de semaine par rapport à une date données.

Pour appeler la fonction :

' Le champs dateDebut est au format Temps (date seul)

varDate = RecupNumeroSemaine(doc.dateDebut(0))[syntax="ls"]Function RecupNumeroSemaine(dateJour As Variant) As Integer

On Error Goto ReturnZero

Const Janvier = 1, Fevrier = 2, Mars = 3, Avril = 4, Mai = 5, Juin = 6
Const Juillet = 7, Aout = 8, Septembre = 9, Octobre = 10, Novembre = 11
Const Decembre = 12

Dim i%, y%, m%, d%, Semaine%, Jours%
Dim aMois(12) As Integer

aMois(Janvier) = 31
aMois(Fevrier) = 28
aMois(Mars) = 31
aMois(Avril) = 30
aMois(Mai) = 31
aMois(Juin) = 30
aMois(Juillet) = 31
aMois(Aout) = 31
aMois(Septembre) = 30
aMois(Octobre) = 31
aMois(Novembre) = 30
aMois(Decembre) = 31

y% = Year(dateJour)
m% = Month( dateJour)
d% = Day( dateJour )

If y% Mod 4 = 0 Then
aMois(Fevrier) = aMois(Fevrier) + 1
End If

Jours% = Weekday( Datenumber(y%, 1, 1) ) + 1

For i% = 1 To m% - 1
Jours% = Jours% + aMois(i%)
Next

Jours% = Jours% + d%

Semaine% = Jours% / 7

If Semaine% > 52 Then Semaine% = 1

RecupNumeroSemaine = Semaine%
Exit Function

ReturnZero:
RecupNumeroSemaine = 0
Exit Function

End Function[/syntax]
Cordialement

Stéphane Maillard
Avatar de l’utilisateur
Stephane Maillard
Lord of DominoArea
Lord of DominoArea
 
Message(s) : 8695
Inscrit(e) le : 16 Déc 2004 à 01:10
Localisation : Bretagne

Messagepar Michael DELIQUE » 05 Juin 2006 à 00:03

Salut

une autre fonction qui renvoi le numéro de la semaine en fonction d'une date. la fonction peux utiliser 2 méthodes de calcule différent

Public Function NumWeek(Byval wDDate As String, wnbVersion As Integer) As Integer
'calcul le numéro de la semaine pour une date passée

'Déclaration des Variables
Dim Fdate As String
Dim nbTotalDay As Integer
Dim nbDay As Integer

On Error Goto ErreurHandle

If wnbVersion = 1 Then

'récupere le premier jour de l'année de la date passé
Fdate="01/01/"+Right(wDdate,4)

Select Case Weekday(Fdate)
Case 1 ' dimanche
nbDay = 7
Case 2 ' lundi
nbDay = 1
Case 3 'mardi
nbDay = 2
Case 4 'mercredi
nbDay = 3
Case 5 'jeudi
nbDay = 4
Case 6 'Vendredi
nbDay = 5
Case 7 'Samedi
nbDay = 6
End Select

'calcul le nombre de jour entre passé depuis le début de l'année et la date passée
nbTotalDay =Cint(Cdbl(Datevalue(wDdate))-Cdbl(Datevalue(Fdate)))+nbDay

'retourne le nombre de semaines passé
NumWeek = Abs((nbTotalDay\7))+1
Else
NumWeek= Cint(Format(wDDate,"WW"))
End If

If NumWeek < 1 Then
NumWeek = 1
End If

If NumWeek > 53 Then
NumWeek = 53
End If

Exit Function
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Messagepar oguruma » 06 Juin 2006 à 10:47

hi, tu sais que tu as cela directement dans format$... regarde ma classe DateRangeManagement, le format "ww"
Bien à vous

http://www.dominoarea.org/oguruma/

Les téléphones PORTABLES dans les TGV y en a MARRRE de ces voyageurs qui ne respectent pas les autres ! ARRET DES PORTABLES SVP - Merci

Fumeurs ! respectez les non fumeurs !!!
Fumeurs ! respectez la loi de février 2007 et les lieux publics !!! (ie. hall de gares)
Avatar de l’utilisateur
oguruma
Super V.I.P.
Super V.I.P.
 
Message(s) : 4086
Inscrit(e) le : 16 Déc 2004 à 08:50
Localisation : LILLE

Messagepar Michael DELIQUE » 06 Juin 2006 à 12:51

Salut

je sais, regarde bien la fonction elle permet de calculer le numéro selon 2 méthode la deuxieme utilise le format
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Messagepar oguruma » 07 Juin 2006 à 09:20

:oops: :oops: :oops:
Bien à vous

http://www.dominoarea.org/oguruma/

Les téléphones PORTABLES dans les TGV y en a MARRRE de ces voyageurs qui ne respectent pas les autres ! ARRET DES PORTABLES SVP - Merci

Fumeurs ! respectez les non fumeurs !!!
Fumeurs ! respectez la loi de février 2007 et les lieux publics !!! (ie. hall de gares)
Avatar de l’utilisateur
oguruma
Super V.I.P.
Super V.I.P.
 
Message(s) : 4086
Inscrit(e) le : 16 Déc 2004 à 08:50
Localisation : LILLE

Messagepar Raziel » 14 Août 2006 à 10:08

La fonction Format$(..., "ww") comporte un bug lorsqu'une semaine se trouve à cheval.

Ex :
Retourne S1 pour le 01/01/2005 alors que l'on est en S53

Retourne S1 pour le 01/01/2006 alors que l'on est en S52

Pour plus d'infos, voici un lien :
http://www-1.ibm.com/support/docview.ws ... wg21176534
Raziel

L'administration est un lieu ou les gens qui arrivent en retard croisent dans l'escalier ceux qui partent en avance. [Georges Courteline]
Avatar de l’utilisateur
Raziel
Modérateur
Modérateur
 
Message(s) : 1795
Inscrit(e) le : 21 Déc 2004 à 11:06
Localisation : Roubaix

Messagepar oguruma » 20 Août 2006 à 17:26

ok je note ce lien de réponse
désolé pour ma réponse à ce propos sur un autre post traitant de ce sujet
;)
Bien à vous

http://www.dominoarea.org/oguruma/

Les téléphones PORTABLES dans les TGV y en a MARRRE de ces voyageurs qui ne respectent pas les autres ! ARRET DES PORTABLES SVP - Merci

Fumeurs ! respectez les non fumeurs !!!
Fumeurs ! respectez la loi de février 2007 et les lieux publics !!! (ie. hall de gares)
Avatar de l’utilisateur
oguruma
Super V.I.P.
Super V.I.P.
 
Message(s) : 4086
Inscrit(e) le : 16 Déc 2004 à 08:50
Localisation : LILLE


Retour vers Date