problème de selection et de coloriage

dmoluc

XLDnaute Occasionnel
Bonsoir à tous,
J'ai avancé un peu plus mon diagramme de Gant et j'ai réussi à intégrer les jours fériés. J'ai pensé colorier les deux colonnes des jours fériés afin de pouvoir mettre une condition pour sauter ces jours là lors du remplissage du planning, mais voilà impossible de sélectionner les cellules à coloriées, pourtant les conditions ont bien l'air de fonctionner
Code:
Range("DN1") = myDate
Dim colonne As Integer
Dim Colonne2 As Integer
Dim tmpDate As Date
Dim dtDate As Date
Dim Fin As Date
Fin = Me.DTPicker21.Value
While Fin < Range("DM5").Value
Range("F5").Select
 ActiveCell.Offset(0, 1).Select
 colonne = ActiveCell.Column
Colonne2 = (colonne + 1)
dtDate = ActiveCell.Value
Fin = (Fin + 1)
Ligne = 6
ActiveCell.Offset(1, 0).Select
 
Dim H As Integer, M As Integer, D As Integer
 
 'Les valeurs de H, de M, et de D sont bien trouver par le programme  
 
    H = Year(dtDate): M = Month(dtDate): D = Day(dtDate)
    If M = 1 And D = 1 Then
        fJourFerie = "1er Janvier - Jour de l'An"
 
Apparament c'est la que ça coince mais c'est compliquer de savoir car pas facile de faire tourner la routine jusqu'à un jour férié
       Range(ActiveCell, ActiveCell.End(xlDown)).Select
 
'là j'utilise du code généré automatiquement, ce doit être pas très beau
 
       With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 255
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
 
    ElseIf M = 5 And D = 1 Then
        fJourFerie = "1er Mai - Fête du Travail"
         Range(ActiveCell, ActiveCell.End(xlDown)).Select
       With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 255
        .TintAndShade = 0
        .PatternTintAndShade = 0
       End With
 
    ElseIf M = 5 And D = 8 Then
        fJourFerie = "8 Mai - Victoire 1945"
         Range(ActiveCell, ActiveCell.End(xlDown)).Select
       With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 255
        .TintAndShade = 0
        .PatternTintAndShade = 0
        End With
 
    ElseIf M = 7 And D = 14 Then
        fJourFerie = "14 Juillet - Fête nationale"
         Range(ActiveCell, ActiveCell.End(xlDown)).Select
       With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 255
        .TintAndShade = 0
        .PatternTintAndShade = 0
      End With
 
    ElseIf M = 8 And D = 15 Then
        MsgBox "15 Août - Assomption"
         Range(ActiveCell, ActiveCell.End(xlDown)).Select
       With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 255
        .TintAndShade = 0
        .PatternTintAndShade = 0
      End With
 
    ElseIf M = 11 And D = 1 Then
        fJourFerie = "1er Novembre - Toussaint"
         Range(ActiveCell, ActiveCell.End(xlDown)).Select
       With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 255
        .TintAndShade = 0
        .PatternTintAndShade = 0
      End With
 
    ElseIf M = 11 And D = 11 Then
        fJourFerie = "11 Novembre - Armistice 1918"
         Range(ActiveCell, ActiveCell.End(xlDown)).Select
       With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 255
        .TintAndShade = 0
        .PatternTintAndShade = 0
      End With
 
    ElseIf M = 12 And D = 25 Then
        fJourFerie = "25 Décembre - Noël"
        Range(ActiveCell, ActiveCell.End(xlDown)).Select
       With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 255
        .TintAndShade = 0
        .PatternTintAndShade = 0
      End With
 
    Else
 
        tmpDate = fLundiPaques(H)
 
        If dtDate = tmpDate Then
            fJourFerie = "Lundi de Pâques"
            Range(ActiveCell, ActiveCell.End(xlDown)).Select
       With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 255
        .TintAndShade = 0
        .PatternTintAndShade = 0
      End With
 
        ElseIf dtDate = tmpDate + 38 Then
            fJourFerie = "Ascension"
             Range(ActiveCell, ActiveCell.End(xlDown)).Select
       With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 255
        .TintAndShade = 0
        .PatternTintAndShade = 0
      End With
 
        ElseIf dtDate = tmpDate + 49 Then
            fJourFerie = "Lundi de Pentecôte"
             Range(ActiveCell, ActiveCell.End(xlDown)).Select
       With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 255
        .TintAndShade = 0
        .PatternTintAndShade = 0
     End With
 
        End If
    End If
    Wend
  Exit Sub
