Re: Calcul nombre de jours samedi,dimanche et jours fériés entre deux dates
#11
Accro XLPages

Inscription: 23/05/2007
De Chamrousse

Messages: 309

Système d'exploitation:
PC
Version Excel utilisée:
2013
Posté le : 22-08-2008 17h31
Re,

Comme tu fais démarrer ton PaquesVBA < 1700, je pensais qu'il y avait cette possibilité sur XL Mac

A++

A+ à tous


Cordialement
Hors Ligne
Rapport   Haut 

Re: Calcul nombre de jours samedi,dimanche et jours fériés entre deux dates
#12
Débutant XLPages

Inscription: 24/07/2007

Messages: 8

Version Excel utilisée:
2000
Posté le : 23-08-2008 09h38
Bonjour,

Je reviens à la charge avec une version toujours 100 % formule qui permet un calcul sur n années.

Cette version permet de gérer également les jours fériés mobiles qui tombent le même jour d'un jour férié fixe (cas du jeudi de l'Ascension cette année qui tombait le 1er mai).

Voir le fichier.

Le recours aux formules matricielles entraîne des temps de calcul un peu longs dès lors que le calcul des jours fériés se fait sur plusieurs années.

@+
Pièce jointe:
zip WE+JF_V2.zip   [ Taille: 4.52 Ko - Téléchargements: 891 ]
Hors Ligne
Rapport   Haut 

Re: Calcul nombre de jours samedi,dimanche et jours fériés entre deux dates
#13
Webmestre

Inscription: 18/05/2006
De Saône-et-Loire (71)

Messages: 1539

Système d'exploitation:
PC
Version Excel utilisée:
97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365
Posté le : 26-08-2008 00h52
Bonsoir lannou, JeanMarie, JCGL, tibo, le Forum,

De retour de congés, je tiens à vous remercier de votre passage sur ce site et de l'aide que vous apportez sans compter aux visiteurs

Je salue particulièrement le bel effort VBAistique de mon ami JeanMarie. Je l'ai toujours dit : le jour où un formuliste tel que toi se mettra vraiment au VBA, il fera un malheur ! Très beau travail, bravo !

Bravo aussi à l'ami tibo pour ce superbe exemple uniquement à base de formules ! Pour que le fil soit complet, je mets le lien sur le classeur dont tu parles pour la formule de calcul du dimanche de Pâques : sauf erreur de ma part, il s'agit de l'excellent classeur Dates et Heures de Cathy, Monique et Celeda qu'on peut retrouver sur XLD.

Comme l'ami lannou semblait demander une solution VBA, je poste donc également ci-dessous ma façon de procéder (qui ne remet absolument pas en cause le très beau travail de JeanMarie tout à fait fonctionnel) :
Option Explicit

Function NbJoursChomes(D1 As Date, D2 As Date) As Long
'myDearFriend! - www.mdf-xlpages.com
Dim DF As New Collection
Dim D As Date
Dim NbJO As Long
Dim An As Integer
Dim Ok As Boolean
    On Error Resume Next
    For An = Year(D1) To Year(D2)
        D = DimPaques(An)
        DF.Add DateSerial(An, 1, 1), CStr(DateSerial(An, 1, 1))     'Jour de l'An
        DF.Add D + 1, CStr(D + 1)                                   'Lundi de Pâques
        DF.Add DateSerial(An, 5, 1), CStr(DateSerial(An, 5, 1))     'Fête du Travail
        DF.Add DateSerial(An, 5, 8), CStr(DateSerial(An, 5, 8))     'Armistice 1945
        DF.Add D + 39, CStr(D + 39)                                 'Jeudi Ascension
        DF.Add D + 50, CStr(D + 50)                                 'Lundi de Pentecôte
        DF.Add DateSerial(An, 7, 14), CStr(DateSerial(An, 7, 14))   'Fête Nationale
        DF.Add DateSerial(An, 8, 15), CStr(DateSerial(An, 8, 15))   'Assomption
        DF.Add DateSerial(An, 11, 1), CStr(DateSerial(An, 11, 1))   'Toussaint
        DF.Add DateSerial(An, 11, 11), CStr(DateSerial(An, 11, 11)) 'Armistice 1918
        DF.Add DateSerial(An, 12, 25), CStr(DateSerial(An, 12, 25)) 'Noël
    Next An
    D = D1
    Do
        If Weekday(D, vbMonday) < 6 Then
            Ok = DF(CStr(D)) <> ""
            If Ok Then
                NbJO = NbJO + 1
                Ok = False
            End If
        Else
            NbJO = NbJO + 1
        End If
        D = D + 1
    Loop Until D > D2
    NbJoursChomes = NbJO
End Function

Private Function DimPaques(ByVal Annee As Integer) As Date
'myDearFriend! - www.mdf-xlpages.com
'(Calcul du dimanche de Pâques d'après un algorithme de Thomas O'Beirne)
Dim n As Integer, c As Integer, a As Byte, b As Byte
    n = Annee - 1900
    a = n Mod 19
    b = (11 * a + 4 - ((a * 7 + 1) \ 19)) Mod 29
    c = 25 - b - ((n - b + 31 + (n \ 4)) Mod 7)
    DimPaques = DateAdd("d", c, DateSerial(Annee, 3, 31))
End Function
La function DimPaques est élaborée par mes soins d'après l'algorithme de Thomas O'Beirne qu'on peut retrouver sur Wikipédia. (j'en profite d'ailleurs pour mettre à jour la FAQ du présent site avec cette fonction personnalisée)

Pour utiliser cette fonction personnalisée, par exemple :
Soit une date de début en A1, une date de fin en B1, dans une cellule C1 on saisit :
=NbJoursChomes(A1;B1)
On obtient ainsi le nombre de jours chômés (incluant les samedis, dimanches et jours fériés) entre ces deux dates.

Cordialement,

EDITION:
PS: lannou, ta BAL est encore pleine... peut-être pourrais-tu laisser une autre adresse Email dans ton profil pour que les notifications du Forum puissent t'être envoyée correctement ? Pour rappel, l'adresse Email peut rester confidentielle et visible uniquement pour le Webmaster.


Edité par myDearFriend! le 26/08/2008 01:59:02

Didier_mDF
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 

Re: Calcul nombre de jours samedi,dimanche et jours fériés entre deux dates
#14
Aspirant XLPages

Inscription: 01/07/2008

Messages: 32

Système d'exploitation:
PC
Version Excel utilisée:
2003
Posté le : 26-08-2008 18h21

Bonjour tout le monde !!

      Bon ba encore une fois un grand merci à vous tous pour votre aide ! Je vois que je ne n’étais pas le seul à m’être posé la question sur cette problématique. Il existait plusieurs solutions possibles mais dans tous les cas je n’aurai jamais trouvé tout seul…J'espère que cette discussion pourra aidé d'autres personnes qui ce posait la même question que moi.

 

Encore merci,

 

Comme mon problème est résolu, je mets la discussion en « résolu ».

 

++

 

Lannou

 

P.S : je change ma BAL tout de suite !
Hors Ligne
Rapport   Haut 


Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Qui consulte actuellement ce sujet ?   1 Utilisateur(s) anonymes