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.
Et maintenant le code de la macro événementielle :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Amicalement.
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 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
Partager