Comme le classeur devient de plus en plus compliquer je le joint épurer du superflu et il va manquer des valeur sur le tableau mais comme le fichier original dépasse les 3 MO il faut bien supprimer pour arriver à 293 KO
Merci pour votre aide
cordialement
Didier
 

Pièces jointes

  • essais.xlsm
    222.3 KB · Affichages: 48
  • essais.xlsm
    222.3 KB · Affichages: 58
  • essais.xlsm
    222.3 KB · Affichages: 53

dmoluc

XLDnaute Occasionnel
Re : problème de selection et de coloriage

J' ai réussi à réparer ma boucle mais je ne suis pas encore au bout de mes peines car maintenant c'est la selection de la colonne qui pose problème
#Range(ActiveCell, ActiveCell.End(xlDown)).Select#
ce code me sélectionne bien les cellules non vide mais s'arrête dés que la cellule est vide
Si quelqu'un à une idée ? En fait je voudrais sélectionner de la ligne 5 à la ligne 131 en sachant que le N° de colonne est dans la variable colonne
Merci pour votre aide
 

Bebere

XLDnaute Barbatruc
Re : problème de selection et de coloriage

bonjour dmoluc
avec ce code
tu pouvais aussi faire une liste de jours fériés dans un feuille et comparer(ex:classeur datesetheurescmc.xls en téléchargement)
en général pas besoin de select dans un code
oublie les cellules fusionnées(difficile à gérer)
Code:
Function TYPEJOUR(D As Date)
'L. Longre
'Cette fonction renvoie 0 si le jour passé en paramètre est un jour de semaine,
'1 s'il s'agit d'un samedi ou d'un dimanche et 2 s'il s'agit d'un jour férié.
'Valide jusqu'en 2099 et pour les jours fériés français

    Dim A As Integer, T As Integer
    Dim LP As Date, LD As Long
    Dim Toto As Long

    A = Year(D)
    If A > 2099 Then
        TYPEJOUR = CVErr(xlErrValue)
        Exit Function
    End If
    LD = Int(D)
    If LD <= 2 Then
        If LD = 1 Then TYPEJOUR = 2
        Exit Function
    End If
    T = (((255 - 11 * (A Mod 19)) - 21) Mod 30) + 21
    LP = DateSerial(A, 3, 2) + T + (T > 48) _
       + 6 - ((A + A \ 4 + T + (T > 48) + 1) Mod 7)
    Select Case D
        ' Jours fériés mobiles
    Case Is = LP, Is = LP + 38, Is = LP + 49
        TYPEJOUR = 2
        ' Jours fériés fixes
    Case Is = DateSerial(A, 1, 1), Is = DateSerial(A, 5, 1), _
         Is = DateSerial(A, 5, 8), Is = DateSerial(A, 7, 14), _
         Is = DateSerial(A, 8, 15), Is = DateSerial(A, 11, 1), _
         Is = DateSerial(A, 11, 11), Is = DateSerial(A, 12, 25)
        TYPEJOUR = 2
    Case Else
        ' Samedi ou dimanche
        If Weekday(D, vbMonday) >= 6 Then TYPEJOUR = 1
    End Select

End Function


Sub X()'la feuille doit être active
Dim cel As Range, X As Date, DerL As Long, Col As Byte
DerL = Cells(65536, "G").End(xlUp).Row

For Each cel In Range("G5", Cells(5, Cells(5, 256).End(xlToLeft).Column))
X = cel: Col = cel.Column
If TYPEJOUR(X) = 1 Or TYPEJOUR(X) = 2 Then
Range(Cells(5, Col), Cells(DerL, Col)).Interior.ColorIndex = 22
End If
Next cel

End Sub
 

dmoluc

XLDnaute Occasionnel
Re : problème de selection et de coloriage

merci pour ton aide mais j'utilise déjà une fonction similaire sans doute moins pratique que celle-ci alors je la garde sous le coude si jamais je n'arrive pas à exploitée la mienne
je suis quand même arrivé à colorier les colones des jours fériés, alors je dois être pré du but
cordialement
 

Statistiques des forums

Discussions
312 209
Messages
2 086 266
Membres
103 167
dernier inscrit
miriame