Excel VBA: Formatage conditionnel – Couleurs intérieures

J'essaie d'get un formatting conditionnel fonctionnant dans VBA pour Excel 2013. L'exécution du code devrait faire en sorte que la cellule (couleur intérieure) dans Col N soit verte si la validation de la list est "Complète" et toute autre fois. La cellule (couleur intérieure) dans Col O devrait devenir Rouge si la validation de la list dans Col N est "Held" et blanche n'importe quand.

Actuellement, les résultats qui apparaissent sont: 1. Col N et Col O sont blancs si rien n'est sélectionné dans les lists de validations. 2. Col N devient vert lorsque l'on choisit quelque chose parmi les validations de la list. 3. Col O devient rouge lorsque "Held" est sélectionné dans Col N et devient blanc encore si quelque chose d'autre dans Col N est sélectionné.
4. Si quelque chose est sélectionné dans Col O, la cellule devient rouge.

Mon code actuel est (avec les sections que j'ai commentées):

'Add conditional format for column N. If Status is "Complete", color Status cell (col N) green (43). With Worksheets(SheetNum & " - Work").Range("N2:N2000").Select 'Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _ Formula1:="=OR(($N2=""Not Started""),($N2=""In Queue""), ($N2=""In Work""), ($N2=""Held""), ($N2="" "")" 'Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlNotEqual, _ Formula1:="=($N2=""Complete"")" 'With Selection.FormatConditions(1) '.Interior.ColorIndex = 2 '.StopIfTrue = True 'End With 'End With Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlNotEqual, _ Formula1:="=($N2=""Complete"")" With Selection.FormatConditions(1) .Interior.ColorIndex = 43 '.StopIfTrue = True End With End With 'Add conditional format for column O. If Status is "Held", color Held For cell (col O) 'red (3). 'With Worksheets(SheetNum & " - Work").Range("O2:O2000").Select 'Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlNotEqual, _ Formula1:="=OR(($N2=""Not Started""),($N2=""In Queue""), ($N2=""In Work""), ($N2=""Complete""))" 'Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _ Formula1:="=($N2=""Held"")" 'With Selection.FormatConditions(1) '.Interior.ColorIndex = 2 '.StopIfTrue = True 'End With With Worksheets(SheetNum & " - Work").Range("O2:O2000").Select Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlNotEqual, _ Formula1:="=($N2=""Held"")" With Selection.FormatConditions(1) .Interior.ColorIndex = 3 '.StopIfTrue = True End With End With 

De plus, quelqu'un peut-il expliquer quand utiliser l'opérateur: = xlNotEqual vs Operator: = xlEqual? Ceux-ci semblent fonctionner en sens inverse de ce que j'aurais prévu.

Merci pour toute aide.

Malheureusement, ces colonnes doivent être colorées en vol, c'est pourquoi j'essaie d'utiliser le formatting conditionnel. Il y a environ 10 formats conditionnels que j'essaie d'appliquer sur ces feuilles qui seront créées tout au long de la vie du programme.

Sur le côté positif, après avoir essayé les choses toute la journée, j'ai remarqué que j'avais manqué un ")" après ("" Held ""). Il semble que le file ne fonctionne pas correctement.

Est-ce que la cellule $ N2 contient les mots "Complete" et "Held"?

Si oui, cela fonctionnera peut-être

 Sub tester() For I = 1 To 100 ' or lastused row If InStr(1, UCase(Sheet6.Range("N" & I).Value), "COMPLETE") > 0 Then Sheet6.Range("N" & I).Interior.ColorIndex = 43 Else If InStr(1, UCase(Sheet6.Range("N" & I).Value), "HELD") > 0 Then Sheet6.Range("N" & I).Interior.ColorIndex = 3 Else Sheet6.Range("N" & I).Interior.ColorIndex = 2 End If End If Next I End Sub 

J'ai finalement compris le code correct pour get ce que je voulais faire.

  'Add conditional format for column N. If Status is "Complete", color Status cell (col N) green (43). With Worksheets(SheetNum & " - Work").Range("N2:N2000").Select Selection.FormatConditions.Add Type:=xlExpression, _ Formula1:="=($N2=""Complete"")" With Selection.FormatConditions(1) .Interior.ColorIndex = 43 .StopIfTrue = True End With End With 

Quelqu'un peut-il m'expliquer pourquoi cela fonctionne au lieu d'utiliser la même méthode que Col O dans mon code dans la première publication? J'essaie de comprendre le code VBA au lieu de simplement le faire set.

Merci pour toute aide.