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

Bug dans la Fonction ?

14 réponses
Avatar
Ayrton [ASC]
Bonjour à tous,

Voilà je fais des tests sur la fonction No Semaine qui j'ai trouvée sur le
site de 3Stone et/ou Anor ;-)
Cette fonction dit qu'elle tient compte du bug de la dll oleaut 32 qui
retourne de temps en temps semaine 53 au lieu de semaine 1.

Quand j'inscris 03/01/2005 dans le champs de ma table, ma requête me
retoourne.................................................................2004/53
;-) alors que j'attendais 2005/01.

Si quelqu'un avait une petite idée, je le remercie d'avance.

PS : Je ne recopie pas cette fonction car elle est longue ;-)

Cordialement

--
@+
Ayrton
http://cerbermail.com/?NiMhJk1y8Y
Date : Le 11/07/2005

10 réponses

1 2
Avatar
Salut


"Ayrton [ASC]" a écrit dans le message de news:
%
| Bonjour à tous,
|
| Voilà je fais des tests sur la fonction No Semaine qui j'ai trouvée sur le
| site de 3Stone et/ou Anor ;-)
| Cette fonction dit qu'elle tient compte du bug de la dll oleaut 32 qui
| retourne de temps en temps semaine 53 au lieu de semaine 1.
|
| Quand j'inscris 03/01/2005 dans le champs de ma table, ma requête me
| retoourne.................................................................2004/53
| ;-) alors que j'attendais 2005/01.
|
| Si quelqu'un avait une petite idée, je le remercie d'avance.
|
| PS : Je ne recopie pas cette fonction car elle est longue ;-)
|


Je viens de retester la Function fWeek(MyDate As Date) As String
et elle me retourne bien 2005/01 ....

Même la formule WeekISO retourne 1

Bizarre ton affaire....
et tu peux la recopier elle n'est pas si longue que ça ;-))

Function fWeek(MyDate As Date) As String
Dim NoSemaine As Integer
Dim NoAnnee As Integer
If Not IsDate(MyDate) Then
fWeek = ""
Else
NoSemaine = Format(MyDate, "ww", vbMonday, vbFirstFourDays)
If NoSemaine = 53 Then
' Correction Bug Oleaut32.dll (29/12/2003 par exemple)
' http://support.microsoft.com/default.aspx?scid=kb;FR;q200299
If Format(MyDate + 7, "ww", vbMonday, vbFirstFourDays) = 2 Then
NoSemaine = 1
End If
End If

Select Case NoSemaine
'Affecter la semaine 1 de fin d'année
'au début de l'année suivante
Case 1
If Month(MyDate) = 12 Then
NoAnnee = Year(MyDate) + 1
Else
NoAnnee = Year(MyDate)
End If

Case Is < 52
NoAnnee = Year(MyDate)

'Affecter la semaine 52 ou 53 de début d'année
'à la fin d'année précédente
Case Is >= 52
If Month(MyDate) = 1 Then
NoAnnee = Year(MyDate) - 1
Else
NoAnnee = Year(MyDate)
End If
End Select
fWeek = NoAnnee & "/" & Format(NoSemaine, "00")
End If
End Function


Function WeekISO(LaDate As Date) As Integer
WeekISO = Int((LaDate - (DateSerial(Year(LaDate - _
Weekday(LaDate - 1) + 4), 1, 3) - _
Weekday(DateSerial(Year(LaDate - _
Weekday(LaDate - 1) + 4), 1, 3))) + 5) / 7)

End Function




--
Arnaud
-----------------------------------
http://users.skynet.be/mpfa/
-----------------------------------
Avatar
Ayrton [ASC]
Bonjour *Anor*
Dans ton message de news:,
Tu as pensé très fort :-(*)

Salut


Bonsoir,


Je viens de retester la Function fWeek(MyDate As Date) As String
et elle me retourne bien 2005/01 ....

Même la formule WeekISO retourne 1

Bizarre ton affaire....


