Suivez votre progression
Accueil Trailhead
Accueil Trailhead

Utilisation de la logique de base dans les formules de case à cocher

Objectifs de formation

Une fois cette unité terminée, vous pourrez :
  • Décrire ce que renvoient les formules de case à cocher
  • Utiliser avec aisance les fonctions IF(), AND(), NOT() et OR()
  • Décrire les cas dans lesquels les formules de type Case à cocher sont employées
  • Créer une formule qui emploie le type Case à cocher

Présentation des champs de formule

Les formules sont un outil puissant, vous permettant d’effectuer des calculs ainsi que d’autres opérations sur les données de votre organisation. Les formules vous permettent en outre d’incorporer des hyperliens, de réaliser des calculs portant sur des champs existants ou d’utiliser une logique conditionnelle pour afficher un montant. Si vous n’avez jamais utilisé de formules, consultez d’abord l’unité Utilisation de champs de formule avant de passer à celle-ci.

Présentation du type Case à cocher dans les formules

Les cases à cocher ne peuvent présenter que les deux états suivants : sélectionnée ou non sélectionnée. Qu’est-ce que cela signifie pour votre formule ? Eh bien, qu’une formule de case à cocher est tout simplement une instruction logique pouvant être soit vraie, soit fausse. Par exemple, si vous voulez savoir immédiatement si un compte donné a au moins 500 employés, une simple formule de case à cocher peut vous donner cette information.

NumberOfEmployees >= 500

Si un compte présente plus de 500 employés, la case Grand compte est cochée sur la page lui correspondant. Si ce n’est pas le cas, la case Grand compte n’est pas cochée.

La plupart du temps, les instructions logiques de votre formule seront beaucoup plus complexes que cela. Pour tirer pleinement parti du type de données lié aux formules de case à cocher, vous aurez besoin de quelques outils logiques de base.

Opérateurs logiques de base

Les fonctions logiques sont des versions plus rigides de mots que vous utilisez déjà dans presque toutes vos conversations : and (et), or (ou), not (pas) et if (si). Vous savez, par exemple, qu’une pomme est un fruit rouge, tandis qu’une banane est un fruit jaune. Si vous cherchez dans une épicerie quelque chose qui soit à la fois rouge et un fruit, vous allez en ressortir avec une pomme. Par contre, si vous cherchez quelque chose qui est rouge ou un fruit, vous pourrez aussi bien vous satisfaire d’une banane que d’une pomme.

Vous pouvez utiliser le même type de logique dans les formules avec les fonctions NOT(), AND(), OR() et IF().

AND()

La fonction intégrée AND() doit comporter au moins deux arguments. Elle renvoie la valeur True si et seulement si les deux arguments sont vrais. Il est facile de visualiser cette logique en la plaçant dans un tableau.

Premier argument = Vrai Premier argument = Faux
Deuxième argument = Vrai Vrai Faux
Deuxième argument = Faux Faux Faux

Supposons, par exemple, que vous souhaitiez que vos utilisateurs sachent immédiatement, en consultant la fiche d’un contact, s’il est possible de le joindre par e-mail ou par téléphone. Si le contact en question a coché les cases Ne pas appeler et Désinscription des e-mails, il faudrait également cocher la case Ne pas contacter. Comme nous voulons que cette case soit cochée uniquement dans le cas où le contact a lui-même coché les cases Ne pas appeler et Désinscription des e-mails, nous utilisons la fonction AND().

Il est possible de créer une formule de case à cocher de la même manière que vous créeriez n’importe quel autre champ de formule dans Salesforce.

  1. Dans Configuration, saisissez Contacts dans la case Recherche rapide, puis sélectionnez Contacts | Champs.
  2. Faites défiler jusqu’à la section Champs personnalisés de contact et relations, puis cliquez sur Nouveau.
  3. Sélectionnez Formule, puis cliquez sur Suivant.
  4. Dans Étiquette du champ, saisissez « Ne pas contacter ». La section Nom du champ est automatiquement renseignée.
  5. Sélectionnez Case à cocher, puis cliquez sur Suivant.
  6. Copiez le code suivant et collez-le dans l’éditeur de formule.
    AND(DoNotCall, HasOptedOutOfEmail)
    Voici à quoi cela ressemblera dans l’éditeur de formule une fois que vous aurez terminé : La formule de case à cocher Ne pas contacter

