3.2Mise en forme conditionnelle
L'essentiel en 30 secondes
- L'apparence réagit aux données : chaque propriété de mise en forme a son bouton formule (x-2) — on y écrit une formule qui renvoie la valeur de la propriété, évaluée ligne par ligne.
- La formule renvoie le bon type : une couleur pour une couleur (crRed, crYellow), un booléen pour la visibilité, un style pour le gras — ex. If {Montant} < 0 Then crRed Else crBlack.
- Signaler, pas décorer : négatifs en rouge, seuils surlignés, statuts colorés — avec parcimonie et un code couleur constant (rouge = problème partout).
Mini-cas filé — Farès fait parler ses soldes
Farès, contrôleur de gestion à Alger, envoie chaque semaine un état des soldes clients : un tableau noir sur blanc où les impayés se noient dans la masse — la direction ne voit rien. Il clique le bouton formule (x-2) de la couleur de police du champ Solde et écrit If {Clients.Solde} < 0 Then crRed Else crBlack, puis colore le fond en jaune quand le retard dépasse 30 jours. Le lundi suivant, les soldes négatifs sautent aux yeux en rouge : la réunion recouvrement part des vrais cas au lieu de relire tout le tableau.
Ce même cas revient dans le cours, le schéma, le script et le défi 48h.
1. Le mécanisme : une formule par propriété (bouton x-2)
La mise en forme conditionnelle change l'APPARENCE d'un objet (couleur de police, couleur de fond, style, bordure, taille, visibilité) selon une CONDITION sur les données. Le mécanisme : pour presque chaque propriété, un petit bouton formule (icône « x-2 ») ouvre un éditeur où l'on écrit une formule qui renvoie la valeur de la propriété — et Crystal Reports l'applique dynamiquement, valeur par valeur. Exemple pour la couleur de police d'un montant : « If {Commandes.Montant} < 0 Then crRed Else crBlack » — négatifs en rouge, le reste en noir.
Point clé : la formule est évaluée pour CHAQUE occurrence de l'objet (chaque ligne), donc l'apparence varie ligne par ligne selon les données. Et elle doit renvoyer une valeur du TYPE de la propriété : une COULEUR pour une couleur (crRed, crBlack, crYellow, crNoColor), un BOOLÉEN pour la visibilité (Vrai = masquer via Suppress), un style pour le gras. Se tromper de type, c'est la panne classique du débutant.
2. Mettre en évidence avec sens : cas courants et discipline
Les cas qui servent vraiment : montants négatifs en rouge (couleur de police), seuil dépassé surligné (fond jaune quand le stock passe sous 10 : If {Stocks.Quantite} < 10 Then crYellow Else crNoColor), statuts colorés (« En retard » rouge, « OK » vert), gros montants en gras. Choisir la BONNE propriété : couleur de POLICE pour teinter le chiffre, couleur de FOND pour surligner toute la cellule (plus visible), STYLE gras pour souligner sans couleur.
La discipline qui sépare le pro du sapin de Noël : parcimonie (mettre en évidence l'IMPORTANT — trop de couleurs conditionnelles brouillent tout) et cohérence (le même code couleur partout : rouge = problème/négatif, jamais l'inverse). À distinguer du masquage conditionnel de section (2-5) : ici l'objet reste AFFICHÉ mais change d'aspect ; là-bas la section apparaît ou disparaît. Les deux se combinent : colorer l'alerte ET n'afficher la section d'alerte que si besoin.
Le sapin de Noël
Un rapport qui clignote ne signale plus rien.
🔎 Exemple concret — Soldes en rouge, stocks critiques en jaune
Farès applique ses deux premières formules d'apparence en syntaxe Crystal.
Police du solde : If {Clients.Solde} < 0 Then crRed Else crBlack
Fond du stock : If {Stocks.Quantite} < 10 Then crYellow Else crNoColor
→ aperçu : l'apparence varie ligne par ligne.
Lecture : l'œil tombe d'abord sur le rouge et le jaune — exactement le but.
Leçon : renvoyer une couleur pour une couleur, un booléen pour la visibilité.
Vocabulaire de la section
- Mise en forme conditionnelle
- Changer l'apparence d'un objet (couleur, police, fond, visibilité…) selon une condition sur les données : l'apparence réagit aux valeurs.
Exemple simple : Les soldes négatifs de Farès affichés en rouge.
Ce que ce n'est pas : un tableau noir sur blanc où les impayés se noient.
Réflexe : dès qu'une valeur doit sauter aux yeux, la conditionner.
- Bouton formule de propriété (x-2)
- Petit bouton à côté de presque chaque propriété de mise en forme ; on y écrit la formule qui renvoie la valeur de la propriété.
Exemple simple : Le x-2 de la couleur de police du champ Solde.
Ce que ce n'est pas : recolorer les cellules à la main une par une.
Réflexe : chercher le x-2 avant toute retouche manuelle.
- Formule conditionnelle d'apparence
- Formule renvoyant la valeur d'une propriété selon une condition, ex. If {Montant} < 0 Then crRed Else crBlack.
Exemple simple : Le fond jaune de Farès quand le stock passe sous 10.
Ce que ce n'est pas : une formule qui renvoie du texte pour une couleur.
Réflexe : toujours renvoyer le type attendu par la propriété.
- Évaluation par occurrence
- La formule est évaluée pour chaque occurrence de l'objet (chaque ligne) : l'apparence varie ligne par ligne.
Exemple simple : Chaque solde client coloré selon SA valeur.
Ce que ce n'est pas : une couleur unique figée pour toute la colonne.
Réflexe : vérifier en aperçu que ça varie bien par ligne.
- Code couleur cohérent
- Même signification des couleurs partout dans le rapport (rouge = problème/négatif), avec parcimonie.
Exemple simple : Le rouge réservé aux soldes négatifs et aux retards chez Farès.
Ce que ce n'est pas : du rouge pour les bons résultats dans un tableau et les mauvais dans un autre.
Réflexe : figer 2-3 codes et ne plus en changer.
En pratique — Appliquer une mise en forme conditionnelle
- Sélectionnez un champ (ex. Montant), ouvrez son format et repérez le bouton FORMULE (x-2) à côté d'une propriété (couleur de police).
- Écrivez une formule conditionnelle : If {Montant} < 0 Then crRed Else crBlack → les négatifs en rouge.
- Essayez d'autres propriétés : couleur de FOND selon un seuil, VISIBILITÉ (masquer si condition), gras si valeur remarquable.
- Vérifiez en aperçu que l'apparence varie bien ligne par ligne ; gardez un code couleur constant (rouge = problème).
Script prêt à dire — présenter l'état qui signale (30 s)
« Ce n'est plus un tableau à relire en entier : les soldes négatifs apparaissent en rouge, les retards de plus de 30 jours en jaune. Même code partout — rouge veut toujours dire problème. On part directement des cas signalés en réunion recouvrement. »
À dire en présentant l'état ; projeter l'aperçu avec les couleurs.
Modèle copier-coller — formules d'apparence (syntaxe Crystal)
// Négatifs en rouge (couleur de police)
If {Clients.Solde} < 0 Then crRed Else crBlack
// Stock critique surligné (couleur de fond)
If {Stocks.Quantite} < 10 Then crYellow Else crNoColor
// Statut coloré
If {Commandes.Statut} = "En retard" Then crRed
Else If {Commandes.Statut} = "OK" Then crGreen Else crBlack
Indépendant
Deux formules de couleur bien placées et votre état signale tout seul ce qui compte.
PME à Alger
Farès colore soldes et retards : la réunion recouvrement part des cas rouges.
Équipe projet
Figer le code couleur du rapport dans la charte (rouge = problème) avant de multiplier les états.
Débutant
Cette semaine : une couleur de police + une couleur de fond conditionnelles, testées en aperçu.
✓ Bonnes pratiques
- Choisissez la bonne propriété : police pour teinter, fond pour surligner, gras pour souligner sans couleur.
- Renvoyez toujours le type attendu (couleur, booléen, style) — première cause de panne.
- Limitez-vous à 2-3 codes couleur et gardez le même sens partout dans le rapport.
✗ Pièges fréquents
- Colorer pour décorer : au-delà de trois codes, plus personne ne lit rien.
- Inverser le code d'un tableau à l'autre (rouge = bon ici, mauvais là).
- Confondre mise en forme conditionnelle (change l'aspect) et masquage de section (fait disparaître).
Points clés à retenir
- La MISE EN FORME CONDITIONNELLE relie l'apparence aux données via une formule sur une propriété (bouton x-2), évaluée LIGNE PAR LIGNE.
- Ex. couleur : If {Montant} < 0 Then crRed Else crBlack — la formule renvoie le TYPE de la propriété (couleur, booléen, style).
- Usages rois : négatifs en rouge, seuils surlignés, statuts colorés, valeurs remarquables en gras.
- AVEC SENS et parcimonie, de façon COHÉRENTE (rouge = problème partout) — sinon c'est du bruit.
Défi 48h — appliquez demain
Ajoutez 2 formules d'apparence à votre état réel (1 couleur de police + 1 fond) et faites valider le code couleur par un collègue.
- Mon état signale l'important sans relecture intégrale.
- Mes formules renvoient le type attendu par chaque propriété.
- Mon code couleur est limité et constant partout.
Questions fréquentes
Comment mettre en évidence des valeurs (négatifs, seuils, statuts) ?
Sélectionnez l'objet, ouvrez sa mise en forme, cliquez le BOUTON FORMULE (x-2) de la propriété voulue et écrivez la formule. Cas courants : négatifs en rouge (couleur de police : If {Montant} < 0 Then crRed Else crBlack) ; seuil surligné (fond : If {Stock} < 10 Then crYellow Else crNoColor) ; statut coloré (If {Statut} = « En retard » Then crRed Else If {Statut} = « OK » Then crGreen Else crBlack) ; gros montants en gras (style). Bonnes pratiques : choisir la BONNE propriété (police pour teinter, fond pour surligner, gras sans couleur), renvoyer le BON TYPE (couleur pour une couleur — crRed, crYellow… — booléen pour la visibilité), et rester SOBRE et cohérent.
Mise en forme conditionnelle ou masquage conditionnel de section : quelle différence ?
Deux mécanismes complémentaires à base de formules. La MISE EN FORME CONDITIONNELLE agit sur l'APPARENCE d'un OBJET (couleur, gras, fond…) : l'objet reste AFFICHÉ mais change d'aspect — usage : SIGNALER une valeur sans rien cacher (négatif en rouge). Le MASQUAGE CONDITIONNEL (2-5) agit sur la VISIBILITÉ d'une SECTION (ou d'un objet via Suppress) : la section est AFFICHÉE ou CACHÉE selon un booléen — usage : ne montrer que le PERTINENT (cacher les lignes à montant nul, afficher une alerte seulement si condition). Retenez : l'une CHANGE L'ASPECT de ce qui reste visible, l'autre FAIT APPARAÎTRE OU DISPARAÎTRE. On les combine : colorer l'alerte en rouge ET n'afficher sa section que quand elle existe.
Que faut-il renvoyer dans une formule de couleur de police ?