Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

BUG VB6 sur "format(Date,"ww",...)

7 réponses
Avatar
News
Bonjour
Un gros bug sur VB6 a été déclaré par Microsoft sur le numéro de semaine
retourné par la fonction : Format(date,"ww",vbFirstDayOfWeek,
vbfirstfourday)
Le support propose une solution avec une fonction (support 200299), ok....
Mais mon problème est qu'apparemment on ne peut pas paramétrer le jour de
début de semaine (vbFirstDayofWeek) dans cette fonction. Par défaut c'est le
lundi, ou alors je n'ai pas compris.
Dans mon application, l'utilisateur peut choisir le Dimanche ou le Lundi
comme premier jour de la semaine en paramétrage... Comment puis-je faire
avec cette fonction ???

Merci d'éclairer ma lanterne qui faibli de plus en plus....

--
Laurent

7 réponses

Avatar
Zoury
Salut Laurent! :O)

Essaie avec la fonction WeekDay().. je ne sais pas si elle a le même bug..

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/

Merci de poster les réponses au groupe afin d'en faire profiter à tous
"News" wrote in message
news:bum98i$loo$
Bonjour
Un gros bug sur VB6 a été déclaré par Microsoft sur le numéro de semaine
retourné par la fonction : Format(date,"ww",vbFirstDayOfWeek,
vbfirstfourday)
Le support propose une solution avec une fonction (support 200299), ok....
Mais mon problème est qu'apparemment on ne peut pas paramétrer le jour de
début de semaine (vbFirstDayofWeek) dans cette fonction. Par défaut c'est


le
lundi, ou alors je n'ai pas compris.
Dans mon application, l'utilisateur peut choisir le Dimanche ou le Lundi
comme premier jour de la semaine en paramétrage... Comment puis-je faire
avec cette fonction ???

Merci d'éclairer ma lanterne qui faibli de plus en plus....

--
Laurent




Avatar
David
Bonjour Laurent,

Peut-être que je n'appréhende pas bien le problème,
mais pour moi il n'y a pas de "bug", car je "joue"
avec le paramètre vbFirstFullWeek dans la
fonction Format comme indiqué ci-dessous pour
obtenir le résultat que je veux.

De plus voici 2 sites ou tout est expliqué :
le 1er d'après Monsieur le Professeur
d'université est un postulat :
http://www.univ-lemans.fr/~hainry/articles/semaine
.html

etl e second, pour qui, c'est une norme ISo (8601) :

http://nmiroz.free.fr/dev/semaines/readme.htm#theo
rie

Bonne lecture.

Format(#1/31/2003#, "ww", vbMonday, vbFirstJan1)

vbMonday peut etre remplacé par :

VbSunday Dimanche (valeur par défaut)
vbMonday Lundi
vbTuesday Mardi
vbWednesday Mercredi
vbThursday Jeudi
vbFriday Vendredi
vbSaturday Samedi

et encore plus important pour le résultat affiché
suivant les calendriers :
vbFirstJan peut être remplacé par :

vbFirstJan1 Commence par la semaine qui comprend le 1er janvier
(valeur par défaut).
vbFirstFourDays Commence par la première semaine qui comprend au moins
quatre jours de la nouvelle année.
vbFirstFullWeek Commence la première semaine complète de l'année.

a+
Jean-Pol DAVID

"News" a écrit dans le message de news:
bum98i$loo$
Bonjour
Un gros bug sur VB6 a été déclaré par Microsoft sur le numéro de semaine
retourné par la fonction : Format(date,"ww",vbFirstDayOfWeek,
vbfirstfourday)
Le support propose une solution avec une fonction (support 200299), ok....
Mais mon problème est qu'apparemment on ne peut pas paramétrer le jour de
début de semaine (vbFirstDayofWeek) dans cette fonction. Par défaut c'est


le
lundi, ou alors je n'ai pas compris.
Dans mon application, l'utilisateur peut choisir le Dimanche ou le Lundi
comme premier jour de la semaine en paramétrage... Comment puis-je faire
avec cette fonction ???

Merci d'éclairer ma lanterne qui faibli de plus en plus....

--
Laurent




Avatar
News
Salut merci, mais WeekDay donne seulement le numéro du jour de la semaine !

--
Laurent


"Zoury" <yanick_lefebvre at hotmail dot com> a écrit dans le message de
news:
Salut Laurent! :O)

