Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : trouver numéro de semaine [ Langages dérivés / VBA ] (Clashme)

mardi 1 juillet 2008 à 14:50:51 | trouver numéro de semaine

Clashme

Public Function TrouverNuméroSemaine(ByVal Dte As Date) As Integer

bonjour tout le monde !!
voilà j'utilise depuis un mois une petite fonction pour trouver mon numéro de semaine ! avec la condition de la semaine 53

j'ai trouvé cette fonction sur ce site qui correspondé trés bien a ma demande
mais j'ai remarqué que pour mes dates de 2008 et 2009 tout allé bien!
mais à partir du 03/01/2010 mes semaines étaient décaller d'une semaine + 1 dans le temps par rapport à mon calendrier que j'ai sous mes yeux...
voici la fonction :
TrouverNuméroSemaine = Format(Dte - 2, "ww", vbSaturday)
         If TrouverNuméroSemaine > 52 Then
                 TrouverNuméroSemaine = 52
                 If Format(Dte + 7, "ww", vbMonday, vbFirstFourDays) = 2 Then
                           TrouverNuméroSemaine = 1
                   End If
         End If

End Function

si quelqu'un pouvait m'éclairer sur mon probleme xD
merci d'avance

mardi 1 juillet 2008 à 15:24:09 | Re : trouver numéro de semaine

jmfmarques

Membre Club
Bonjour,

et si tu t'intéressais (voir celà dans ton aide en ligne, sur ta machine) à la fonction Datepart, tout simplement  ?

mardi 1 juillet 2008 à 16:16:41 | Re : trouver numéro de semaine

Clashme

bonjour jmfmarques !

tout simplement le meme probleme....

DateFin = "28/07/2010"
        semainetest = DatePart("ww", DateFin) 'me donne 31
        
        semainef = Format(DateFin - 2, "ww", vbSaturday) ' me donne 31

alors que normalement le 28 juillet 2010 tombe en semaine 30 !

mardi 1 juillet 2008 à 16:39:49 | Re : trouver numéro de semaine

jrivet

Membre Club
Salut,
Une recherche rapide sur google et tu aurais trouvé ceci.

Retrieve The Week Number For a Given Date



Private Sub Form_Load()
MsgBox Week(#7/28/2010#)
End Sub



Private Function Week(dteValue As Date) As Integer
  'Monday is set as first day of week
  Dim lngDate As Long
  Dim intWeek As Integer
 
  'If january 1. is later then thursday, january 1. is not in week 1
  If Not Weekday("01/01/" & Year(dteValue), vbMonday) > 4 Then
     intWeek = 1
  Else
     intWeek = 0
  End If
  'Sets long-value for january 1.
  lngDate = CLng(CDate("01/01/" & Year(dteValue)))
 
  'Finds the first monday of year
  lngDate = lngDate + (8 - Weekday("01/01/" & Year(dteValue), vbMonday))
  'Increases week by week until set date is passed
  While Not lngDate > CLng(CDate(dteValue))
     intWeek = intWeek + 1
     lngDate = lngDate + 7
  Wend
  'If the date set is not in week 1, this finds latest week previous year
  If intWeek = 0 Then
     intWeek = Week("31/12/" & Year(dteValue) - 1)
  End If
  Week = intWeek
End Function
By Renfield


@+: Ju£i¤n
Pensez: Réponse acceptée

mardi 1 juillet 2008 à 16:57:34 | Re : trouver numéro de semaine

PCPT

Administrateur CodeS-SourceS
salut,

et pour le fun, pas plus loin que dans cette fenêtre sur la droite...



++

Prenez un instant pour répondre à ce sondage svp  

mardi 1 juillet 2008 à 17:00:51 | Re : trouver numéro de semaine

Clashme

écoute j'ai recherché/testé plusieur fonction plus que tu ne le crois avant de posté ici !

j'avais préféré celle que j'ai mise sur mon premier message ! 1/ pour ca taille 2/ elle fonctionne sans boucle...
3/ ces résultat correcte
avant de m'appercevoir du probléme lié à l'année 2010

certe ton code à l'aire de fonctionner mais je le trouve trop long
surtout pour mon traitement qui travail sur plus de 2000 lignes

merci comme meme julien de vouloir m'aider

si d'autres personnes ont des idées n'ésité pas

mardi 1 juillet 2008 à 17:31:02 | Re : trouver numéro de semaine

bigfish_le vrai

Salut,

oui j'ai une autre idee...

- te prendre par la main et aller voir le lien que t'a donné PCPT car il regroupe toute les methodes generiques. Les solutions de Jmfmarques et de Jrivet incluses.

Bon courage

A+

mardi 1 juillet 2008 à 18:01:10 | Re : trouver numéro de semaine

Molenn

Ou alors écrire toi même ta propre fonction ?
C'est ce que j'ai fait personnellement moi-même en m'inspirant de plusieurs trouvées sur le net (ce qui fait qu'à mon avis, on doit retrouver la même chose un peu partout au nom de variable près).
La voici, la voilà :

