OVH Cloud OVH Cloud

Férier

5 réponses
Avatar
Emcy
Salut,

comment faire en VBE pour d=E9terminer les jours f=E9rier ?

5 réponses

Avatar
Modeste
çiao...
http://www.excelabo.net
voir gd_feries.zip
@+
-----Message d'origine-----
Salut,

comment faire en VBE pour déterminer les jours férier ?
.



Avatar
Emcy
salut,

Génial ton classeur mais j'aurais aimé savoir comment le
faire sans utiliser les formules d'excel (juste en vba).

Le gros soucis est de determiner la première pleine lune
de primtemps ( pour determiner paques ). Tu sais comment
faire ? (expliques moi le principe après je me
debrouillerais )


-----Message d'origine-----
çiao...
http://www.excelabo.net
voir gd_feries.zip
@+
-----Message d'origine-----
Salut,

comment faire en VBE pour déterminer les jours férier ?
.

.





Avatar
Modeste
Bonjour
;-)))
tu l'aura remarqué ce classeurn'est que la compilation de
nombreuses contributions trouvées ici m^me sur ce forum
(Laurent Longre, JC Ferrand, Daniel Maher etc...)
;-)))

la determination à partir des phases de la lune n'est que
théorique./
considerant un periode sidérale de 29 jours 12 heures et
des poussieres, il faut descendre à la 8 eme décimale pour
que le calcul fonctionne, et encore ????
la période sidérale de la lune prise en compte n'est
qu'une moyenne qui ne tient pas compte des anomalies
orbitales !!!!
;-)))
il pourrait même arriver que Paques tombe un jeudi !!!
cela m'est arrivé l'année ou le printemps etait le 19 mars
;-)))

crois-moi ces calculs n'ont aucun interet au regard du
résultat escompté.

tu pourra trouver avantageusement d'autres algorithmes
dans le fichier zip que tu as récupéré , notament les
formules collectées par Hans Herber à l'occasion d'un
challenge pour trouver la formule la plus courte
concernant la détermination de la date de Paques

@+
-----Message d'origine-----
salut,

Génial ton classeur mais j'aurais aimé savoir comment le
faire sans utiliser les formules d'excel (juste en vba).

Le gros soucis est de determiner la première pleine lune
de primtemps ( pour determiner paques ). Tu sais comment
faire ? (expliques moi le principe après je me
debrouillerais )


-----Message d'origine-----
çiao...
http://www.excelabo.net
voir gd_feries.zip
@+
-----Message d'origine-----
Salut,

comment faire en VBE pour déterminer les jours férier ?
.

.


.






Avatar
Emcy
Salut,

Tu n'as pas bien compris mon problème : je voulais
connaitre une formule VBA non pas une formule Excel. Je
me suis debrouillé à convertir la formule "=FRANC((JOUR
(MINUTE(j/38)/2+55)&"/4/"&j)/7;)*7-6", voici ce que ça
donne :

Dim NuméroAnnée as Integer
Dim Paques$ as string

Paques$ = CStr(CDate(CDbl(CInt(DateSerial(NuméroAnnée, 4,
(Day(Minute(Etape1 / 38) / 2 + 55))) / 7)) * 7 - 6))

ça a l'air de marcher, mais j'ai des doutes ( sur les
arrondis ) avec l'utilisation des fonctions de conversion
(CDbl, CInt et CDate). A ton avis, ça marche ? Est-ce
qu'on peut simplifier la formule ?


-----Message d'origine-----
Bonjour
;-)))
tu l'aura remarqué ce classeurn'est que la compilation
de

nombreuses contributions trouvées ici m^me sur ce forum
(Laurent Longre, JC Ferrand, Daniel Maher etc...)
;-)))

la determination à partir des phases de la lune n'est
que

théorique./
considerant un periode sidérale de 29 jours 12 heures et
des poussieres, il faut descendre à la 8 eme décimale
pour

que le calcul fonctionne, et encore ????
la période sidérale de la lune prise en compte n'est
qu'une moyenne qui ne tient pas compte des anomalies
orbitales !!!!
;-)))
il pourrait même arriver que Paques tombe un jeudi !!!
cela m'est arrivé l'année ou le printemps etait le 19
mars

;-)))

crois-moi ces calculs n'ont aucun interet au regard du
résultat escompté.

tu pourra trouver avantageusement d'autres algorithmes
dans le fichier zip que tu as récupéré , notament les
formules collectées par Hans Herber à l'occasion d'un
challenge pour trouver la formule la plus courte
concernant la détermination de la date de Paques

@+
-----Message d'origine-----
salut,

Génial ton classeur mais j'aurais aimé savoir comment
le


faire sans utiliser les formules d'excel (juste en vba).

Le gros soucis est de determiner la première pleine
lune


