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 :

procédure pour jours fériés


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 50
    Points : 46
    Points
    46
    Par défaut procédure pour jours fériés
    Bonjour,

    Voilà, j'ai un classeur créé avec Excel 2007 dont la première ligne comporte de B1 à XFD1, des dates allant du premier janvier 2010 au 8 novembre 2054.

    Je souhaiterais que toutes les colonnes dont l'entête comporte la date d'un jour férié soient en jaune sur fond rouge.

    J'avais essayé les mises en formes conditionnelles, mais elles ne reconnaîssent apparemment que le samedi et dimanche lorsque j'utilise la fonction joursem.

    Serait t-il possible, par le biais d'une macro, de pouvoir le faire?

    Je vous remercie pour votre éventuel coup de main.

  2. #2
    Membre expérimenté
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    673
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 673
    Points : 1 580
    Points
    1 580
    Par défaut
    Bonjour,
    Excel ne peut pas connaitre toutes les dates de jours fériés, il faut donc lui indiquer.
    Pour ça, le plus simple est d'abord de définir quelque part dans le classeur une zone dans laquelle seront écrites toutes ces dates (en colonne). On nommera cette plage "JoursFériés".
    Ensuite, dans la mise en forme conditionnelle, il faut compléter la formule avec joursem comme suit suivante (exemple pour la cellule A1) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    =OU(JOURSEM(A1;2)>5;NON(ESTNA(RECHERCHEV(A1;JoursFériés;1;FAUX))))

  3. #3
    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,

    voici un lien avec différentes function pour les jours férié, ouvré et tout et tout

    Procédures Jours Fériés

    une fois ta fonction ecrite, tu peux t'en servir dans les formats conditionnels

    Alleï Bonjour chez vous!

  4. #4
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    une fois ta fonction ecrite, tu peux t'en servir dans les formats conditionnels
    Salut Mayekeul,

    tu auraiss un exemple du genre, si la date dans cette cellule est un JF, alors mettre en rouge.

    Merci d'avance.
    (\ _ /) Cordialement G@dz
    (='.'=)

    (")-(") Vous avez des neurones. Sollicitez-les. . Si vous êtes aidé, pensez à Voter.

  5. #5
    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,

    on va dire que l'on a un tableau qui commence en A1

    on selectionne les entetes.
    on demande un format conditionnel avec pour formule
    IsJourFerie est la fonction perso
    On valide et il va appliquer pour toute les cellules selectionnée et respectivement
    A1 pour A1
    A2 pour A2

    etc..

    voila, en espérant m'avoir fait compris!
    Alleï Bonjour chez vous!

  6. #6
    Membre chevronné Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Points : 1 900
    Points
    1 900
    Par défaut
    Re, bonjour à tous

    une petite recherche : (je triche je savais ou trouver)
    Une contribution géniale de Tirex28

    apres 2 ou 3 modification : à placer dans un module :
    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
    Function estferie(cellule As Range) As Boolean
        'Vrai si la valeur courante correspond a un jour férié
        Application.Volatile
        Dim Y As Long, i As Long, SylvesterDay As Date, SpecD, b As Long
        Y = Year(cellule.Value)
        b = Abs((Y Mod 4 = 0 And Y Mod 100 <> 0) Or (Y Mod 400 = 0))
        SylvesterDay = DateSerial(Y, 1, 1) - 1
        i = EASTER(Y) - SylvesterDay - b
        'Pour la France (1 Mai = 121em jour d'une année NON-bissextile)
        SpecD = Array(1 - b, 121, 128, 195, 227, 305, 315, 359, i + 1, i + 39, i + 50)
        Y = cellule.Value - SylvesterDay - b
        For i = 0 To UBound(SpecD)
            estferie = Y = SpecD(i)
            If estferie Then Exit For
        Next
    End Function
    Function EASTER(Yr As Long) As Long
        '*Dans la fonction originale, les données étaient de type Integer*
        Dim Century As Long, Sunday As Long, Epact As Long, N As Long
        Dim Golden As Long, LeapDayCorrection As Long, SynchWithMoon As Long
        Golden = (Yr Mod 19) + 1
        Century = Yr \ 100 + 1
        LeapDayCorrection = 3 * Century \ 4 - 12
        SynchWithMoon = (8 * Century + 5) \ 25 - 5
        Sunday = 5 * Yr \ 4 - LeapDayCorrection - 10
        Epact = (11 * Golden + 20 + SynchWithMoon - LeapDayCorrection) Mod 30
        If Epact < 0 Then Epact = Epact + 30
        If (Epact = 25 And Golden > 11) Or Epact = 24 Then Epact = Epact + 1
        N = 44 - Epact
        If N < 21 Then N = N + 30
        N = N + 7 - ((Sunday + N) Mod 7)
        EASTER = DateSerial(Yr, 3, N)
    End Function
    une nouvelle fonction est dispo : estferie(cellule) : retourne VRAI ou FAUX

    Dans ta MFC on a maintenant la formule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =ou(JOURSEM(B$1;2)>5;estferie(B$1))
    Wilfried

  7. #7
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    voila, en espérant m'avoir fait compris!
    __________________
    Alleï, oui, je crois bien .

    Donkey well.
    (\ _ /) Cordialement G@dz
    (='.'=)

    (")-(") Vous avez des neurones. Sollicitez-les. . Si vous êtes aidé, pensez à Voter.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 50
    Points : 46
    Points
    46
    Par défaut
    Bonsoir à tous,

    Eh bien je vous remercie tous pour cette aide précieuse que vous m'avez apporté.

    Le problème des jours fériés est désormais réglé, grâce à cette superbe fonction EstFerie.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Choix du calendrier pour jours fériés
    Par tiwicom dans le forum Outlook
    Réponses: 0
    Dernier message: 04/02/2014, 08h40
  2. format conditionnel pour colonne jours fériés
    Par abdel792 dans le forum Excel
    Réponses: 8
    Dernier message: 29/12/2010, 21h01
  3. appel de fonction créée pour les jours fériés?
    Par novice06 dans le forum VBA Access
    Réponses: 1
    Dernier message: 27/03/2009, 10h11
  4. jours férié pour commercial payé a la commission
    Par jade84 dans le forum Congés
    Réponses: 4
    Dernier message: 27/05/2008, 12h04
  5. problème pour enlevé les jours fériés
    Par titi67 dans le forum Général VBA
    Réponses: 2
    Dernier message: 12/05/2007, 11h44

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