XL 2016 Bloquer mise en forme conditionnelle (apres couper et tri)

neim

XLDnaute Nouveau
Bonjour,

Dans ce fichier, j'ai une mise en forme conditionnelle qui fait changer de couleur les lignes à chaque changement de refefrence (colonne B).

Mais lorsque j'execute la macro (qui coupe des lignes et tri) la mise en forme conditionnelle se modifie aussi et ne correspond plus à rien.

Y a t il une facon de "bloquer" la MFC ?

Merci
 

Fichiers joints

Ikito

XLDnaute Occasionnel
Bonjour,

A la fin de ta macro, supprime l'ancienne MEF et remets-en une nouvelle :

VB:
Sub MeFC()

With Sheets("Besoins").Range("A2:W15")            'Sélection des plages où doit s'appliquer la MeF
    'Supprime les MFC existantes
    .FormatConditions.Delete
    'Ajoute une condition (Vrai lorsque la cellule est non vide)
    .FormatConditions.Add Type:=xlExpression, Formula1:="=EST.IMPAIR($A2)"
    .FormatConditions.Add Type:=xlExpression, Formula1:="=EST.PAIR($A2)"

    With .FormatConditions(1)
        'Définit la couleur de fond de la cellule lorsque la condition sera vraie.
        .Interior.Color = 16771071       '.Interior.ColorIndex = 15 'Gris
    End With
    With .FormatConditions(2)
        .Interior.Color = 15555555
    End With
End With

End Sub
Tu remarqueras que les couleurs que j'ai choisies sont magnifiques...
 

neim

XLDnaute Nouveau
Bonjour

Merci, c est vrai que les couleurs sont...éblouissantes :)

Par contre, j ai besoin de garder ma mise en forme conditionnelle sur la colonne "R" et que la colonne "P" soit en jaune. c'est possible avec ta macro ?
 

Ikito

XLDnaute Occasionnel
Re,

Tout est possible, la suite :

VB:
Sub MeFC()

With Sheets("Besoins").Range("A2:W300")            'Sélection des plages où doit s'appliquer la MeF
    'Supprime les MFC existantes
    .FormatConditions.Delete
    'Ajoute une condition (Vrai lorsque la cellule est non vide)
    .FormatConditions.Add Type:=xlExpression, Formula1:="=EST.IMPAIR($A2)"
    .FormatConditions.Add Type:=xlExpression, Formula1:="=EST.PAIR($A2)"

    With .FormatConditions(1)
        'Définit la couleur de fond de la cellule lorsque la condition sera vraie.
        .Interior.ColorIndex = 50
    End With
    With .FormatConditions(2)
        .Interior.ColorIndex = 44
    End With
End With

Sheets("Besoins").Range("P:P").FormatConditions.Delete
Sheets("Besoins").Range("P:P").Interior.Color = 65535

With Sheets("Besoins").Range("R2:R200")            'Sélection des plages où doit s'appliquer la MeF
    'Supprime les MFC existantes
    .FormatConditions.Delete
    'Ajoute une condition (Vrai lorsque la cellule est non vide)
    .FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, Formula1:="Retard livraison"
    .FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, Formula1:="DATE 15 jours"
    .FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, Formula1:="Retard composant"
    .FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, Formula1:="Retard composant et livraison"
    'DATE 15 jours

    With .FormatConditions(1)
        'Définit la couleur de fond de la cellule lorsque la condition sera vraie.
        .Font.ColorIndex = 3
        .Font.FontStyle = "Bold"
    End With
    With .FormatConditions(2)
        'Définit la couleur de fond de la cellule lorsque la condition sera vraie.
        .Interior.ColorIndex = 30
        .Font.FontStyle = "Bold"
    End With
    With .FormatConditions(3)
        'Définit la couleur de fond de la cellule lorsque la condition sera vraie.
        .Font.ColorIndex = 3
        .Font.FontStyle = "Bold"
    End With
    With .FormatConditions(4)
        'Définit la couleur de fond de la cellule lorsque la condition sera vraie.
        .Interior.ColorIndex = 3
        .Font.FontStyle = "Bold"
    End With
End With

End Sub
 

neim

XLDnaute Nouveau
Merci,

effectivement on peut tout faire apparemment :)

j ai essaye cette version qui selmble fonctionner aussi (en gardant la mise en forme conditionnelle pour les 2 colonnes "R" & "P").

Par contre je ne comprend pas, je change le N° de couleur mais ca ne me donne pas du tout celle que j attend.

36 pour jaune pale
37 pour bleu pale

et toutes les lignes se mettent en rouge tirant vers le noir :

With Sheets("Besoins").Range("A2:O1000,Q2:Q1000,S2:W1000") 'Sélection des plages où doit s'appliquer la MeF
'Supprime les MFC existantes
.FormatConditions.Delete
'Ajoute une condition (Vrai lorsque la cellule est non vide)
.FormatConditions.Add Type:=xlExpression, Formula1:="=EST.IMPAIR($A2)"
.FormatConditions.Add Type:=xlExpression, Formula1:="=EST.PAIR($A2)"

With .FormatConditions(1)
'Définit la couleur de fond de la cellule lorsque la condition sera vraie.
.Interior.Color = 36 '.Interior.ColorIndex = 15 'Gris
End With
With .FormatConditions(2)
.Interior.Color = 37
 

Discussions similaires


Haut Bas