Suivez votre progression
Accueil Trailhead
Accueil Trailhead

Utilisation de listes de sélection dans les formules

Objectifs de formation

Une fois cette unité terminée, vous pourrez :
  • Décrire les cas d’utilisation des formules faisant référence à des champs de liste de sélection
  • Utiliser des fonctions de liste de sélection dans des champs de formule
  • Créer une formule référençant un champ de liste de sélection

Présentation de l’utilisation de listes de sélection dans des formules

Un champ de liste de sélection vous permet de choisir une valeur à partir d’une liste préremplie. Bien qu’il ne soit pas possible d’écrire une formule qui renvoie une liste de sélection, vous devrez probablement faire référence à ces dernières dans vos champs de formule.

Supposons que vous ayez besoin d’une règle de validation qui demande à l’utilisateur de saisir une explication s’il choisit « Autre » en tant que paramètre Type d’un compte. Cette formule de règle de validation exige d’un utilisateur qu’il remplisse le champ de texte Autre type s’il définit le type du compte sur « Autre ».

ISPICKVAL(Type, "Other") &&
ISBLANK(Other_Type__c)

Si un utilisateur laisse Other_Type__c vide alors que Type est défini sur « Autre », la règle de validation se déclenche et l’utilisateur ne peut pas enregistrer le formulaire.

Fonctions et opérateurs de liste de sélection courants

Trois fonctions acceptent des valeurs de liste de sélection en tant qu’arguments dans l’ensemble des champs de formule : ISPICKVAL(), CASE() et TEXT().

ISPICKVAL(picklist_field, text_value) renvoie « true » si la valeur de picklist_field correspond à celle de text_value, et « false » dans le cas contraire. Vous pouvez combiner ISPICKVAL() avec PRIORVALUE(). Vous pouvez utiliser cette fonction dans des règles d’attribution, des règles de validation, des mises à jour de champ et des règles de workflow pour rechercher la valeur précédente d’un champ.

Par exemple, cette règle de validation empêche un utilisateur de redéfinir sur « vide » le paramètre Type d’une requête qui, actuellement, est une valeur ayant fait l’objet d’une sélection.

NOT(ISPICKVAL(PRIORVALUE(Type), "")) &&
ISPICKVAL(Type, "")

La règle de validation se déclenche si la valeur précédente de Type n’était pas « vide » et que la valeur actuelle l’est.

CASE() est utile pour écrire des formules pouvant renvoyer différents résultats suivant la valeur d’une liste de sélection. Cette formule, dotée du type de renvoi Nombre, attribue une priorité à une requête en fonction de son type.

CASE(Type,
  "Electrical", 1,
  "Electronic", 2,
  "Mechanical", 3,
  "Structural", 4,
  "Other", 5,
5)

La formule compare la valeur de Type à chaque requête et attribue une priorité quand il trouve une correspondance. Par exemple, les requêtes du type Électrique ont une priorité de 1, celle du type Électronique de 2, etc.

TEXT() convertit une valeur de liste de sélection en une valeur Texte dans la langue principale de votre organisation, et non dans celle de l’utilisateur connecté. Une fois qu’une valeur de liste de sélection a été convertie en une valeur Texte, vous pouvez utiliser des fonctions de texte telles que BEGINS() et CONTAINS().

Cette formule, par exemple, affiche le Statut d’une requête sous forme d’une phrase.

"This case is " & TEXT(Status)
Remarque

Remarque

Vous ne pouvez pas utiliser TEXT() sur des listes de sélection multiple. Il n’est pas conseillé d’utiliser des listes de sélection multiple dans des champs de formule.

Utilisation de champs de liste de sélection dans les formules

Création d’une règle de validation en fonction d’une liste de sélection

C’est souvent une valeur de liste de sélection qui détermine quels sont les autres champs obligatoires dans un enregistrement. ISPICKVAL() et CASE() sont pratiques pour créer des règles de validation qui vérifient si une certaine valeur de liste de sélection est sélectionnée. Par exemple, supposons que vous souhaitiez que les utilisateurs saisissent une raison lorsqu’ils modifient la valeur de liste de sélection Statut en Escaladée.

Commencez par créer un champ de texte personnalisé Motif de l’escalade sur l’objet Requête.

  1. Dans Configuration, accédez à Gestionnaire d’objet via la case Recherche rapide.
  2. Cliquez sur Requête | Champs et relations, puis sur Nouveau.
  3. Sélectionnez Zone de texte, puis cliquez sur Suivant.
  4. Dans Étiquette du champ, saisissez Motif de l’escalade. La section Nom du champ est automatiquement renseignée.
  5. Cliquez sur Suivant.
  6. Cliquez encore une fois sur Suivant, puis sur Enregistrer.

Utilisez maintenant le champ de liste de sélection Statut pour configurer une règle de validation sur le champ Motif de l’escalade.

  1. Cliquez sur le champ Motif de l’escalade que vous venez de créer.
  2. Sous Règles de validation, cliquez sur Nouveau.
  3. Dans Nom de la règle, saisissez Motif_requis.
  4. Dans Formule de condition d’erreur, saisissez la règle de validation suivante :
    AND(
      ISPICKVAL(Status, "Escalated"),
      ISBLANK(Reason_for_Escalating__c)
    )
  5. Dans Message d’erreur, saisissez « Veuillez saisir le motif pour lequel vous modifiez le statut de la requête en Escaladée ».
  6. Cliquez sur Enregistrer.

La règle de validation garantit que, si le Statut de la requête est défini sur Escaladée, le champ Motif de l’escalade n’est pas vide. Testez votre formule en mettant à jour le Statut d’une requête sur Escaladée et en sauvegardant l’enregistrement sans rien saisir dans Motif de l’escalade. Le formulaire affiche votre message d’erreur sous le champ Motif de l’escalade.

Les utilisateurs qui ne saisissent rien dans Motif de l’escalade verront ce message d’erreur.

Attribution d’une priorité à un contact

Comment procéder si vous souhaitez attribuer une priorité aux contacts en fonction de la notation du compte leur étant associé, un paramètre qui correspond à un champ de liste de sélection ? Pour élaborer une telle formule, nous allons utiliser une référence interobjets se rapportant à la notation du compte du contact, ainsi que le champ de formule de case à cocher Membre de la direction créé dans l’unité Utilisation de la logique de base dans les formules de cases à cocher. La case Membre de la direction est cochée si la Fonction d’un contact contient les mots « Dirigeant », « Président » ou « Directeur ».

Étant donné qu’il existe trois notations de compte possibles (Chaud, Tiède et Froid) et deux possibilités pour le champ de formule Membre de la direction (coché ou désélectionné), il existe au total six requêtes différentes. Nous utiliserons CASE() pour attribuer à chacune de ces éventualités une priorité en fonction des conditions suivantes.

Account.Rating Is_Executive_c Priorité
Chaud Oui 1
Chaud Non 1
Tiède Oui 1
Tiède Non 2
Froid Oui 2
Froid Non 3

Créez un champ de formule dans l’objet Contact ayant pour nom Priorité et pour type Nombre.

  1. Dans Configuration, accédez à Gestionnaire d’objet via la case Recherche rapide.
  2. Cliquez sur Contact | Champs et relations, puis sur Nouveau.
  3. Sélectionnez Formule, puis cliquez sur Suivant.
  4. Dans Étiquette du champ, saisissez Priorité. La section Nom du champ est automatiquement renseignée.
  5. Sélectionnez Nombre et définissez le paramètre Décimales sur 0.
  6. Cliquez sur Suivant.
  7. Saisissez la formule suivante :
    CASE(Account.Rating,
      "Hot", 1,
      "Warm", IF(Is_Executive__c, 1, 2),
      "Cold", IF(Is_Executive__c, 2, 3),
    3)

Dans cette formule, nous avons inséré des instructions IF() dans l’instruction CASE(), de taille plus conséquente, pour procéder à une vérification méthodique des six requêtes.

Exemples de listes de sélection

  1. Cette formule renvoie le nombre de jours d’activation d’un compte en fonction du champ de liste de sélection personnalisé Statut du contrat et du champ de date personnalisé Date d’activation du contrat. Si Statut du contrat n’est pas dans l’état Activé, le champ est vide.
    IF(ISPICKVAL(Contract_Status__c, "Activated"),
      TODAY() - Contract_Activated_Date__c, null)
  2. Cette formule utilise le champ de date personnalisé Date d’échéance de paiement et le champ de liste de sélection personnalisé Statut du paiement en relation avec les options Payé et Impayé de l’objet Contrat. Si Statut du paiement est Impayé et que la date d’échéance du paiement est dépassée, le champ de formule affiche Paiement en retard ! Dans le cas contraire, le champ est vide.
    IF(AND(Payment_Due_Date__c < TODAY(),
      ISPICKVAL(Payment_Status__c,
      "UNPAID")),
      "Payment overdue!", null)
  3. Cette règle de validation utilise ISPICKVAL() et PRIORVALUE() afin d’afficher une erreur si quelqu’un tente de faire passer le paramètre Statut d’une piste de « Fermé - converti » ou « Fermé - non converti » à « Ouvert - non contacté ».
    ISPICKVAL(Status, "Open - Not Contacted") &&
    BEGINS(TEXT(PRIORVALUE(Status)), "Closed")
    Si un utilisateur fait passer le paramètre Statut d’une piste de fermé à ouvert, un message d’erreur s’affiche lorsqu’il tente de sauvegarder l’enregistrement. Le message d’erreur qu’un utilisateur voit lorsqu’il enfreint la règle de validation.

Erreurs courantes dans l’utilisation des listes de sélection

  • Les seules fonctions pouvant accepter des champs de liste de sélection en tant que paramètres dans l’ensemble des champs de formule sont ISPICKVAL(), CASE() et TEXT(). L’utilisation de valeurs de liste de sélection dans d’autres fonctions que celles-ci entraîne une erreur. Par exemple, ce champ de formule de case à cocher est conçu pour afficher une case à cocher indiquant si l’Origine de la piste est un « Référent partenaire ». Toutefois, l’opérateur égal à (=) ne prend pas en charge les champs de liste de sélection et cette formule renvoie une erreur.
    LeadSource = "Partner Referral"
    Utilisez plutôt ISPICKVAL() pour vérifier la valeur d’un champ de liste de sélection ou utilisez TEXT() pour convertir une valeur de liste de sélection en donnée de type Texte avant d’utiliser l’opérateur égal à.
    ISPICKVAL(LeadSource, "Partner Referral")
    TEXT(LeadSource) = "Partner Referral"