3.1Éditeur de formules (syntaxe Crystal/Basic)
L'essentiel en 30 secondes
- Une formule = une valeur qui manque : TTC, marge, nom complet, catégorie calculée — créée dans l'éditeur de formules, elle apparaît comme un champ à placer dans n'importe quelle section.
- Deux syntaxes, un seul choix : Crystal (historique, la plus documentée) ou Basic (proche de VB) — même résultat, mais une seule par rapport pour rester cohérent.
- Vérifier, typer, convertir : toujours contrôler la syntaxe avant usage et surveiller le type renvoyé (ToText, ToNumber) — mélanger texte et nombre sans conversion fait échouer la formule.
Mini-cas filé — Farès calcule ses TTC sans tableur
Farès, contrôleur de gestion à Alger, ressaisit chaque mois les montants TTC de ses factures dans un tableur à côté de son état Crystal — source d'erreurs et de temps perdu. Il ouvre l'éditeur de formules, insère le champ depuis la liste et écrit {Commandes.MontantHT} * 1.19 (TVA algérienne) : le champ calculé apparaît dans l'explorateur, il le place dans la section Détails, vérifie la syntaxe, et le TTC se calcule tout seul à chaque rafraîchissement. Fini la double saisie : le rapport produit lui-même sa valeur manquante.
Ce même cas revient dans le cours, le schéma, le script et le défi 48h.
1. L'éditeur de formules : champs, opérateurs, fonctions
Une formule est un calcul ou une logique que VOUS créez pour produire une valeur qui n'existe pas telle quelle dans la base : un montant TTC, une marge, un nom complet, une catégorie. On la crée dans l'éditeur de formules (Formula Workshop) ; le champ de formule apparaît alors dans l'explorateur et se place dans une section comme n'importe quel champ. L'éditeur aide : liste des champs à insérer (notés {table.champ}), liste des fonctions par catégorie (maths, chaînes, dates, conditions) et opérateurs. Farès y pioche au lieu de tout taper à la main — moins de fautes de frappe sur les noms de champs.
Les briques d'une formule : les références de champs entre accolades ({Commandes.MontantHT}), les opérateurs (arithmétiques + - * /, comparaison = <> > < >= <=, logiques And Or Not, concaténation + ou &), les fonctions intégrées (Round, UpperCase, Year, If…Then…Else…) et les littéraux (nombres comme 1.19, texte entre guillemets, dates entre # comme #2026-01-01#). Exemple : le TTC = {Commandes.MontantHT} * 1.19 ; un libellé = {Client.Nom} + " " + {Client.Prenom}.
2. Deux syntaxes, une vérification, un type
Crystal Reports propose DEUX SYNTAXES au choix : la syntaxe Crystal (historique, propre à l'outil, la plus répandue dans la documentation — la valeur de la formule est la dernière expression évaluée) et la syntaxe Basic (proche de Visual Basic, on affecte le résultat à « formula = … »). Elles font la même chose : par défaut, la syntaxe Crystal, car on y trouve plus d'exemples et on lit plus facilement les rapports des autres. Et on s'y tient dans tout le rapport.
Deux réflexes avant d'utiliser une formule. D'abord VÉRIFIER la syntaxe (bouton de contrôle) : l'éditeur signale parenthèses manquantes et fautes. Ensuite surveiller le TYPE : une formule renvoie un type précis (nombre, texte, date, booléen) ; mélanger texte et nombre sans conversion provoque des erreurs — on convertit avec ToText, ToNumber. Une formule peut ensuite s'afficher, se totaliser, servir dans un filtre ou une mise en forme — et les formules se combinent entre elles.
🔎 Exemple concret — TTC et nom complet, les deux premières formules
Farès écrit ses deux formules de base en syntaxe Crystal.
TTC (nombre) : {Commandes.MontantHT} * 1.19
Nom complet (texte) : {Client.Nom} + " " + {Client.Prenom}
→ vérifier la syntaxe au bouton, placer chaque champ dans la section voulue.
Lecture : un calcul et une concaténation couvrent déjà l'essentiel des besoins courants.
Leçon : insérer les champs depuis la liste évite les fautes de frappe.
Vocabulaire de la section
- Formule
- Calcul ou logique créé par l'utilisateur pour produire une valeur absente de la base (TTC, marge, nom + prénom, catégorie). Créée dans l'éditeur, placée comme un champ.
Exemple simple : Le TTC de Farès : {Commandes.MontantHT} * 1.19.
Ce que ce n'est pas : une ressaisie manuelle des TTC dans un tableur à côté.
Réflexe : dès qu'une valeur manque, la fabriquer en formule.
- Éditeur de formules (Formula Workshop)
- L'atelier d'écriture des formules : listes des champs ({table.champ}), des fonctions par catégorie et des opérateurs, avec vérification de syntaxe.
Exemple simple : Farès y insère {Client.Nom} depuis la liste.
Ce que ce n'est pas : taper les noms de champs à la main, source de fautes.
Réflexe : toujours insérer depuis les listes proposées.
- Syntaxe Crystal vs Basic
- Deux langages au choix pour la même formule : Crystal (historique, la plus répandue) et Basic (proche de Visual Basic, « formula = … »).
Exemple simple : Farès écrit tout en Crystal pour rester cohérent.
Ce que ce n'est pas : mélanger les deux syntaxes dans un même rapport.
Réflexe : Crystal par défaut, une seule syntaxe par rapport.
- Briques d'une formule
- Références de champs ({table.champ}), opérateurs (arithmétiques, comparaison, And/Or/Not, concaténation), fonctions intégrées, littéraux (nombres, « texte », #dates#).
Exemple simple : {Client.Nom} + " " + {Client.Prenom}.
Ce que ce n'est pas : un calcul recopié à la main hors du rapport.
Réflexe : assembler brique par brique, puis vérifier.
- Type de la formule
- Une formule renvoie un type précis (nombre, texte, date, booléen) ; mélanger les types sans conversion provoque des erreurs.
Exemple simple : ToText({Commandes.Montant}) pour afficher un nombre dans un libellé.
Ce que ce n'est pas : additionner un texte et un nombre en espérant que « ça passe ».
Réflexe : convertir explicitement avec ToText, ToNumber.
En pratique — Écrire une première formule
- Ouvrez l'éditeur de formules et créez un calcul simple (ex. TTC = {MontantHT} * 1.19) en insérant le champ depuis la liste.
- Essayez une concaténation de texte (ex. {Client.Nom} + " " + {Client.Prenom}) et parcourez les fonctions par catégorie (maths, texte, dates).
- VÉRIFIEZ la syntaxe (bouton de contrôle) : corrigez les erreurs signalées avant d'utiliser la formule.
- Placez le champ de formule (désormais dans l'explorateur) dans une section comme un champ normal ; surveillez le TYPE (convertir avec ToText/ToNumber si besoin).
Script prêt à dire — expliquer sa formule au chef comptable (30 s)
« Les TTC ne sont plus ressaisis : j'ai créé un champ calculé — montant HT multiplié par 1,19 — directement dans le rapport, en syntaxe Crystal, vérifié par l'éditeur. Il se recalcule tout seul à chaque rafraîchissement, sans double saisie ni erreur de recopie. »
À dire en réunion de clôture ; montrer la formule et le bouton de vérification.
Modèle copier-coller — premières formules (syntaxe Crystal)
// TTC (nombre)
{Commandes.MontantHT} * 1.19
// Nom complet (texte)
{Client.Nom} + " " + {Client.Prenom}
// Marge (nombre)
{Ventes.PrixVente} - {Ventes.Cout}
// Équivalent Basic : formula = {Commandes.MontantHT} * 1.19
Indépendant
Deux formules (un calcul, une concaténation) automatisent ce que vous ressaisissiez à la main.
PME à Alger
Farès calcule ses TTC à 19 % dans le rapport : fini le tableur parallèle.
Équipe projet
Imposer la syntaxe Crystal unique dans le rapport pour que chacun relise les formules des autres.
Débutant
Cette semaine : une formule de calcul + une de texte, syntaxe vérifiée au bouton.
✓ Bonnes pratiques
- Insérez les champs depuis la liste de l'éditeur plutôt que de les taper (zéro faute de frappe).
- Choisissez la syntaxe Crystal par défaut et tenez-vous-y dans tout le rapport.
- Vérifiez systématiquement la syntaxe avant d'utiliser une formule, et surveillez son type.
✗ Pièges fréquents
- Mélanger syntaxes Crystal et Basic dans un même rapport : personne ne s'y retrouve.
- Taper les noms de champs à la main au lieu de les insérer (fautes invisibles).
- Additionner texte et nombre sans conversion : la formule échoue au lieu de « s'arranger ».
Points clés à retenir
- Une FORMULE produit une valeur absente de la base (TTC, marge, nom + prénom, catégorie) ; créée dans l'éditeur, elle se place comme un champ.
- Deux SYNTAXES (Crystal, la plus répandue / Basic, proche de VB) : s'en tenir à UNE SEULE pour la cohérence.
- Briques : champs {table.champ}, opérateurs, fonctions par catégorie, littéraux (nombres, « texte », #dates#).
- TOUJOURS VÉRIFIER la syntaxe et surveiller le TYPE (ToText, ToNumber pour convertir).
Défi 48h — appliquez demain
Créez 1 formule de calcul (TTC ou marge) + 1 formule de texte (nom complet), syntaxe vérifiée, placées dans votre rapport réel.
- Je crée un champ calculé au lieu de ressaisir à la main.
- J'écris en une seule syntaxe (Crystal par défaut).
- Je vérifie la syntaxe et je convertis les types explicitement.
Questions fréquentes
Syntaxe Crystal ou Basic : laquelle choisir, et comment débuter ?
Les deux syntaxes produisent le MÊME résultat ; le choix est une question de cohérence et de familiarité. La syntaxe CRYSTAL est le langage historique, propre à Crystal Reports — la plus RÉPANDUE : la majorité de la documentation et des rapports existants l'utilise, et la valeur de la formule est la dernière expression évaluée. La syntaxe BASIC est proche de Visual Basic (« formula = … »), plus familière si vous connaissez VB/VBA. Par défaut, choisissez Crystal (plus d'exemples, lecture des rapports des autres) et restez COHÉRENT dans tout le rapport. Pour débuter : commencez SIMPLE (un calcul arithmétique, une concaténation), insérez les champs depuis la liste, parcourez les fonctions par catégorie, et VÉRIFIEZ la syntaxe systématiquement — l'éditeur signale parenthèses manquantes et fautes.
À quoi servent concrètement les formules, et quels calculs courants réaliser ?
Les formules produisent valeurs et logique absentes de la base, et interviennent partout : CALCULER des valeurs dérivées (TTC = HT × taux, marge = vente − coût, remise, quantité × prix, pourcentage) ; COMPOSER du texte (nom + prénom, adresse sur une ligne, « Facture n° » + numéro) ; CATÉGORISER avec If…Then…Else (3-4) pour regrouper ensuite (3-5) ; alimenter des FILTRES (attention au côté serveur, 2-3) ; piloter la MISE EN FORME CONDITIONNELLE (3-2) et le MASQUAGE de sections (2-5) ; manipuler les DATES (année, mois, écarts) ; gérer les VALEURS NULLES. Calculs de gestion typiques de Farès : TTC à 19 %, marge par ligne (vente − coût), total ligne (quantité × prix unitaire), part en % (partie / total × 100).
Où crée-t-on une valeur calculée (TTC, marge) dans Crystal Reports ?