Remarque : les exemples de formules que nous vous donnons tout au long de ce module vont du relativement simple au très complexe. Pour vous faciliter la tâche, nous vous fournirons tous les exemples de formule sous forme d’extraits de code plutôt que de captures d’écran les représentant dans l’éditeur de formule. Cela vous permettra de copier et de coller l’extrait de code directement dans l’éditeur de formule. Pour copier l’extrait de code, survolez-le jusqu’à ce que trois icônes apparaissent dans le coin supérieur droit. Ensuite, utilisez l’icône « Copier dans le Presse-papiers » pour copier l’extrait.

Comme toujours, assurez-vous que vous utilisez bien l’éditeur de formule avancée pour saisir votre formule. Vous pouvez accéder à l’éditeur de formule avancée en sélectionnant l’onglet Formule avancée de l’éditeur de formules. L’éditeur de formule avancée vous permet d’accéder facilement à un large éventail de fonctions et d’opérateurs dont vous aurez besoin tout au long de ce module.
Remarque

Remarque

N’oubliez pas : bien que vous puissiez créer un champ de formule en tant que champ personnalisé, vous pouvez également le faire sous la forme de règles de validation. Ces dernières vous permettent d’empêcher les utilisateurs de sauvegarder des enregistrements contenant des données non valides d’après votre formule. Les règles de validation peuvent représenter un moyen efficace de maintenir la qualité des données, mais elles doivent être manipulées avec précaution. S’il y a bien une chose que vous souhaitez éviter, c’est que vos utilisateurs soient mécontents, car ils ne peuvent pas sauvegarder leurs enregistrements. Utilisez-les donc à bon escient. Cliquez ici pour en savoir plus au sujet des règles de validation.

Avec cette formule, si une personne a sélectionné les cases Ne pas appeler et Désinscription des e-mails, la case Ne pas contacter est aussi cochée sur la fiche de ce contact. Si la personne n’a sélectionné que l’une de ces deux cases, la case Ne pas contacter ne sera pas cochée.

Remarque

Remarque

La fonction AND() peut s’exprimer de plusieurs manières. Vous pouvez l’écrire en tant que fonction avec AND() ou en tant qu’opérateur en liant deux instructions à l’aide de &&. Dans ce cas, AND(DoNotCall, HasOptedOutOfEmail) équivaut à DoNotCall && HasOptedOutOfEmail. Veillez à ne pas confondre &&, qui remplace AND(), avec &, qui concatène deux chaînes de texte.

Si vous souhaitez vérifier plus de deux conditions, ne vous inquiétez pas : l’opérateur AND() peut en prendre en charge davantage. L’opérateur AND() peut ainsi très bien faire en sorte que la case Ne pas contacter d’un contact soit cochée lorsque celui-ci a lui-même coché les cases Ne pas appeler, Désinscription des e-mails et Désinscription de télécopie.
AND(DoNotCall, HasOptedOutOfEmail, HasOptedOutOfFax)

Avec cette formule, la case Ne pas contacter est cochée uniquement si les trois cases Ne pas appeler, Désinscription des e-mails et Désinscription de télécopie sont cochées. Si l’une des cases (ou deux, voire les trois) n’est pas cochée, la case Ne pas contacter n’apparaîtra pas comme cochée sur la page du contact.

OR()

La fonction OR() est semblable à la fonction AND(). Il lui faut également au moins deux arguments. Cependant, contrairement à AND(), la fonction OR() renvoie la valeur « true » si au moins l’une des conditions est vraie et ne renvoie « false » que si tous les arguments sont faux.


Premier argument = Vrai Premier argument = Faux
Deuxième argument = Vrai Vrai Vrai
Deuxième argument = Faux Vrai Faux

Observons un nouvel exemple, portant toujours sur l’objet Contact. Supposons que vous souhaitiez afficher une case qui est cochée si un contact appartient à la direction d’une organisation. Nous savons qu’une personne exerce de telles fonctions si son nom de fonction commence par « directeur » (par exemple directeur général, directeur d’exploitation, etc.) ou comprend le mot « président » (tel que président-directeur général, vice-président, etc.). Remarquez comment nous utilisons déjà le mot ou pour aborder cette problématique. Cela révèle que vous avez besoin de l’opérateur OR() dans cette formule.