Ben oui, je ne te le fait pas dire !
Maintenant, n'étant pas un pro, c'est peut être moi qu'il l'exploite mal !
J'ai un champs NoSemaine dans ma Table ; dans celui-ci, je tape 01/01/2005 ;
ensuite dans une requête, je prends le champs NoSemaine et à côté :
Expr1:fWeek([NoSemaine]) et le résultat m'affiche : 2004/53.

Volià ;-)
Est ce que c'est moi qui m'y prends mal ?

Merci

--
@+
Ayrton
http://cerbermail.com/?NiMhJk1y8Y
Date : Le 11/07/2005

Avatar
re

le 01/01/2005, c'est normal que ça retourne 2004/53
mais le 03/01/2005, ce n'est pas normal car c'est lundi => 2005/01

Bon désolé, je dois vous laisser : je me lève à 4h00 pour aller à Londres demain matin
(hé oui 3stone je ne passe pas au dessus de ta tête cette fois ci pour aller voir les bremen
stadtmusikanten ;-))

à+

Arnaud
-----------------------------------
http://users.skynet.be/mpfa/
-----------------------------------

"Ayrton [ASC]" a écrit dans le message de news:

| Bonjour *Anor*
| Dans ton message de news:,
| Tu as pensé très fort :-(*)
|
| > Salut
|
| Bonsoir,
|
|
| > Je viens de retester la Function fWeek(MyDate As Date) As String
| > et elle me retourne bien 2005/01 ....
| >
| > Même la formule WeekISO retourne 1
| >
| > Bizarre ton affaire....
|
| Ben oui, je ne te le fait pas dire !
| Maintenant, n'étant pas un pro, c'est peut être moi qu'il l'exploite mal !
| J'ai un champs NoSemaine dans ma Table ; dans celui-ci, je tape 01/01/2005 ;
| ensuite dans une requête, je prends le champs NoSemaine et à côté :
| Expr1:fWeek([NoSemaine]) et le résultat m'affiche : 2004/53.
|
| Volià ;-)
| Est ce que c'est moi qui m'y prends mal ?
|
| Merci
|
| --
| @+
| Ayrton
| http://cerbermail.com/?NiMhJk1y8Y
| Date : Le 11/07/2005
|
|
|
Avatar
Ayrton [ASC]
Bonjour *Anor*
Dans ton message de news:,
Tu as pensé très fort :-(*)

re


Re,

le 01/01/2005, c'est normal que ça retourne 2004/53
mais le 03/01/2005, ce n'est pas normal car c'est lundi => 2005/01


Avec toutes mes excuses Anor ! j'ai fais une erreur de frappe dans mon
premier post ; j'ai tapé 03/01/2005 au lieu de 06/01/2005 ; ce qui fait que
la date du 03/01/2005 me retourne bien 2005/01.
Sincèrement désolé ;-(

Et merci encore de ton aide

Bien à toi

--
@+
Ayrton
http://cerbermail.com/?NiMhJk1y8Y
Date : Le 11/07/2005

Avatar
3stone
Helo copain,

<Anor>
| (hé oui 3stone je ne passe pas au dessus de ta tête cette fois ci pour aller voir les bremen
| stadtmusikanten ;-))

La ville se nomme "Bremen"... mais...

L'allemand étant ce qu'il est (mais pas pire que le french ;-)
on dit: Bremer Stadtmusikanten

Pour ceux's qui ignorent:
Une (des nombreuses) jolie histoire enfantine des frères Grimm
ou il est question d'un âne, d'un chien, d'un chat et d'un coq!
http://www.fln.vcu.edu/grimm/bremer.html


Bon, je mets en HS ? heuhhh... oui :o)


PS: Bon voyage Arnaud !


--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Email : http://www.cerbermail.com/?Xfg61Z3IQw
Avatar
Ayrton [ASC]
Re Anor,

Juste une dernière petite question stp :
Quand je teste la fonction dans le module :
Sub Test()
MsgBox fWeek (03/01/2005)
End Sub

