Mise en forme conditionnelle VBA

bonjour à tous,

je voudrais en fait appliquer une mise en forme conditionnelle pour un plage précis.

l'idée est de mettre en forme (remplissage + couleur de police) un plage de cellule sous la condition suivante: si le PAR5 ="NON" alors on applique la mise en forme si non on reste sur la mème mise en forme sachant que le PAR5 peut être modifié (liste déroulante) .

le classeur ci-dessous explique mieux l'idée.

19mise-en-forme.xlsx (10.25 Ko)

Bonjour,

Pas certain d'avoir compris ... et pas certain qu'une MFC n'aurait pas suffi !?

Coller les lignes suivantes dans la fenêtre de code de la Feuil1:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Column < 3 And Target.Column > 7 Then Exit Sub
If (Target.Row - 7) Mod 17 = 0 Then
    If Target = "NON" Then
        Cells(Target.Row - 4, Target.Column).Resize(17, 1).Interior.Color = RGB(238, 236, 225)
        Cells(Target.Row - 4, Target.Column).Resize(17, 1).Font.Color = RGB(128, 128, 128)
    Else
        Cells(Target.Row - 4, Target.Column).Resize(17, 1).Interior.ColorIndex = xlNone
        Cells(Target.Row - 4, Target.Column).Resize(17, 1).Font.ColorIndex = xlAutomatic
    End If
End If
End Sub

... en espérant que chaque "bloc" fera bien 17 lignes à chaque fois !

Bonjour,

Comme U. Milité, que je salue, de ce que je comprends.

A adapter.

Cdlt.

18mise-en-forme.xlsm (16.95 Ko)
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngValidation As Range, rng As Range
    Set rngValidation = Me.Cells.SpecialCells(xlCellTypeAllValidation)
    If Not Intersect(Target, rngValidation) Is Nothing Then
        Set rng = Target.Offset(-4).Resize(16)
        rng.Style = IIf(Target.Value = "NON", "Normal_2", "Normal")
    End If
End Sub

Bonjour jean eric,

désolé pour la réponse tardive j'étais en vacance.

le problème est résolu et merci pour votre échange cdt

Rechercher des sujets similaires à "mise forme conditionnelle vba"