Essaie avec la fonction WeekDay().. je ne sais pas si elle a le même bug..

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/

Merci de poster les réponses au groupe afin d'en faire profiter à tous
"News" wrote in message
news:bum98i$loo$
> Bonjour
> Un gros bug sur VB6 a été déclaré par Microsoft sur le numéro de semaine
> retourné par la fonction : Format(date,"ww",vbFirstDayOfWeek,
> vbfirstfourday)
> Le support propose une solution avec une fonction (support 200299),


ok....
> Mais mon problème est qu'apparemment on ne peut pas paramétrer le jour


de
> début de semaine (vbFirstDayofWeek) dans cette fonction. Par défaut


c'est
le
> lundi, ou alors je n'ai pas compris.
> Dans mon application, l'utilisateur peut choisir le Dimanche ou le Lundi
> comme premier jour de la semaine en paramétrage... Comment puis-je faire
> avec cette fonction ???
>
> Merci d'éclairer ma lanterne qui faibli de plus en plus....
>
> --
> Laurent
>
>




Avatar
News
Salut
Merci pour les liens
Mais il faut savoir qu'en France la norme oblige d'utiliser vbFirstFourDays
donc vbFirstFullWeek est inutilisable.
bonne journée

--
Laurent


"David" a écrit dans le message de
news:400eb7d0$0$284$
Bonjour Laurent,

Peut-être que je n'appréhende pas bien le problème,
mais pour moi il n'y a pas de "bug", car je "joue"
avec le paramètre vbFirstFullWeek dans la
fonction Format comme indiqué ci-dessous pour
obtenir le résultat que je veux.

De plus voici 2 sites ou tout est expliqué :
le 1er d'après Monsieur le Professeur
d'université est un postulat :
http://www.univ-lemans.fr/~hainry/articles/semaine
.html

etl e second, pour qui, c'est une norme ISo (8601) :

http://nmiroz.free.fr/dev/semaines/readme.htm#theo
rie

Bonne lecture.

