comment faire en VBE pour déterminer les jours férier ? .
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 )
comment faire en VBE pour déterminer les jours férier ? .
.
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 )
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 )
comment faire en VBE pour déterminer les jours férier ? .
.
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 )
comment faire en VBE pour déterminer les jours férier ? .
.
.
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 )
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 )
comment faire en VBE pour déterminer les jours férier ? .
.
.
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 :
ç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 )
comment faire en VBE pour déterminer les jours férier ?
.
.
.
.
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 :
ç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 )
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 :
ç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 )
comment faire en VBE pour déterminer les jours férier ?
.
.
.
.
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
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/ ------------------------------------
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
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
news@access.fr.vu
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
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
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/ ------------------------------------