de primtemps ( pour determiner paques ). Tu sais
comment


faire ? (expliques moi le principe après je me
debrouillerais )


-----Message d'origine-----
çiao...
http://www.excelabo.net
voir gd_feries.zip
@+
-----Message d'origine-----
Salut,

comment faire en VBE pour déterminer les jours
férier ?




.

.


.


.







Avatar
Jessy SEMPERE
Bonjour

je ne sais pas ce que tu as mais voici quelques fonctions
que j'utilise sous Access qui fonctionne très bien :

****************************************************
Option Compare Text
Option Explicit

Public Function fPaques(wAn%) As Date
'Pâques est le dimanche qui suit le quatorzième jour de la
'Lune qui tombe le 21 mars ou immédiatement après

Dim wA%, wB%, wC%, wD%, wE%, wF%, wG%, wH%
Dim wI%, wJ%, wK%, wL%, wM%, wN%, wP%

wA = wAn Mod 19 'Calcul du rang de l'année dans le cycle lunaire qui a 19
ans
wB = wAn 100 'Calcul du siècle
wC = wAn Mod 100 'Calcul du rang de l'année dans le siècle
wD = wB 4
wE = wB Mod 4
wF = (wB + 8) 25
wG = (wB - wF + 1) 3
wH = (19 * wA + wB - wD - wG + 15) Mod 30
wI = wC 4
wK = wC Mod 4
wL = (32 + 2 * wE + 2 * wI - wH - wK) Mod 7
wM = (wA + 11 * wH + 22 * wL) 451
wN = (wH + wL - 7 * wM + 114) 31 'détermine le mois
wP = (wH + wL - 7 * wM + 114) Mod 31 'détermine le jour

fPaques = DateSerial(wAn, wN, wP + 1)

'** A titre d'info :************'
'** dtVenSaint = fPaques - 2****'
'** dtLunPaq = fPaques + 1******'
'** dtAscension = fPaques + 39**'
'** dtDimPent = fPaques + 49****'
'** dtLunPent = fPaques + 50****'

End Function

Public Function OpenDay(dt As Date) As Boolean

If WeekDay(dt) <> 1 _
And WeekDay(dt) <> 7 _
And JourFérié(dt) = False Then
OpenDay = True
Else
OpenDay = False
End If

End Function
Public Function JourFérié(dtDate As Date) As Boolean

Dim dtPaques As Date
dtPaques = fPaques(Year(dtDate))
Select Case dtDate
Case CDate("01/01/" & Year(dtDate)) 'Jour de l'an
JourFérié = True
Case CDate("01/05/" & Year(dtDate)) 'Fête du travail
JourFérié = True
Case CDate("08/05/" & Year(dtDate)) 'Victoire de 1945
JourFérié = True
Case CDate("14/07/" & Year(dtDate)) 'Fête nationale
JourFérié = True
Case CDate("15/08/" & Year(dtDate)) 'Assomption
JourFérié = True
Case CDate("01/11/" & Year(dtDate)) 'Toussaint
JourFérié = True
Case CDate("11/11/" & Year(dtDate)) 'Armistie 1918
JourFérié = True
Case CDate("25/12/" & Year(dtDate)) 'Noël
JourFérié = True
Case dtPaques + 1 'Lundi de Pâques
JourFérié = True
Case dtPaques + 39 'Ascension
JourFérié = True
Case dtPaques + 50 'Lundi de pentcôte
JourFérié = True
Case Else
JourFérié = False
End Select

End Function

Public Function NbOpenDay(dtDeb As Date, dtFin As Date) As Integer
' Calculer le nombre de jours ouvrables entre deux dates
' Utilise la fonction JourFérié(dtDate As Date)

Dim dblDateDeb As Double
Dim dblDateFin As Double
Dim DateCourante As Date
Dim Resultat As Integer

If IsNull(dtDeb) Or IsNull(dtFin) Then
NbOpenDay = 0
Exit Function
ElseIf Not IsDate(dtDeb) Or Not IsDate(dtFin) Then
NbOpenDay = 0
Exit Function
ElseIf dtDeb > dtFin Then
Dim dhTemp As Date
dhTemp = dtDeb
dtDeb = dtFin
dtFin = dhTemp
End If

dblDateDeb = CDbl(dtDeb)
dblDateFin = CDbl(dtFin)

Do Until dblDateDeb > dblDateFin
DateCourante = CDate(dblDateDeb)
If WeekDay(DateCourante) <> 1 And _
WeekDay(DateCourante) <> 7 And _
JourFérié(DateCourante) = False Then
Resultat = Resultat + 1
End If
dblDateDeb = dblDateDeb + 1
Loop
NbOpenDay = Resultat

End Function
****************************************************

--
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------