Format conditionnel et événements
Bonjour,
Voilà, je vais vous illustrer mon problème, en espérant être assez claire.
J'ai un classeur dans lequel la première feuille comporte de la cellule B1 jusqu'à la cellule FLP1, des date allant du 01/01/2010 jusqu'au 31/12/2021.
Dans la colonne A, de A2 jusqu'à A27, j'ai une suite d'horaires allant de 7:30 jusqu'à 20:00.
Il y a une durée d'une demi-heure entre chacune des horaires.
J'ai une macro qui applique une mise en forme conditionnelle au colonnes dont la date est un samedi ou dimanche, cette macro s'exécute à l'ouverture du classeur, dans une procédure Auto_Open.
Pour pouvoir suivre la cellule active, j'utilise une procédure événementielle SelectionChange, qui met automatiquement la cellule active en noir sur fond blanc.
Le problème est que cette procédure événementielle ne s'exécute pas lorsque je suis sur une colonne de samedi ou dimanche, j'ai comme l'impression que la MFC l'emporte sur la procédure événementielle et applique son format.
Ma question est la suivante :
Y aurait t-il un moyen de pouvoir utiliser la procédure événementielle même si je me déplace sur une colonne de samedi ou dimanche en restituant la couleur précédente lorsque je quitterai la cellule avec les flèches ou en cliquant sur une autre cellule?
Je vous soumet ci-dessous, les codes des deux procédures, l'une pour la création de la MFC et l'autre pour l'événement SelectionChange.
Je vous remercie d'avance si vous pouvez m'aider.
Code:
1 2 3 4 5 6 7 8 9 10
| Sub FormatConditionnel()
Range(Cells(1, 2), Cells(27, 4384)).Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=JOURSEM(B$1;2)>5"
With Selection.FormatConditions(1)
.Interior.ColorIndex = 3
.Font.ColorIndex = 6
End With
Range("B2").Select
End Sub |
Et maintenant le code de la macro événementielle :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| Public old_Cel As Range, old_color As Integer, old_color2 As Integer
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("B2:FLP27")) Is Nothing Then
If Target.Count = 1 Then
If Not old_Cel = "" Then
Range(old_Cel).Interior.ColorIndex = old_color
Range(old_Cel).Font.ColorIndex = old_color2
End If
old_Cel = Target.Address
old_color = Target.Interior.ColorIndex
old_color2 = Target.Font.ColorIndex
Target.Font.ColorIndex = 1
Target.Interior.ColorIndex = 2
End If
End If
End Sub |
Amicalement.