Mise en forme Conditionnelle VBA

Bonjourà tous,

J'ai essayé defaire un code pour réaliser une Mise en Forme Conditionnelle sous VBA (je ne veux pas passer directement par excel).

Mais ça ne marche pas.

Vous auriez des idées ?

Je mets le fichier en pj.

La macro est "Tableau MFC".

15tests.xlsm (91.48 Ko)

Merci d'avance.

A++

Wolf76

Bonjour,

Pensez à l'avenir, il est plus important de décrire le but à atteindre que de nous livrer votre code, c'est une perte de temps qui nous oblige à déchiffrer ce que vous avez voulu faire.

Voici votre code revu et corrigé:

Sub TableauMFC()
    'Déclaration des variables
    Dim Sh As Worksheet
    Dim DerLig As Long
    Dim FC1 As Excel.FormatCondition, FC2 As Excel.FormatCondition
    Dim Plage_MFC As Range

    Application.ScreenUpdating = False 'empêche les rafraîchissements de l'écran et accélère la lecture du code
    Set Sh = Sheets("Actions Wolf+réduc impot revenu") 'Affecte une variable à la feuille
    DerLig = Sh.Range("V" & Rows.Count).End(xlUp).Row 'trouve la dernière ligne du tableau
    Set Plage_MFC = Sh.Range(Cells(41, "V"), Cells(DerLig, "AP")) 'Déclare les limites de la zones des mFC
    Plage_MFC.FormatConditions.Delete 'Effacement des précédentes MFC
    Sh.Range("V41").Select 'on se positionne sur la première cellule du tableau
    Set FC1 = Plage_MFC.FormatConditions.Add(Type:=xlExpression, Formula1:="=$AA41<>0") 'Application de la première condition
    FC1.Interior.Color = RGB(32, 232, 80) 'format
    Set FC2 = Plage_MFC.FormatConditions.Add(Type:=xlExpression, Formula1:="=ET($AA41=0;ANNEE($AD41)<$K$1)") 'Application de la deuxième condition
    FC2.Interior.Color = RGB(255, 0, 0) 'format

    'Libération de la mémoire
    Set Sh = Nothing
    Set FC1 = Nothing
    Set FC2 = Nothing
    Set Plage_MFC = Nothing
End Sub

Cdlt

Merci Arturo83 pour ta solution. Sais tu si il est possible de ne pas sélectionner la 1ere ligne du tableau lors de la MFC ? Je ne pense pas mais bon je pose quand même la question . Merci de ton aide.
A++

Wolf76

Bonjour,

Sais tu si il est possible de ne pas sélectionner la 1ere ligne du tableau lors de la MFC ?

Oui, il suffit de mettre 42 à la place de 41 dans la ligne suivante, ce qui donne:

Set Plage_MFC = Sh.Range(Cells(42, "V"), Cells(DerLig, "AP")) 'Déclare les limites de la zones des mFC

Cdlt

Salut,

Merci à tous pour votre aide.

Finallement j'ai optépour une mise en forme classique avec condition en VBA (donc sans mise en forme conditionnelle tel que l'entend Excel).

Le résultat est le même.

A++

Wolf76

Rechercher des sujets similaires à "mise forme conditionnelle vba"