Microsoft 365 Appliquer par vba une mise en forme conditionnelle d'après une liste de cellules mises en forme

SOP

XLDnaute Nouveau
Bonjour,

Je souhaite créer une mise en forme conditionnelle via vba (dans l'onglet "recap") par rapport aux éléments (et leur mise en forme) de la liste présente dans "codelists"(liste et mise en forme pouvant évoluer).

J'ai essayé de repartir du code proposé ici https://excel-downloads.com/threads...rme-conditionnelle-dapres-une-liste.20026979/ mais je n'y arrive pas. Pouvez-vous m'aider à l'adapter pour mon tableau ?

j'aimerai également y ajouter (si possible) les MFC suivantes :
- police blanche si =0
- dans la partie sous les dates mettre en trait vertical à gauche si la date est un lundi

Merci d'avance
 

Pièces jointes

  • SOP_MFC.xlsx
    27.6 KB · Affichages: 7
Solution
Avec les deux autres :
VB:
Sub MettreMFC()
   Dim FCs As FormatConditions, Cel As Range
   Set FCs = Feuil5.[B16:X94].FormatConditions
   Feuil5.[B16:X94].Borders(xlLeft).LineStyle = xlLineStyleNone
   FCs.Delete
   Application.Goto Feuil5.[B16]
   With FCs.Add(Type:=xlExpression, Formula1:="=JOURSEM(B$17;2)=1")
      .Borders(xlLeft).LineStyle = xlContinuous
      .StopIfTrue = False
      End With
   Set FCs = Feuil5.[B18:X94].FormatConditions
   For Each Cel In Feuil1.[B2:B39]
      With FCs.Add(Type:=xlCellValue, Operator:=xlEqual, _
         Formula1:="=""" & Cel.Value & """")
         .Interior.Color = Cel.Interior.Color
         .Font.Color = Cel.Font.Color
         End With
      Next Cel
   With FCs.Add(Type:=xlCellValue...

Dranreb

XLDnaute Barbatruc
Bonjour.
Ceci me semble pas mal :
VB:
Sub MettreMFC()
   Dim FCs As FormatConditions, Cel As Range
   Set FCs = Feuil5.[B18:X94].FormatConditions
   FCs.Delete
   For Each Cel In Feuil1.[B2:B39]
      With FCs.Add(Type:=xlCellValue, Operator:=xlEqual, _
         Formula1:="=""" & Cel.Value & """")
         .Interior.Color = Cel.Interior.Color
         .Font.Color = Cel.Font.Color
         End With
      Next Cel
   End Sub
 

Dranreb

XLDnaute Barbatruc
Avec les deux autres :
VB:
Sub MettreMFC()
   Dim FCs As FormatConditions, Cel As Range
   Set FCs = Feuil5.[B16:X94].FormatConditions
   Feuil5.[B16:X94].Borders(xlLeft).LineStyle = xlLineStyleNone
   FCs.Delete
   Application.Goto Feuil5.[B16]
   With FCs.Add(Type:=xlExpression, Formula1:="=JOURSEM(B$17;2)=1")
      .Borders(xlLeft).LineStyle = xlContinuous
      .StopIfTrue = False
      End With
   Set FCs = Feuil5.[B18:X94].FormatConditions
   For Each Cel In Feuil1.[B2:B39]
      With FCs.Add(Type:=xlCellValue, Operator:=xlEqual, _
         Formula1:="=""" & Cel.Value & """")
         .Interior.Color = Cel.Interior.Color
         .Font.Color = Cel.Font.Color
         End With
      Next Cel
   With FCs.Add(Type:=xlCellValue, Operator:=xlEqual, _
      Formula1:="=0")
      .NumberFormat = ";;;"
      End With
   End Sub
 
Dernière édition:

SOP

XLDnaute Nouveau
petite question complémentaire :

Puis-je faire en sorte que la MFC ne se fasse pas pour les mercredis et jeudis (au pif, c'est juste pour l'écriture ;) )?

Je pense que c'est pas si simple et je sais pas trop où les placer mais en gros ce serait :

IF OU(JOURSEM(B$17;2)=3;JOURSEM(B$17;2)=3)=TRUE THEN Exit Sub
ELSE ...
END IF
 

SOP

XLDnaute Nouveau
Laquelle ? Toutes ? Non ce n'est pas possible à moins de mettre partout des MFC xlExpression au lieu de xlValue avec une formula1 = Formula1:="=ET(B16=""" & Cel.Value & """;OU(JOURSEM(B16;2)=3 etc.
Pas de soucis, c'était juste une idée

With FCs.Add(Type:=xlExpression, Formula1:="=JOURSEM(B$17;2)=1") .Borders(xlLeft).LineStyle = xlContinuous .StopIfTrue = False End With
pour cette condition, est-il possible d'épaissir la taille du trait ?
 

SOP

XLDnaute Nouveau
Oui cherchez ça doit être .Borders(xlLeft).Weight = xlThick ou xlMeduim
oui j'avais essayé .Borders(xlLeft).Weight = xlMedium
mais j'ai
1714745557614.png
 

Discussions similaires

Réponses
8
Affichages
244
Réponses
12
Affichages
319