Public Function NuméroSemaine(DateContrôlée As Date) As String
   
    NuméroSemaine = DatePart("ww", DateContrôlée, vbMonday, vbFirstFourDays)
    If NuméroSemaine > 52 Then
        If DatePart("ww", DateContrôlée + 7, vbMonday, vbFirstFourDays) = 2 Then
           NuméroSemaine = 1
       End If
    End If
    NuméroSemaine = Right("0" & NuméroSemaine, 2)

End Function

Ah oui, ma fonction sort la semaine au format String parce que je veux que les premières soient 01, 02 ... 09 et non 1, 2, ... 9.

Si je rentre 28/07/2010, je trouve la semaine 30.

Autrement, ton problème peut venir que tu paramètres très mal la fonction DatePart.
Le numéro de semaine par chez nous correspond aux options vbMonday et vbFirstFourDays : si elles ne sont pas précisées, elles ont pour valeur par défaut vbSunday et vbFirstJan1.
Mais même bien paramétrée, elle ne fonctionne pas toujours bien (essayez avec le 31/12/2007 et dites moi ce qui ressort ^^)

'alà

Molenn


mardi 1 juillet 2008 à 21:24:13 | Re : trouver numéro de semaine

casy

Membre Club
Attention à la définition du n° de semaine et notamment de la première semaine de l'année.
Cela peut varier.

les définitions les plus courantes sont :
- La première semaine est celle du 1er Janvier
- La premiere semaine est la première semaine de l'année comptant au moins 4 jours
- Le premiere semaine est la première semaine complete de l'année.

Sachant que le premier jour de l'année peut etre variable lui aussi, et définie soit le dimanche, soit le lundi.

Généralement en France, le premier jour de la semaine est défini sur Lundi, et la première semaine de l'année, celle du 1er Janvier.
Mais ce n'est pas forcément le cas dans le paramétrage de ton logiciel.


---- Sevyc64  (alias Casy) ----
# LE PARTAGE EST NOTRE FORCE #    [ Lien ]

mercredi 2 juillet 2008 à 09:12:32 | Re : trouver numéro de semaine

Molenn

Pas tout à fait vrai Casy, en France, la première semaine n'est pas celle contenant le 1er janvier.
Exemple : le 1er janvier 2006 faisait partie de la semaine 52.

La règle est la suivante :
'******************************************************************
' Calcul des dates d'une année par numéro de semaine
'
' Recommandations de l'Organisation Internationale de Standardisation
' Norme ISO 8601

' - Le lundi est considéré comme le premier jour de la semaine.
' - Les semaines d'une même année sont numérotées de 01 à 52
' (parfois 53).
' - La semaine qui porte le numéro 01 est celle qui contient le
' premier jeudi de janvier.
' - Il peut exister une semaine n°53 (années communes finissant
' un jeudi, bissextiles finissant un jeudi ou un vendredi).
'******************************************************************

Molenn


1 2

Cette discussion est classé dans : trouver, numéro, semaine, if, trouvernumérosemaine


Répondre à ce message

Sujets en rapport avec ce message

Renvoi du numéro de la semaine dans une requête [ par kiki ] Bonjour,Je cherche le moyen d'afficher le numéro de la semaine dans un champ de critères à partir d'une requête sur Access.Ex: var_sem: numéro de la s comment transformer la semaine ?? [ par guilo ] Je cherche à trouver une fonction VBA me permettant de trouver le nombre de semaine entre deux dates.Merci de votre aide.GUILO Comment Récupèrer le numéro de semaine? [ par anthonio ] Je suis en train de développer une base de donnée Access, comment faire pour récupèrer le numéro de semaine par code VBA? Actuellement j'affiche le nu numéro de semaine= lundi à dimanche [ par combory ] Dans access 2000J'exploite une table dans laquelle j'entre 3 saisie journalière. A partir de cette table, je fais 3 requête pour avoir une synthèse jo Trouver le jour de la semaine a partir d'une date [ par lezardjet ] BonjourJe travaille sous access 2000 et je cherche un peu de code en VB ou même directement une fonction qui pourrai renvoyer pour une date donnée le Urgent Recherche calendrier avec le numéro de la semaine [ par jamaica ] Salut, Je recherche une source de calendrier qui pourrait me calculer le N° de Semaine en tenant compte qu'ils y a des année de 53 semaines comme 2004 Urgent recherche source qui donne le numéro de la semaine [ par jamaica ] Salut, recherche source qui donne le numéro de la semaine a la date du jour Merci d'avance.robers@coditel.net Trouver le numéro de série de mon écran [ par titoye ] Bonjour, Je suis administrateur d'un réseau de 400 machines et URGENT Expert demandé ( Date, trouver le début de la semaine ) [ par Nightcourrier ] Voici mon problème, Je veux savoir d'Apres une date X quand était le début de cette semaine.Ex :On est le 27 janvier 2005 et je veux imprimer le rappo Récupéré le mois avec année et numéro de semaine [ par XGuarden ] Bonjour, je cherche un moyen de récupéré le nom d'un mois à partir de l'année et du numéro de semaine(en visual basic 6). En respectant la regle des


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Appels d'offres

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,530 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.