VBA - Mise en forme conditionnelle

Bonjour à tous,

J'essaye de programmer des mise en forme conditionnelle en vba :

Exemple :

A1 : Valeur cible

B1 : Cellule qui contient la MFC

Si B1 est égal à A1 alors ma cellule sera verte

Si B1 est inférieur à A1 alors ma cellule sera rouge

Si B1 est vide, aucun remplissage n'est effectué.

Je passe par une MFC car il faut que la couleur de fond de ma cellule puisse changer même si le code n'est pas actif.

Voici mon code :

ActiveCell.FormatConditions.Delete

    Selection.FormatConditions.AddColorScale ColorScaleType:=2
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
    Selection.FormatConditions(1).ColorScaleCriteria(1).Type = _
        xlConditionValueLowestValue
    With Selection.FormatConditions(1).ColorScaleCriteria(1).FormatColor
        .Color = 255
        .TintAndShade = 0
    End With
    Selection.FormatConditions(1).ColorScaleCriteria(2).Type = _
        xlConditionValueNumber
    Selection.FormatConditions(1).ColorScaleCriteria(2).Value = "B" & nb_lignes
    With Selection.FormatConditions(1).ColorScaleCriteria(2).FormatColor
        .Color = 5287936
        .TintAndShade = 0
    End With

Ici la cellule cible est "B & nb_lignes" cependant dans la MFC cela m'affiche ="B33" alors que pour que cela fonctionne il faut =$B$33..

Comment faire ..?

Merci pour vos réponses !

Mickael

Voici mon code :

ActiveCell.FormatConditions.Delete

    Selection.FormatConditions.AddColorScale ColorScaleType:=2
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
    Selection.FormatConditions(1).ColorScaleCriteria(1).Type = _
        xlConditionValueLowestValue
    With Selection.FormatConditions(1).ColorScaleCriteria(1).FormatColor
        .Color = 255
        .TintAndShade = 0
    End With
    Selection.FormatConditions(1).ColorScaleCriteria(2).Type = _
        xlConditionValueNumber
    Selection.FormatConditions(1).ColorScaleCriteria(2).Value = "$B$" & nb_lignes 
    With Selection.FormatConditions(1).ColorScaleCriteria(2).FormatColor
        .Color = 5287936
        .TintAndShade = 0
    End With

Essaye comme sa...

Bonjour,

Sub test()
    With ActiveSheet.Range("B1")
        .FormatConditions.Delete
        .FormatConditions.Add(xlExpression, , "=ET($B$1<>"""";$B$1=$A$1)").Interior _
         .Color = RGB(0, 176, 80)
        .FormatConditions.Add(xlExpression, , "=ET($B$1<>"""";$B$1<$A$1)").Interior _
         .Color = RGB(255, 0, 0)
    End With
End Sub

Multhani, cela marche pas car il y a encore les guillemets : ="$B$33", pour que la MFC fonctionne il faut =$B$33

Qui a une idée svp ?

bonjour

Si B1 est égal à A1 alors ma cellule sera verte

Si B1 est inférieur à A1 alors ma cellule sera rouge

Si B1 est vide, aucun remplissage n'est effectué.

Tu a oublie d’ajouter :

Si B1 est supérieur à A1 alors ma cellule ………………

en plus :

= "$B$" & nb_lignes

Ne renvoie pas des guillemets

et je pense que tu n pas vu le code de MFerrand qui me semble fonctionnel

= "$B$" & nb_lignes

Amir, lorsque je rentre ce code, cela renvois automatiquement des guillemets dans les conditions de ma MFC

Et MFerrand, je n'arrive pas à adapter ton code avec mes cellule à savoir :

Cellule cible : "$B$" & nb_lignes

Cellule contenant la MFC : Cellule active

Ta question initiale ne concerne que B1 (relis ton post) !

Tu veux définir 2 MFC : cellule non vide et =A1 (=> vert) ; cellule non vide et <A1 (=> rouge).

C'est ce que j'ai fourni, qui s'applique exclusivement à B1.

Je n'ai pas voulu rentrer dans ton code enregistré de définition d'une échelle à 2 couleurs, ta question n'étant pas formulée en ces termes, cela ne génère que de la confusion.

nb_lignes est mentionnée sans être définie... : donc une variable dont on ne sait d'où elle vient ni si elle est initialisée et comment ou non.

Lorsqu'on veut mettre en place une MFC, on commence par définir la plage sur laquelle la MFC doit s'appliquer ; ensuite le ou les résultats à obtenir, qui permettent pour chacun d'eux de formuler les conditions pour l'obtenir.

Cordialement.

Bonjour,

J'ai créé un bouton vba qui ouvre un formulaire. Dans ce formulaire, on sélectionne et entre les informations que l'on a puis on clique sur le bouton "ajouté". Les informations indiquées sont alors ajoutées à la ligne suivante dans un tableau. Je voudrais qu'à chaque fois que l'on ajoute une ligne à ce tableau, dès qu'une cellule n'a pas d'informations, elle se mette en rouge. J'ai eu beau chercher sur tous les forums, essayer plein de code vba en adaptant à mon cas, cela ne marche pas.

Je joins quelques capture d'écran de mon tableau et de mon code vba.

Désolé je ne peux pas joindre le document Excel car il contient des données confidentielles.

code2 code 1 tableau

Merci pour votre aide

Les bonnes manières dans le Forum !

On ne squatte pas n'importe quel vieux sujet pour y flanquer une nouvelle question, on ouvre son propre sujet... on y expose la question et on fournit un fichier adéquat pour la traiter, on le fabrique... C'est le b-a-ba.

Et si tu trouves quelque loisir, la révision du cours sur les boucles t'évitera d'infliger un code à rallonge aussi répétitif...

Cordialement.

Rechercher des sujets similaires à "vba mise forme conditionnelle"