XL 2016 plusieurs mise en forme conditionnelle

Saintes7010

XLDnaute Nouveau
Bonjour,
Dans mon tableau de planning, j'ai plusieurs mise en forme conditionnelle.
J'ai "C" qui s'affiche en rouge dans le planning. J'aimerais qu'à partir d'une date donnée dès que je rente un "C" dans mon planning il s'affiche en vert et les autre "C" reste en rouge.
Pouvez-vous m'aider ?
merci
 

job75

XLDnaute Barbatruc
Bonjour Saintes7010, JM,

Il faut bien comprendre qu'il est nécessaire d'affecter une date à chaque "c" entré dans la plage C7:AG11.

Voyez le fichier joint et ce code VBA qui crée un tableau nommé Dates :
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, [T]) Is Nothing Then Exit Sub
Dim dat As String
Cancel = True
dat = InputBox("Entrez la date que vous voulez affecter à " & Target(1).Address(0, 0) & " :")
If IsDate(dat) Then Creer_Date Target, CDbl(CDate(dat))
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [T]) Is Nothing And Target.Count = 1 And _
    LCase(Target(1)) = "c" Then Creer_Date Target, CDbl(Date) 'date du jour
End Sub

Sub Creer_Date(c As Range, dat As Double)
Dim a()
If Not IsArray([Dates]) Then
    ReDim a(1 To [T].Rows.Count, 1 To [T].Columns.Count)
    Me.Names.Add "Dates", a 'création du nom défini dans la feuille
End If
a = [Dates]
a(c.Row - [T].Row + 1, c.Column - [T].Column + 1) = dat
Me.Names.Add "Dates", a 'modification du nom défini dans la feuille
End Sub
A+
 

Pièces jointes

  • MFC date(1).xlsm
    32 KB · Affichages: 19

job75

XLDnaute Barbatruc
Re,

Un très gros bémol à la méthode précédente.

Il faut savoir que la formule d'un nom défini ne peut pas comporter plus de 8192 caractères.

Le nom Dates atteindra cette limite dès qu'il y aura quelques dizaines de noms en colonne B.

A+
 

Saintes7010

XLDnaute Nouveau
Merci beaucoup Job 75,
J'ai deux, trois petits question :
Comment je fais pour agrandir mon tableau ? (avec plus d'employés ?)
Y-a-t-il pas moyen de fixer une date automatique à "C" par exemple la date du jour ou l'on introduit à "C" et qui change alors de couleur en fonction de la date du jour ? (je m'explique : j'introduit "C" le 09 juin, il s'imprime en rouge; le 12 juin qu'on j'introduis un "C" il sera vert par exemple)
Comment changer les couleurs ?
En te remerciant
 

job75

XLDnaute Barbatruc
Re,

La solution la plus simple est de stocker les dates dans le tableau en jaune de ce fichier (2) :
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, [T]) Is Nothing Or LCase(Target(1)) <> "c" Then Exit Sub
Dim dat As String
Cancel = True
dat = InputBox("Entrez la date que vous voulez affecter à " & Target(1).Address(0, 0) & " :")
If IsDate(dat) Then Target(1, 34) = CDate(dat)
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [T]) Is Nothing And Target.Count = 1 Then _
    Target(1, 34) = IIf(LCase(Target) = "c", Date, "") 'date du jour
End Sub
Formules de la MFC :
Code:
=DECALER(C7;;33)>=$A$1
=EXP(LN(DECALER(C7;;33)))<$A$1
A+
 

Pièces jointes

  • MFC date(2).xlsm
    32.2 KB · Affichages: 24

job75

XLDnaute Barbatruc
Re,

Avec ce fichier (3) le double-clic affiche dans l'InputBox la date déjà enregistrée :
Code:
dat = InputBox("Entrez la date que vous voulez affecter à " & Target(1).Address(0, 0) & " :", , Target(1, 34))
A+
 

Pièces jointes

  • MFC date(3).xlsm
    32.6 KB · Affichages: 23

Saintes7010

XLDnaute Nouveau
Bonjour à tous,
Autre question
Dans mon calendrier de congés, j'aimerai calculer le nombre de "C" ou "CA" qui se trouvent dans la semaine n° 3 par exemple. tout en sachant que ma semaine ne commence par nécessairement par un lundi et que cela change en fonction des année.
J'ai essayé avec la fonction rechercheV et NB.SI mais je n'y arrive pas.
Qui pourrais m'aider ?
Merci d'avance
 

Pièces jointes

  • test calendrier.xlsx
    39.4 KB · Affichages: 25

job75

XLDnaute Barbatruc
Bonjour Saintes7010,

On ne peut pas dire que vous cherchez beaucoup, formule élémentaire en AL7 du fichier joint :
Code:
=SOMMEPROD((D8:AG1000=AL5)*(D6:AG6=AL6))
A+
 

Pièces jointes

  • test calendrier(1).xlsx
    43.5 KB · Affichages: 19

Discussions similaires

Réponses
12
Affichages
302
Réponses
8
Affichages
178

Statistiques des forums

Discussions
312 673
Messages
2 090 784
Membres
104 664
dernier inscrit
jth