Mise en forme conditionnelle dans Microsoft Access

Logo_Microsoft_Access_2013

Cet article a pour but d’expliquer l’utilisation de la mise en forme conditionnelle dans Microsoft Access via le gestionnaire de règles et via le code.

Comme son nom l'indique, elle consiste à appliquer une mise en forme particulière à une zone de texte ou de zone de liste déroulante en fonction d'une ou plusieurs conditions.

Contexte :

On souhaite différencier nos contacts en fonction de leur poste dans une liste de contacts :
LISTE_CONTACTS

Mise en forme conditionnelle via le gestionnaire de règles :

En mode création de formulaire, on fait un clic droit sur la zone de texte souhaitée et on sélectionne dans le menu "Mise en forme conditionnelle" :
MFC1

On clique sur "Nouvelle règle" :
MFC2

On sélectionne "Expression" et on saisit notre condition : si le poste est "Center", on affiche le libellé en rouge :
MFC3

On répète le processus pour nos 4 postes restants :
MFC4

Au niveau affichage de la liste des contacts, on obtient le résultat suivant :
MFC5

L’utilisation du gestionnaire de règles est efficace lorsqu’on utilise la mise en forme conditionnelle sur une zone de texte et que les conditions d’affichage ne changent pas trop souvent.
Dès lors que l’on souhaite industrialiser et réaliser de la maintenance sur les règles de mise en forme conditionnelle, il est préférable de gérer cela via le code.

Mise en forme conditionnelle via le code :

On crée un module ModMFC, et on y ajoute la procédure suivante MFC_POSTE :

Public Sub MFC_POSTE(ByRef mCtl As Control, ByVal isBold As Boolean)
'en entrée, on a le contrôle concerné par la mise en forme conditionnelle
'et le booléen permet le passage du texte en gras
    With mCtl
        'on ajoute notre condition
        .FormatConditions.Add acExpression, , "[txtJobTitle]='Center'"
        'on initialise la couleur du texte lorsque la condition est remplie
        .FormatConditions.Item(0).ForeColor = RGB(255, 0, 0)
        'on passe le texte en gras ou pas
        .FormatConditions.Item(0).FontBold = isBold
        'on active notre condition
        .FormatConditions.Item(0).Enabled = True
        .FormatConditions.Add acExpression, , "[txtJobTitle]='Point guard'"
        .FormatConditions.Item(1).ForeColor = RGB(0, 0, 255)
        .FormatConditions.Item(1).FontBold = isBold
        .FormatConditions.Item(1).Enabled = True
        .FormatConditions.Add acExpression, , "[txtJobTitle]='Shooting guard'"
        .FormatConditions.Item(2).ForeColor = RGB(0, 255, 0)
        .FormatConditions.Item(2).FontBold = isBold
        .FormatConditions.Item(2).Enabled = True
        .FormatConditions.Add acExpression, , "[txtJobTitle]='Small forward'"
        .FormatConditions.Item(3).ForeColor = RGB(150, 0, 200)
        .FormatConditions.Item(3).FontBold = isBold
        .FormatConditions.Item(3).Enabled = True
        .FormatConditions.Add acExpression, , "[txtJobTitle]='Strong forward'"
        .FormatConditions.Item(4).ForeColor = RGB(150, 50, 0)
        .FormatConditions.Item(4).FontBold = isBold
        .FormatConditions.Item(4).Enabled = True
    End With
End Sub
ModMFC

L’appel de la procédure se fait sur le chargement du formulaire liste des contacts :

Private Sub Form_Load()
    Call MFC_POSTE(Me.txtContactName, True)
    Call MFC_POSTE(Me.txtJobTitle, False)
    Call MFC_POSTE(Me.txtEmailAddress, False)
End Sub
ListeContacts

On obtient le résultat suivant :
MFC6

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Captcha *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.