3.1 · Éditeur de formules (syntaxe Crystal/Basic)

Niveau 3 · Avancé : formules & mise en forme conditionnelle

3.1Éditeur de formules (syntaxe Crystal/Basic)

Objectif : créer des formules simples dans l'éditeur (champs, opérateurs, fonctions), en vérifiant la syntaxe et le type renvoyé.
Temps estimé : 12 min · lecture autonome · Si vous n'avez que 5 min : lisez « L'essentiel en 30s » + le schéma.

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.

Erreur d'interprétation fréquente : « Les deux syntaxes se mélangent librement dans une même formule, et le type se devine tout seul ». Non, deux fois. On choisit UNE syntaxe par formule (et idéalement par rapport), car Crystal et Basic ont des règles différentes ; et un type incohérent (texte + nombre sans conversion) fait échouer la formule au lieu de « s'arranger ». Vérifier la syntaxe + convertir explicitement : c'est le prix de formules qui marchent du premier coup.
Fabriquer une valeur calculée Champs, opérateurs, fonctions, vérification BriquesChamps {table.champ}, opérateurs, fonctions, littéraux+Une syntaxeCrystal par défaut, Basic si VB familier+Vérifier & typerContrôle syntaxe, type renvoyé, conversions Insérer les champs depuis la liste plutôt que les taper.
Champs, opérateurs, fonctions, vérification
Version texte du schéma (SEO / lecteurs d'écran / traduction) : 1) Briques : Farès assemble le champ {Commandes.MontantHT}, l'opérateur * et le taux 1.19 au lieu de ressaisir les TTC. 2) Syntaxe : il choisit Crystal une fois pour toutes, la plus documentée. 3) Contrôle : il vérifie la syntaxe au bouton, surveille le type (nombre) et place le champ calculé comme un champ normal. Leçon : une formule, c'est un champ fabriqué — vérifié et typé avant usage.

🔎 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

  1. Ouvrez l'éditeur de formules et créez un calcul simple (ex. TTC = {MontantHT} * 1.19) en insérant le champ depuis la liste.
  2. Essayez une concaténation de texte (ex. {Client.Nom} + " " + {Client.Prenom}) et parcourez les fonctions par catégorie (maths, texte, dates).
  3. VÉRIFIEZ la syntaxe (bouton de contrôle) : corrigez les erreurs signalées avant d'utiliser la formule.
  4. 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).
Vous créez des formules dans l'éditeur (champs, opérateurs, fonctions), en vérifiant la syntaxe et le type : la personnalisation par le calcul est débloquée.

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.

Checklist sortie de section
  • 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.
Auto-évaluation 1-5 : ai-je encore des valeurs recopiées à la main hors du rapport ?est-ce que chacune de mes formules a passé le contrôle de syntaxe ?

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).

Vérifiez votre compréhension

Où crée-t-on une valeur calculée (TTC, marge) dans Crystal Reports ?

Ressources supplémentaires (optionnel, pour aller plus loin)

Examen du niveau 3Questions inédites et durcies pour valider vos acquis