Format(#1/31/2003#, "ww", vbMonday, vbFirstJan1)

vbMonday peut etre remplacé par :

VbSunday Dimanche (valeur par défaut)
vbMonday Lundi
vbTuesday Mardi
vbWednesday Mercredi
vbThursday Jeudi
vbFriday Vendredi
vbSaturday Samedi

et encore plus important pour le résultat affiché
suivant les calendriers :
vbFirstJan peut être remplacé par :

vbFirstJan1 Commence par la semaine qui comprend le 1er janvier
(valeur par défaut).
vbFirstFourDays Commence par la première semaine qui comprend au moins
quatre jours de la nouvelle année.
vbFirstFullWeek Commence la première semaine complète de l'année.

a+
Jean-Pol DAVID

"News" a écrit dans le message de news:
bum98i$loo$
> Bonjour
> Un gros bug sur VB6 a été déclaré par Microsoft sur le numéro de semaine
> retourné par la fonction : Format(date,"ww",vbFirstDayOfWeek,
> vbfirstfourday)
> Le support propose une solution avec une fonction (support 200299),


ok....
> Mais mon problème est qu'apparemment on ne peut pas paramétrer le jour


de
> début de semaine (vbFirstDayofWeek) dans cette fonction. Par défaut


c'est
le
> lundi, ou alors je n'ai pas compris.
> Dans mon application, l'utilisateur peut choisir le Dimanche ou le Lundi
> comme premier jour de la semaine en paramétrage... Comment puis-je faire
> avec cette fonction ???
>
> Merci d'éclairer ma lanterne qui faibli de plus en plus....
>
> --
> Laurent
>
>




Avatar
nullus premium
Je n'arrive pas à trouver le support 200299.

J'ai moi même écrit une fonction, mais le premier jour de
la semaine est un lundi et le premier janvier est dans la
semaine UNE s'il c'est entre le lundi au jeudi, sinon
c'est semaine 52 ou 53 ...

-----Message d'origine-----
Bonjour
Un gros bug sur VB6 a été déclaré par Microsoft sur le


numéro de semaine
retourné par la fonction : Format


(date,"ww",vbFirstDayOfWeek,
vbfirstfourday)
Le support propose une solution avec une fonction


(support 200299), ok....
Mais mon problème est qu'apparemment on ne peut pas


paramétrer le jour de
début de semaine (vbFirstDayofWeek) dans cette fonction.


Par défaut c'est le
lundi, ou alors je n'ai pas compris.
Dans mon application, l'utilisateur peut choisir le


Dimanche ou le Lundi
comme premier jour de la semaine en paramétrage...


Comment puis-je faire
avec cette fonction ???

Merci d'éclairer ma lanterne qui faibli de plus en


plus....

--
Laurent


.



Avatar
News
Salut
C'est curieux que tu n'aies pas trouvé.
La réference sur le site de Microsoft est la suivante :
<<
Base de connaissances Microsoft - 200299
BUG : Format or DatePart Functions Can Return Wrong Week Number inYear.
This article was previously published under Q200299






--
Laurent


"nullus premium" a écrit dans le
message de news:1c8501c3e0c5$e1d15f40$
Je n'arrive pas à trouver le support 200299.

J'ai moi même écrit une fonction, mais le premier jour de
la semaine est un lundi et le premier janvier est dans la
semaine UNE s'il c'est entre le lundi au jeudi, sinon
c'est semaine 52 ou 53 ...

-----Message d'origine-----
Bonjour
Un gros bug sur VB6 a été déclaré par Microsoft sur le


numéro de semaine
retourné par la fonction : Format


(date,"ww",vbFirstDayOfWeek,
vbfirstfourday)
Le support propose une solution avec une fonction


(support 200299), ok....
Mais mon problème est qu'apparemment on ne peut pas


paramétrer le jour de
début de semaine (vbFirstDayofWeek) dans cette fonction.


Par défaut c'est le
lundi, ou alors je n'ai pas compris.
Dans mon application, l'utilisateur peut choisir le


Dimanche ou le Lundi
comme premier jour de la semaine en paramétrage...


Comment puis-je faire
avec cette fonction ???

Merci d'éclairer ma lanterne qui faibli de plus en


plus....

--
Laurent


.



Avatar
Merci laurent,
en fait, j'ai cherché 200299 et dans la base française !

avec Q200299 en UK, je suis tombé sur :
http://support.microsoft.com/default.aspx?scid=kb;en-
us;200299 (c'est la réponse que j'attendais)

il ne me reste plus qu'à traduire pour voir si j'ai juste,
et quelle soluce ils proposent, mais à première vue,
imprimé sur papier, c'est assez complexe (certainement les
lignes d'explications en commentaires ...)

les explications de Gilles HAINRY sont bien dignent d'un
agrégé de mathématique, mais pas bien pratique pour nous.

pour information, voici mon code, valable uniquement dans
les conditions européennes, 1er jour de la semaine un
lundi, 1er janvier en semaine UNE si c'est du lundi au
jeudi.

Public Function NbSem(t As Date) As integer ' ou string
'la date au format européen, le mois au millieu
Dim Ye As Integer
Dim Wf As Integer
Dim Wl As Integer
Dim Out As Integer
Ye = Year(t)
Wf = Weekday("01/01/" & Ye, vbMonday)
Wl = Weekday("31/12/" & Ye, vbMonday)
Out = (Wf + DatePart("y", t, vbMonday) - 2) 7
If Wf < 5 Then
Out = Out + 1
End If
If Out = 0 Then
If Wl > 4 And Weekday("31/12/" & Ye - 1, vbMonday) = 4
Then
Out = 53
Else
Out = 52
End If
ElseIf Out > 52 Then
Out = 53
If Wl < 4 Then
Out = 1
End If
End If
NbSem = Out
End Function

j'accepte tous commentaires, toutes simplifications,
toutes modifications vers une utilisation multi-culture

j'ai une boite chez laposte.net
avec comme nom nullus.premium
et par mesure anti spam il faut mettre [azertyui] dans le
début de l'objet de votre courriel

-----Message d'origine-----
Salut
C'est curieux que tu n'aies pas trouvé.
La réference sur le site de Microsoft est la suivante :
<<
Base de connaissances Microsoft - 200299
BUG : Format or DatePart Functions Can Return Wrong Week


Number inYear.
This article was previously published under Q200299






--
Laurent


"nullus premium" a


écrit dans le
message de news:1c8501c3e0c5$e1d15f40$
Je n'arrive pas à trouver le support 200299.

J'ai moi même écrit une fonction, mais le premier jour de
la semaine est un lundi et le premier janvier est dans la
semaine UNE s'il c'est entre le lundi au jeudi, sinon
c'est semaine 52 ou 53 ...