¨mise en forme conditionnelle vba

PHILIP

XLDnaute Occasionnel
Bonjour à tous

Je suis débutant en vba et j'ai un dossier à automatiser j'enregistre donc des macros et comme elles sont lourdes je voudrais les reduire pourriez vous m'aider a réduire celui ci
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=""si(et(gauche($L$6;1)=""""M"""";g6=""""F"""";nb.si(m96h;h6);"""""""")"""
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Font
.Bold = True
.Italic = True
.ThemeColor = xlThemeColorAccent3
.TintAndShade = 0
End With
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent2
.TintAndShade = 0.799981688894314
End With
Selection.FormatConditions(1).StopIfTrue = False
End Sub

Ce code dit que si( gauche(L6;1)= "M",si g6="F") ; H8 appartient à la plage m24hr;sinon""
et je mets en forme
Merci pour votre aide
 

Iznogood1

XLDnaute Impliqué
Bonjour,

Plusieurs incongruités dans ta formule
  • Tu mélanges format conditionnel et contenu conditionnel
    > Applique un format conditionnel si la condition est vérifiée
    > Mets une formule dans la cellule pour afficher le contenu
  • Dans le format conditionnel, Formula1:= "=""....""" teste si le contenu de la cellule est égal au texte entre les guillemets doubles
    Or tu veux tester si le contenu répond à 2 conditions
    > Mettre Formula1:="=ET(GAUCHE($L$6;1)=""M"";G6=""F"")"
  • On peut être surpris de l'utilisation de référence absolue GAUCHE($L$6;1) et relative G6=""F"" dans la même formule ; es-tu sûr que c'est le comportement voulu ?
Les parties entre With et EndWith ne sont pas choquantes ; je ne vois pas comment les "simplifier" sauf à utiliser une format plus simple (ex: juste un fond rouge se définit en 1 seule instruction, mais si tu veux un fond d'une couleur pastelle + une police gras/ Italic..., tu es obligé d'avoir ce type de code).
 
Dernière édition:

Discussions similaires


Haut Bas