Mise en forme conditionnelle en VBA

Bonjour à tous !

Je viens demander votre car j'ai un petit problème sur une macro que j'ai faite.

Je voudrais que les cellules de la colonne I deviennent en fond gris lorsque le mot "soldé" est écrit dans ces cellules.

Voici ce que j'ai :

    Columns("I:I").Select
    Range("I2").Activate
    Cells.FormatConditions.Delete
    Columns("I:I").Select
    Range("I2").Activate
    Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
        "=$I3=""Soldé"""
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
    With Selection.FormatConditions(1).Interior
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorDark1
        .TintAndShade = -0.249946592608417
    End With
    Selection.FormatConditions(1).StopIfTrue = False

Il fonctionne très bien sur un fichier normal, sauf que la j'ai deux cellules fusionnées en H1:I1... Du coup ma règle s'applique aux deux colonnes au lieu d'uniquement la I ...

Auriez-vous une idée de ce que je pourrais faire pour modifier cela svp ?

P.S: la mise en forme conditionnelle toute simple sans VBA n'est pas envisageable puisque ce code vient s'inscrire dans une plus grosse macro qui met en forme tout le fichier Excel.

Vous trouverez un exemple en pièce jointe

41exemple.xlsm (40.14 Ko)

Bonjour Kalista,

Je te propose la modification de la macro3 ainsi:

Sub Macro3_GVS()
    Const cColEtat = 9
    Dim oSheet As Excel.Worksheet
    Dim oRange As Excel.Range, oCell As Excel.Range
    Dim lLastRow As Long

    Set oSheet = ThisWorkbook.Worksheets("RECAP")

    lLastRow = oSheet.UsedRange.Rows.Count

    'On spécifie la plage de cellules "Etat" à partir de la ligne 3
    Set oRange = oSheet.Range(oSheet.Cells(3, cColEtat), oSheet.Cells(lLastRow, cColEtat))
    With oRange
        .FormatConditions.Delete
        For Each oCell In oRange.Cells
            If oCell.Value = "Soldé" Then
                With oCell.Interior
                    .PatternColorIndex = xlAutomatic
                    .ThemeColor = xlThemeColorDark1
                    .TintAndShade = -0.249946592608417
                End With
            End If
        Next
    End With

End Sub

Super c'est parfait merci beaucoup

Rechercher des sujets similaires à "mise forme conditionnelle vba"