Pour que cette formule fonctionne, nous allons utiliser quelques fonctions de texte (vous pouvez en apprendre plus à leur sujet dans le module Utilisation des formules de texte) :

  • BEGINS(text, compare_text) vous indique si une chaîne (text) commence par une autre chaîne (compare_text).
  • CONTAINS(text, compare_text) vous indique si une chaîne (text) contient une autre chaîne (compare_text) à l’intérieur.
Créez un champ de formule de type Case à cocher intitulé Membre de la direction. Saisissez la formule suivante.
OR(Begins(Title, "Chief"), CONTAINS(Title, "President"))

Comme avec la fonction AND(), il existe plusieurs manières d’écrire OR(). Vous pouvez écrire BEGINS(Fonction, "Directeur") || CONTAINS(Fonction, "Président").

OR(), comme AND(), peut prendre en charge plus de deux arguments. Pour vérifier si le paramètre Fonction, correspondant à l’intitulé de la fonction d’un contact, contient également le mot « Exécutif », essayez le code suivant :
BEGINS(Title, "Chief") ||
CONTAINS(Title, "President") ||
CONTAINS(Title, "Executive")

NOT()

La fonction NOT() fait exactement ce que vous attendez d’elle : elle rend faux tout ce qui est vrai, et inversement. Supposons que vous souhaitiez afficher, sur la page d’un contact, une case à cocher indiquant si des informations essentielles font défaut sur la fiche de ce dernier. Pour cet exemple, nous considérons une fiche de contact comme complète si sa fiche contient un prénom, un nom, un numéro de téléphone, une adresse électronique et une adresse postale. La formule présente la valeur « true » uniquement si aucun de ces champs n’est vide.

Pour vérifier si la fiche du contact contient bien les informations que nous recherchons, utilisez la fonction ISBLANK(). ISBLANK() accepte un champ en tant qu’argument et renvoie la valeur « true » si celui-ci est vide, ou « false » s’il est rempli.
NOT(
  ISBLANK(FirstName) ||
  ISBLANK(LastName) ||
  ISBLANK(Phone) ||
  ISBLANK(Email) ||
  ISBLANK(MailingAddress)
)
Remarque

Remarque

Les espaces et les retours à la ligne entre les fonctions et les opérateurs n’ayant pas d’importance dans les formules, les sauts de ligne et les espaces figurant ici ne sont pas nécessaires. Toutefois, l’utilisation de ces éléments dans votre formule facilite sa lecture. Cela facilite également la tâche de toute personne devant comprendre ou mettre à jour la formule ultérieurement.

Vous connaissez les bases ! Vous pouvez tester cette formule en consultant un contact de votre organisation. Si toutes les informations de contact pertinentes sont présentes, le contact est marqué comme complet et la case Contact complet que vous avez créée est cochée. Si un ou plusieurs des champs que nous avons vérifiés sont vides, la case n’est pas cochée.

Notez que NOT() peut aussi être écrit comme un simple point d’exclamation. En utilisant cette notation, notre formule serait certes un peu différente, mais aurait la même finalité.
!(ISBLANK(FirstName) ||
ISBLANK(LastName) ||
ISBLANK(Phone) ||
ISBLANK(Email) ||
ISBLANK(MailingAddress))

IF()

Vous pouvez utiliser des instructions IF() au lieu d’enchaîner des opérateurs logiques comme AND() et OR(). IF() nécessite trois arguments, sous le format IF(test, résultat, alternative). En termes simples : si test est vrai, évaluez le résultat. Sinon, évaluez l’alternative.

Vous voici donc de retour à l’épicerie et, encore une fois, vous y recherchez un fruit rouge. Vous savez comment retranscrire ce scénario avec AND() et OR(), mais vous pouvez également l’envisager sous la forme d’instructions IF(). Vous commencez par choisir un produit et vérifier s’il s’agit d’un fruit. Si cela en est bien un, vous vérifiez s’il est rouge. Si vous écriviez une formule de sélection de produits à l’aide d’instructions IF(), votre processus de prise de décision ressemblerait à ceci :

IF(Mystery_Produce = "Fruit", Mystery_Produce_Color = "Red", false)
Vous pouvez appliquer dans vos formules cette même logique s’appuyant sur des instructions if. Par exemple, imaginons que vous souhaitiez savoir si un contact est un contact principal. Nous qualifions de contact principal une personne étant membre de la direction (nous le vérifions grâce au champ de formule Membre de la direction que nous avons créé auparavant) et faisant partie du service du marketing. Vous savez déjà comment le faire avec des fonctions AND et OR.
Is_Executive__c && Department = "Marketing"
En utilisant une instruction IF(), la formule ressemble à ceci :
IF(Is_Executive__c, Department = "Marketing", false)

