IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Oublier les dimanches et jour fériés


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Inscrit en
    Juin 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Oublier les dimanches et jour fériés
    Bonjour,

    alors mon probleme aujourd'hui est le suivant :

    j'ai un tableau de congé avec une liste d'agents, divers agents prennent des congés pendant une certaine période et ce qu'il se passe c'est que l'on a pris le soin de rajouter une colonne "CONGES", et dans cette colonne doit figurer le nbs de jours que l'agent a pris pendant ses congés sachant que l'on ne doit pas prendre en compte les dimanches et jours fériés. Bien évidemment cela doit se faire automatiquement a chaque changement de mois car les dates elles sont prédéfinies.

    SI besoin est, je vous fournirais éventuellement mon tableau via un lien.

    Je vous remerci beaucoup !!!

  2. #2
    Membre expérimenté Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Points : 1 665
    Points
    1 665
    Par défaut
    bonjour,
    un lien ne serait pas de refus

    maintenant, deux méthodes

    1. avoir la liste des jours fériés
    2. apposer un tag sur les jours fériés
    Alleï Bonjour chez vous!

  3. #3
    Candidat au Club
    Inscrit en
    Juin 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Je pense que pour avoir les idées claires, la méthode 1 est plus convenable, donc je vous poste ici le lien de mon fichier :
    http://cjoint.com/?gupNekZeOQ
    !!!

    Merci merci

  4. #4
    Membre expérimenté Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Points : 1 665
    Points
    1 665
    Par défaut
    maintenant, je peux tjs te donner plusieurs fonctions pour calculer les jours fériés
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    'calcule le jour de Pâques et les fêtes mobiles
    '(calendrier depuis 1900 uniquement)
     
    Public Function FeteFerie(ByVal Annee As Integer, TypeFerie As Integer)
     
    Dim Paques As Date
    Dim LunPaq As Date
    Dim Ascension As Date
    Dim LunPent As Date
     
      Paques = fPaques(Annee)   'Cherche le jour de Pâques
      LunPaq = Paques + 1     'En déduit
      Ascension = Paques + 39 'les autres
      LunPent = Paques + 50   'jours fériés
     
    Select Case TypeFerie
        Case 1
            FeteFerie = DateSerial(Annee, 1, 1)
        Case 2
            FeteFerie = DateSerial(Annee, 5, 1)
        Case 3
            FeteFerie = DateSerial(Annee, 7, 21)
        Case 4
            FeteFerie = DateSerial(Annee, 8, 15)
        Case 5
            FeteFerie = DateSerial(Annee, 11, 1)
        Case 6
            FeteFerie = DateSerial(Annee, 11, 11)
        Case 7
            FeteFerie = DateSerial(Annee, 12, 25)
        Case 8
            FeteFerie = Paques
        Case 9
            FeteFerie = Ascension
        Case 10
            FeteFerie = LunPent
        Case Else
            FeteFerie = DateSerial(Annee, 1, 1)
    End Select
    End Function
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    Private Function fPaques(An) As Date
    'Calcule date Paques
     
    Dim a As Integer, b As Integer,C As Integer,d As Integer
    Dim e As Integer, f As Integer,g As Integer,h As Integer
    Dim I As Integer,J As Integer,k As Integer,l As Integer
    Dim M As Integer,n As Integer,p As Integer
     
    a = An Mod 19
    b = An \ 100
    C = An Mod 100
    d = b \ 4
    e = b Mod 4
    f = (b + 8) \ 25
    g = (b - f + 1) \ 3
    h = (19 * a + b - d - g + 15) Mod 30
    I = C \ 4
    k = C Mod 4
    l = (32 + 2 * e + 2 * I - h - k) Mod 7
    M = (a + 11 * h + 22 * l) \ 451
    n = (h + l - 7 * M + 114) \ 31
    p = (h + l - 7 * M + 114) Mod 31
     
    fPaques = DateSerial(An, n, p + 1)
     
    End Function
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    'renvoie true ou False selon si Date parametre est férié
     
    Public Function IsFerie(ByVal DateFerie As Date) As Boolean
    Dim I As Integer
    For I = 1 To 10
        If DateSerial(Year(DateFerie), Month(DateFerie), Day(DateFerie)) = FeteFerie(Year(DateFerie), I) Then
            IsFerie = True
        End If
        If IsFerie = True Then Exit Function
    Next I
    End Function
    Alleï Bonjour chez vous!

  5. #5
    Candidat au Club
    Inscrit en
    Juin 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    La 2e page de code me semble assez bien approprié mais en fait comment l'intégrer à mon code ?

  6. #6
    Membre expérimenté Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Points : 1 665
    Points
    1 665
    Par défaut
    ben pour chaque date de congé, tu teste si c'est férié

    et tu additionne suivant le cas!
    Alleï Bonjour chez vous!

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    ça tombe faux le résultat des calcul de paques pour 2009...

  8. #8
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    Bonjour LarisseXD,

    Si tu le souhaites j'ai déjà fait un fichier de Congés qui gére les jours et fériés et week-end, et je peux te le donner.
    J’entends et j’oublie,
    Je vois et je me souviens,
    Je fais et je comprends.
    Confucius

Discussions similaires

  1. [XL-2007] Isoler certaines dates, dimanche et jours fériés
    Par jayorange dans le forum Excel
    Réponses: 17
    Dernier message: 31/01/2015, 19h36
  2. [XL-2010] Formule dimanche et jours fériés (Sommeprod)
    Par bbcancer dans le forum Excel
    Réponses: 1
    Dernier message: 30/06/2014, 18h36
  3. Réponses: 1
    Dernier message: 08/01/2013, 11h44
  4. Prendre en compte les WE et jours fériés
    Par philou029 dans le forum PL/SQL
    Réponses: 1
    Dernier message: 17/03/2009, 10h03
  5. DiffDate sans les dimanches et jours fériés.
    Par ROGER2 dans le forum Access
    Réponses: 4
    Dernier message: 24/10/2006, 15h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo