Colorier colonne jours fériés

nemo89

XLDnaute Nouveau
Bonjour,

Mon sujet :

Je dois réaliser un planning de congé pour des salariés, le problème est que je bloque dans la coloration des colonnes des jours fériés

Le projet:

Pour afficher les jours de la semaine j’ai procédé de la manière suivante :
J’ai récupéré les dates situées dans la ligne 4 et j’ai copié cette formule sur toute la longueur de mon tableau (la ligne 5). Puis, pour afficher le jour de la semaine, j’ai sélectionné cette seconde ligne puis menuFormat, Cellules, onglet Nombres puis Dates et la catégorie personnalisée. Et dans la zone Type, j’ai tapé « jjj » pour obtenir l'affichage abrégé des jours de la semaine.

Puis j’ai créé un formulaire avec les boutons de colorations et pr masquer/demasquer les weekend.

Mais pour colorer les colonnes des jours fériés (dont la liste se trouve dans la feuille 2 du classeur) je bloque.. car je n'arrive pas a faire exactement ce que je veux.

Je suis débutante en Vba. :p

Merci à vous de me lire et pour votre aide.

Mouna.
 

Pièces jointes

  • gestion congés.zip
    38.3 KB · Affichages: 215
  • gestion congés.zip
    38.3 KB · Affichages: 234
  • gestion congés.zip
    38.3 KB · Affichages: 243

Hpotter

XLDnaute Junior
Re : Colorier colonne jours fériés

Bonjour,

J'ai fait un fichier de congés dans lequel je colore les jours fériés ainsi que les samedi et dimanche. Comme je suis chez moi, je ne l'ai pas sous le coude.
Je te le transmetrai demain si tu veux bien attendre jusque là.
Merci par avance
Cordialement
 

MJ13

XLDnaute Barbatruc
Re : Colorier colonne jours fériés

Bonjour Nemo, Hpotter

Voici une macro pour colorier les jours fériés (A adapter au contexte):


Code:
Sub Colorie_Fériés()
'MJ
On Error Resume Next
'Stop
Dim JAT As Variant
jours_férié_fixes = Array("01/01", "01/05", "08/05", "14/07", "15/08", "01/11", "11/11", "25/12")
'Trouve les jours fériés fixes
For n = 0 To 7
JAT = jours_férié_fixes(n)
Columns("B:B").Select
    Selection.Find(What:=JAT, After:=ActiveCell, LookIn:=xlValues, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Activate
        Colorie_Jour
Next
'Jour fériés mobiles issu de:
'http://xcell05.free.fr/pages/form/dateheure.htm
'- Lundi de Pâques :
'=FRANC((JOUR(MINUTE(A/38)/2+55)&"/4/"&A)/7;)*7-5
'- Jeudi de l'Ascension :
'=FRANC((JOUR(MINUTE(A/38)/2+55)&"/4/"&A)/7;)*7+33
'- Lundi de Pentecôte :
'=FRANC((JOUR(MINUTE(A/38)/2+55)&"/4/"&A)/7;)*7+44
'Ajoute feuille pour calculer le lundi de pâques
Sheets.Add
'Stop
'Entrez l'année à prende en compte (ici l'année en cours,
'modifier now si une autre année ou faire référence à une cellule de la feuille)
ActiveCell = Year(Now)
ActiveCell.Offset(0, 1) = "=DOLLAR((DAY(MINUTE(RC[-1]/38)/2+55)&""/4/""&RC[-1])/7,)*7-5"
Lundi_Paques = Format(CDate(Range("B1")), "dd/mm")
Jeudi_Ascension = Format(CDate(Range("B1")) + 38, "dd/mm")
Lundi_Pentecote = Format(CDate(Range("B1")) + 49, "dd/mm")
Application.DisplayAlerts = False
'Supprime feuille ajoutée
ActiveSheet.Delete
Application.DisplayAlerts = True
'Stop
'Trouve les jours fériés mobiles
For n = 0 To 2
Jours_Fériés_Mobiles = Array(Lundi_Paques, Jeudi_Ascension, Lundi_Pentecote)
JAT = Jours_Fériés_Mobiles(n)
Columns("B:B").Select
    Selection.Find(What:=JAT, After:=ActiveCell, LookIn:=xlValues, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Activate
        Colorie_Jour
Next
Range("A2").Select
End Sub
Sub Colorie_Jour()
'MJ: Utiliser l'enregistreur de macros en mode relatif pour colorier la zone à prendre en compte et sa couleur
ActiveCell.Range("A1:C2").Select
       With Selection.Interior
        .ColorIndex = 35
        .Pattern = xlSolid
       End With
End Sub
 
Dernière édition:

nemo89

XLDnaute Nouveau
Re : Colorier colonne jours fériés

merci bcp MJ13, Hpotter :)

je vais essayé d'adapter ce code à mes jours fériés (car je dois faire les jours fériés marocains, tunisien et algérien :p)
je ne sais pas si je vais y arriver mais merci bcp .. je vous tiendrais au courant ^^
 

ROGER2327

XLDnaute Barbatruc
Re : Colorier colonne jours fériés

Bonjour à tous
Une proposition de code pour un bouton :
Code:
[COLOR="DarkSlateGray"][B]Private Sub btnMasquerFeries_Click()
Dim d As Integer
Dim F As Worksheet
Dim oColl As New Collection, i As Integer
   On Error Resume Next
   Do While IsDate(Sheet2.Cells(i + 3, 8))
      oColl.Add Sheet2.Cells(i + 3, 8).Value, CStr(Sheet2.Cells(i + 3, 8).Value)
      i = i + 1
   Loop
   On Error GoTo 0
   Set F = Application.ActiveWorkbook.Worksheets(1)
   For d = 7 To 37
      On Error Resume Next
      oColl.Add F.Cells(4, d).Value, CStr(F.Cells(4, d).Value)
      If Err.Number Then
         F.Cells(4, d).EntireColumn.Hidden = True
      Else
         oColl.Remove oColl.Count
      End If
   Next
End Sub[/B][/COLOR]
ROGER2327
#4080


Dimanche 1er Absolu 138 (Nativité d' Alfred Jarry, SPp)
22 Fructidor An CCXVIII
2010-W36-3T14:09:41Z
 

nemo89

XLDnaute Nouveau
Re : Colorier colonne jours fériés

Merci ROGER2327 !! ET ca marche super bien !


mais serait il possible de colorier la colonne de ces jours fériés et non les cacher?
parce que jusqu'ici je n'ai reussi qu'à colorier la cellule contenant la date .. et nn sa colonne :(
 

ROGER2327

XLDnaute Barbatruc
Re : Colorier colonne jours fériés

Re...
J'ai effectivement mal lu la question ! Mais aucun problème pour rectifier. Je n'ai pas le temps à l'instant, mais je ferai cela un peu plus tard.​
ROGER2327
#4082


Dimanche 1er Absolu 138 (Nativité d' Alfred Jarry, SPp)
22 Fructidor An CCXVIII
2010-W36-3T14:35:30Z
 

nemo89

XLDnaute Nouveau
Re : Colorier colonne jours fériés

très inspirée par le code de ROGER2327 et MJ13 je n'ai pas pu m'empêcher d'essayer :p sauf que le résultat n'est pas fameux ^^' (piètre essai :p )
voila le code :

Code:
Private Sub btncolor_Click()

Dim d As Integer
Dim F As Worksheet
Dim oColl As New Collection, i As Integer
   On Error Resume Next
   Do While IsDate(Sheet2.Cells(i + 3, 8))
      oColl.Add Sheet2.Cells(i + 3, 8).Value, CStr(Sheet2.Cells(i + 3, 8).Value)
      i = i + 1
   Loop
   On Error GoTo 0
   Set F = Application.ActiveWorkbook.Worksheets(1)
   For d = 7 To 37
      On Error Resume Next
      oColl.Add F.Cells(4, d).Value, CStr(F.Cells(4, d).Value)
      If Err.Number Then
         F.Cells(4, d).Range("A3:A90").Select
       With Selection.Interior
        .ColorIndex = 15
        .Pattern = xlSolid
       End With
      Else
         oColl.Remove oColl.Count
      End If
   Next

End Sub


Mais il ne me colore pas du tout la zone que j'ai précisé :eek:
 

ROGER2327

XLDnaute Barbatruc
Re : Colorier colonne jours fériés

Re...
aaah non c'est bon ça marche XD
merci beaucoup à vous tous
Au poil !

On peut aussi faire ceci :
Code:
[COLOR="DarkSlateGray"][B]Private Sub btnMasquerFeries_Click()
Dim d As Integer
Dim F As Worksheet
Dim oColl As New Collection, i As Integer
   On Error Resume Next
   Do While IsDate(Sheet2.Cells(i + 3, 8))
      oColl.Add Sheet2.Cells(i + 3, 8).Value, CStr(Sheet2.Cells(i + 3, 8).Value)
      i = i + 1
   Loop
   On Error GoTo 0
   Set F = Application.ActiveWorkbook.Worksheets(1)
   For d = 7 To 37
      On Error Resume Next
      oColl.Add F.Cells(4, d).Value, CStr(F.Cells(4, d).Value)
      If Err.Number Then
         [COLOR="Red"]F.Cells(4, d).Resize(64, 1).Interior.ColorIndex = 15[/COLOR]
      Else
         oColl.Remove oColl.Count
         [COLOR="Red"]F.Cells(4, d).Resize(64, 1).Interior.ColorIndex = 0[/COLOR]
      End If
   Next
End Sub[/B][/COLOR]
ROGER2327
#4084


Dimanche 1er Absolu 138 (Nativité d' Alfred Jarry, SPp)
22 Fructidor An CCXVIII
2010-W36-3T15:56:54Z
 

Jeudi13

XLDnaute Nouveau
Re : Colorier colonne jours fériés

Bonjour,
J'ai peut-être pas tout bien lu, mais il y a une solution très-très simple pour colorier les jours fériés et les week-ends sans utiliser de macro.
En utilisant une mise en forme conditionnelle sur les bonnes cellules et une liste des jours fériés (que j'ai baptisé "JoursFériés" sur la feuille) cela donne le fichier que je te retourne...
Cdlt, Jeudi13

Excuse pour le doc., mais j'avais pas vu qu'il dépassait la limite si on ne le compresse pas... :confused:
La formule dans la mise en forme conditionnelle est
=OU(JOURSEM(L4C)=1;JOURSEM(L4C)=7;ESTNUM(EQUIV(L4C;JoursFériés;0)))
à reproduire sur toutes les colonnes
 

Pièces jointes

  • GestionCongés.zip
    38.8 KB · Affichages: 354
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 487
Messages
2 088 824
Membres
103 971
dernier inscrit
abdazee