Sachez que vous pouvez imbriquer des instructions IF(). Tout argument dans une instruction IF() peut être une nouvelle instruction logique, notamment une autre instruction IF(). Dans cet exemple, nous qualifierons de contact principal une personne étant membre de la direction, appartenant de plus soit au service marketing situé à San Francisco, soit au service commercial de New York. Nous allons créer une case qui sera uniquement cochée si ces conditions sont remplies.

Nous déterminons la ville dans laquelle le contact est situé, en examinant l’indicatif régional de son numéro de téléphone, 415 correspondant à San Francisco et 212 à New York. En utilisant des opérateurs AND et OR, la formule ressemble à ceci :
Department = "Marketing" &&
Is_Executive__c &&
BEGINS(Phone, "(415)") ||
Department = "Sales" &&
Is_Executive__c &&
BEGINS(Phone, "(212)")
Remarque

Remarque

Les opérateurs logiques, tout comme les opérateurs mathématiques, fonctionnent selon un ordre précis. Ainsi, AND() est toujours évalué avant OR(). Vous pouvez également regrouper des opérateurs logiques entre parenthèses afin que ceux-ci soient évalués dans un ordre particulier.

Nous souhaitons élaborer une formule renvoyant la valeur true si un contact satisfait à toutes les exigences pour être considéré comme contact principal. Premièrement, nous voulons vérifier si le contact est un membre de la direction en utilisant la case à cocher Membre de la direction que nous avons créée précédemment. Si c’est le cas, nous vérifions ensuite s’il appartient au service commercial. Si c’est également le cas, la dernière chose que nous devons vérifier est l’indicatif de son numéro de téléphone. D’autre part, si le contact appartient à la direction, mais n’est pas membre du service commercial, nous vérifions s’il fait partie de celui du marketing. Si tel est le cas, nous vérifions si son numéro de téléphone contient l’indicatif régional de San Francisco. Il est souvent plus simple de représenter une série d’instructions IF() à l’aide d’un arbre de décision. C’est un bon point de départ lorsque vous écrivez une formule contenant IF().


Chaque branche de l’arbre correspond à une condition dans l’une des instructions IF() de notre formule.
IF(Is_Executive__c,
  IF(Department = "Sales", BEGINS(Phone, "(212)"), False),
  IF(Department = "Marketing", BEGINS(Phone, "(415)"), False))

Il est particulièrement important de présenter des formules comme celle-ci avec des sauts de ligne et des espaces clairs. Les personnes qui liront votre formule par la suite sauront ainsi comment vos instructions IF() sont imbriquées.

Exemples de formule de case à cocher

  1. Cette formule de case à cocher désigne une opportunité comme petite si sa probabilité de réalisation est inférieure à 50 % (0,5) et si le chiffre d’affaires attendu est inférieur à 10 000.
    AND(Probability < 0.5, ExpectedRevenue < 10000)
  2. Cette formule définit une requête comme priorité absolue si sa priorité est élevée, qu’elle n’est pas fermée et qu’elle est escaladée ou n’a pas été mise à jour depuis plus d’une semaine. Cette formule fonctionne différemment selon l’endroit où les parenthèses sont placées.
    ISPICKVAL(Priority, "High") &&
    NOT(IsClosed) &&
    (IsEscalated || Days_Since_Last_Update__c > 7)
    Par exemple, la position des parenthèses dans cette formule est légèrement différente afin de vérifier si une requête a une priorité élevée, qu’elle est fermée et qu’elle est escaladée, ou si cela fait plus de sept jours depuis sa dernière mise à jour.
    (ISPICKVAL(Priority, "High") &&
    NOT(IsClosed) && IsEscalated)||
    Days_Since_Last_Update__c > 7
  3. Cette formule affiche une case Appels autorisés qui est cochée si un contact a donné son accord pour être contacté par téléphone. La formule vérifie si le contact a coché la case Ne pas appeler. Si ce n’est pas le cas, la formule vérifie que le champ du numéro de téléphone n’est pas vide.
    IF(NOT(DoNotcall), NOT(ISBLANK(Phone)), false)