Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

neim

XLDnaute Junior
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
 

Pièces jointes

  • test MFC.xlsm
    48.8 KB · Affichages: 8

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 Junior
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 Junior
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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…