ça me retourne: 1899/52
Je pense que je fais une erreur au niveau du format mais même en faisant (
2005/01/03) je ne retrouve pas ce que j'attends ;-(
Une petite idée ?
En touyt état de cause, mis dans mon form principal ça fonctionne et ça me
retourne la bonne valeur ; à vrai dire, c'est juste au niveau du test que je
" m'emmêle " !

Merci

--
@+
Ayrton
http://cerbermail.com/?NiMhJk1y8Y
Date : Le 12/07/2005
Avatar
3stone
Salut,

"Ayrton [ASC]"
| Juste une dernière petite question stp :
| Quand je teste la fonction dans le module :
| Sub Test()
| MsgBox fWeek (03/01/2005)
| End Sub
|
| ça me retourne: 1899/52
| Je pense que je fais une erreur au niveau du format mais même en faisant (
| 2005/01/03) je ne retrouve pas ce que j'attends ;-(
| Une petite idée ?
| En touyt état de cause, mis dans mon form principal ça fonctionne et ça me
| retourne la bonne valeur ; à vrai dire, c'est juste au niveau du test que je
| " m'emmêle " !



et si tu essaies :

Debug.Print fWeek(#03/01/2005#)


humm ?


--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Email : http://www.cerbermail.com/?Xfg61Z3IQw
Avatar
Ayrton [ASC]
Bonjour *3stone*
Dans ton message de news:%,
Tu as pensé très fort :-(*)
Salut,



Salut 3stone

et si tu essaies :

Debug.Print fWeek(#03/01/2005#)


humm ?


Malheureusement non ! ! ;-(
J'ai un message " Erreur de compilation " ; je ne connais pas la syntaxr d'
Anor qui lui retourne la valeur 2005/01 mais ce n'est pas grave.
J'ia même réessayé ce que j'avais fait en entourant la date de # ( comme
dans ton exemple ) et ça me retourne 2005/09

C'est pas bien grave Pierre
Merci de ton aide

--
@+
Ayrton
http://cerbermail.com/?NiMhJk1y8Y

Date : Le 12/07/2005

Avatar
Eric
Bonsoir Ayrton,

En VBA la date est au format US donc pour connaitre la semaine
correspondant à la date du 03/01/2005 ,date FR, il faut que tu mettes:

Debug.Print fWeek(#01/03/2005#)
(date US mm/dd/yyyy)

Par contre dans une requête(concepteur de requête et non SQL), tu mets
ca au format FR et devrait pas y avoir de prob.
EN SQL il faut mettre aussi la date au format US.

Ok?



Malheureusement non ! ! ;-(
J'ai un message " Erreur de compilation " ; je ne connais pas la syntaxr d'
Anor qui lui retourne la valeur 2005/01 mais ce n'est pas grave.
J'ia même réessayé ce que j'avais fait en entourant la date de # ( comme
dans ton exemple ) et ça me retourne 2005/09

--

A+
Eric
http://users.skynet.be/mpfa/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Ayrton [ASC]
Bonjour *Eric*
Dans ton message de news:,
Tu as pensé très fort :-(*)

Bonsoir Ayrton,


Bonsoir Eric,

En VBA la date est au format US donc pour connaitre la semaine
correspondant à la date du 03/01/2005 ,date FR, il faut que tu mettes:

Debug.Print fWeek(#01/03/2005#)
(date US mm/dd/yyyy)


Ben oui mais c'est exactement la syntaxe que m'as donné 3stone et quand je
la tape telle quelle ça me dit " Erreur de Compilation "



Par contre dans une requête(concepteur de requête et non SQL), tu mets
ca au format FR et devrait pas y avoir de prob.
EN SQL il faut mettre aussi la date au format US.


Question surement stupide mais c'est quoi le concepteur de requête ? ce ne
serait pas la requête en mode creation ? Là ou l'on doit glisser les champs
?

Ok?


Oui chef ! ;-)

Merci Eric

--
@+
Ayrton
http://cerbermail.com/?NiMhJk1y8Y

Date : Le 12/07/2005

1 2