Mise en forme conditionnelle en VBA

Bonjour, j'essaye d'ajouter de la mfc à une de mes feuilles en vba mais cela ne fonctionne pas. J'ai beau chercher, je ne trouve pas d'où pourrait venir l'erreur. Mon code est le suivant :

Dim MyRange1 As Range
Set MyRange1 = Range("$F$7:$F$71")

ActiveSheet.MyRange1.FormatConditions.Add Type:=xlExpression, Formula1:="=AND(F$72=1;COUNTIF(F$7;""><""))"
ActiveSheet.MyRange1.FormatConditions(1).Interior.Color = RGB(141, 180, 226)

ActiveSheet.MyRange1.FormatConditions.Add Type:=xlExpression, Formula1:="=AND(F$72=2;COUNTIF(F$7;""><""))"
ActiveSheet.MyRange1.FormatConditions(2).Interior.Color = RGB(230, 184, 183)

ActiveSheet.MyRange1.FormatConditions.Add Type:=xlExpression, Formula1:="=AND(F$72=3;COUNTIF(F$7;""><""))"
ActiveSheet.MyRange1.FormatConditions(3).Interior.Color = RGB(196, 215, 155)

ActiveSheet.MyRange1.FormatConditions.Add Type:=xlExpression, Formula1:="=AND(F$72=4;COUNTIF(F$7;""><""))"
ActiveSheet.MyRange1.FormatConditions(4).Interior.Color = RGB(204, 192, 218)

Peut-être que l'erreur vient de la formule ?..

Merci d'avance

Bonjour,

Pourquoi voulez-vous faire cela par VBA alors que le menu excel vous permet de mettre directement les paramètres ??

C'est comme les TCD, je ne comprends pas pourquoi faire cela avec VBA

Bonjour tout le monde,

@Zarian71, ton Excel est en anglais ? Car dans la formule de ta MFC en VBA, il faut l'écrire dans la langue de ton excel. C'est vraiment ce qui va s'écrire et ce à quoi tu auras accès depuis "mise en forme conditionnelle" / "gérer les règles". Si tu as un Excel en français, remplace par les fonctions en français et ça devrait le faire.

@Dan, je créé des règles de MFC également parfois via VBA...
C'est utile pour les créations de plannings entre autres. Quand on duplique une zone de référence qui contient des formules, des cellules avec des couleurs particulières qui ont du sens, c'est plus pratique de faire un copier coller de la zone en VBA. Et ça met le bordel dans les règles. Du coup, une fois que j'ai généré le roulement de l'année, je supprime toutes les MFC et je les réapplique via VBA. Ça permet d'avoir une base propre.

Et une fois que l'utilisateur a tout pété à coups de copier-coller dans l'utilisation quotidienne, c'est pratique aussi de pouvoir effacer/recréer d'un seul clic tout le bordel.

Enfin je trouve.

Bonjour, merci pour vos réponses. Au départ j'avais mis mes formules en Français mais cela ne fonctionnait pas non plus j'ai donc essayé en anglais mais ca ne fonctionne toujours pas. Pour le pourquoi de la mfc en vba, joyeuxnoel a très bien expliqué et je suis exactement dans le cas qu'il décrit.

Pour revenir à mon problème, peut-être que mon code n'est pas correct ou qu'il manque certaines choses, je n'arrive toujours pas à trouver la solution...

@JoyeuxNoel :

Je suis bien d'accord que la MFC qui est souvent problématique notamment dans les planning.
Mais dans ce cas j'essaie de définir les couleurs sur une feuille séparée et les appliquer par VBA plutôt que de mettre tout cela dans une MFC.

Cordialement

Bonjour tout le monde,

@Zarian71 :
Pour moi ça marche, donc je suis parti dessus sans trop me poser de questions ... À voir de ton côté :

RPlan.FormatConditions.Add Type:=xlExpression, Formula1:="=ET(ESTNUM(B7);B7<1;B7>$BX$1)"
RPlan.FormatConditions(RPlan.FormatConditions.Count).SetFirstPriority
    With RPlan.FormatConditions(1).Font
        .Color = -16777024
        .TintAndShade = 0
    End With
RPlan.FormatConditions(1).StopIfTrue = False

RPlan est ma plage de référence ici. Je laisse toujours les (1). J'ai remarqué qu'au dessus de 8 ça plante sinon. Du coup, ils sont tous à 1 et je les créé dans l'ordre décroissant de priorité (si quelqu'un a mieux, je suis preneur).

@Dan :
Je comprends bien. Sauf que quand tu veux un planning qui reste évolutif, que les gens puissent remplacer un jour de boulot par un autre, des lieux par des autres, et que tout se mette en forme comme il faut ... Soit tu as tout un tas de macros événementielles, soit tu lances toutes tes macros de mise en forme régulièrement, soit... soit je ne sais pas quoi. Mais rien de beaucoup plus simple que de créer les règles de MFC par VBA, si ? Tout du moins du haut de mes compétences très limitées en VBA et en programmation.

C'est bon tout fonctionne merci encore de vos réponses !

Rechercher des sujets similaires à "mise forme conditionnelle vba"