AccueilNotre équipeContact

Maitriser les règles de validation

Par Etienne Gaudry
Publié dans Administrateurs
19 juillet, 2022
2 min de lecture
Maitriser les règles de validation

Table des matières

01
⚙️ Configuration
02
🧠 Fonctions communes
03
💼 Règles de validation de comptes
04
👩‍💼 Règles de validation de contacts
05
✍️ Règles de validation de d’opportunités
06
👤 Règles de validation d'utilisateurs, de rôles et de profils
07
🗓️ Règles de validation de dates
08
🔢 Règles de validation de nombres
09
📖 Règles de validation diverses
10
🍭 Astuces Bonus: Désactivation (Utilisateurs/Flux)

Les règles de validation dans Salesforce vérifient que les données saisies par un utilisateur répondent à certains critères. Si la règle est vraie, un message d’erreur s’affiche afin d’expliquer à l’utilisateur ce qu’il doit faire pour corriger l’enregistrement.Observons quelques exemples 📗.


⚙️ Configuration

  • Allez dans Configuration
  • Cliquez sur le gestionnaire d’objets
  • Sélectionnez un objet
  • Choississez Règles de validation à gauche puis Nouveau
  • Saisissez un nom et une description (cf: Convention de nommage)
  • Définissez vos critères dans Formule de condition d’erreur
  • Cliquez sur Vérifier la syntaxe (Optionnel)
  • Définissez un message d’erreur explicite pour l’utilisateur
  • Enregistrez

🧠 Fonctions communes

  • AND() renvoie vrai si tous les éléments contenus sont vrais.
  • OR() renvoie vrai si l’un des éléments contenus est vrais.
  • NOT() renvoie vrai si l’élément contenu est faux (et inversement).
  • ISBLANK(champ) renvoie vrai si le champ est vide.
  • TEXT(champ) convertit une valeur en texte.
  • LEN(champ) renvoie la longueur d’une valeur.
  • ISNEW() renvoie vrai si l’enregistrement est en cours de création.
  • ISCHANGED(champ) renvoie vrai si le champ à changé.
  • PRIORVALUE(champ) renvoie la valeur précédente d’un champ.
  • Plus d'opérateurs et fonctions ici

💼 Règles de validation de comptes

Le chiffre d’affaires doit être positif sans excèder 100 milliards

OR(
  AnnualRevenue < 0,
  AnnualRevenue > 100000000000
)

Le numéro de compte doit être renseigné et numérique

OR(
  ISBLANK(AccountNumber),
  NOT(ISNUMBER(AccountNumber))
)

Le numéro de compte doit comporter sept chiffres quand il n’est pas vide

AND(
  NOT(ISBLANK(AccountNumber)),
  LEN(AccountNumber) <> 7
)

👩‍💼 Règles de validation de contacts

Les champs d’adresse postale sont obligatoires

OR(
  ISBLANK(MailingStreet),
  ISBLANK(MailingCity),
  ISBLANK(MailingCountry)
)

Le numéro de téléphone doit commencer par + (code pays)

LEFT(Phone, 1) <> "+"

✍️ Règles de validation de d’opportunités

La date de livraison est nécessaire pour cette étape

AND(
  OR(
    ISPICKVAL(StageName, "Closed Won"),
    ISPICKVAL(StageName, "Negotiation/Review")
  ),
  ISBLANK(DeliveryDate__c)
)

La date de clôture ne peut pas être antérieure au mois en cours

AND(
  OR(
    ISNEW(),
    ISCHANGED(CloseDate)
  ),
  CloseDate < DATE(YEAR(TODAY()), MONTH(TODAY()), 1) 
)

La date de clôture ne doit pas être un jour passé

CloseDate < TODAY()

Le taux de remise doit être compris entre 0 et 40 %

OR(
  DiscountRate__c < 0, 
  DiscountRate__c > 0.40
)

Le nom doit comporter un trait d’union

FIND( " - ", Name ) = 0

Impossible de supprimer les produits des opportunités clôturées

AND(
  OR(
    ISPICKVAL(StageName, "Closed Won"), 
    ISPICKVAL(StageName, "Closed Lost")
  ), 
  NumberOfProducts__c < PRIORVALUE(NumberOfProducts__c)
)

👤 Règles de validation d’utilisateurs, de rôles et de profils

Seul le propriétaire d’enregistrement peut modifier le champ

AND(
   ISCHANGED(PersonalGoal__c),
   Owner <> $User.Id 
)

Seul le propriétaire ou l’administrateur peuvent changer le champ

AND(
   ISCHANGED(PersonalGoal__c), 
   Owner <> $User.Id, 
   $Profile.Name <> "Custom: System Admin"
)

🗓️ Règles de validation de dates

La date doit être un jour de semaine

CASE(
  MOD(MyDate__c - DATE(1900, 1, 7), 7),
  0, 0,
  6, 0,
  1
) = 0

La date doit faire partie du mois en cours

OR(
  YEAR(MyDate__c) <> YEAR(TODAY()),
  MONTH(MyDate__c) <> MONTH(TODAY())
)

La date doit être le dernier jour du mois

DAY(MyDate__c) <>
IF(
  Month(MyDate__c) = 12, 
  31, 
  DAY(DATE(YEAR(MyDate__c),MONTH(MyDate__c)+1,1) - 1)
)

La date doit être comprise dans une période d’un an à compter d’aujourd’hui

MyDate__c - TODAY() > 365

🔢 Règles de validation de nombres

Le nombre doit être positif et pair

OR(
   MyNumber__c < 0,
   MOD(MyNumber__c, 2) <> 0
)

Le nombre doit être un entier

FLOOR(MyNumber__c) <> MyNumber__c

Le nombre doit être compris entre -50 et 50

ABS(MyNumber__c) > 50

Autoriser l’augmentation mais non la diminution d’un nombre

PRIORVALUE(MyNumber__c) > MyNumber__c

📖 Règles de validation diverses

Interdiction de modifier un champ après la création d’un enregistrement

ISCHANGED(MyField__c) && NOT(ISNEW())

Champs obligatoires quand un prospect est converti

AND(
  IsConverted,
  OR(
    ISBLANK(Phone),
    ISBLANK(Email),
    ISPICKVAL(Rating, “”)
  )
)

Numéro de sécurité sociale: 9-99-99-99-999-999-99

NOT(OR(
  ISBLANK(SocialSecurityNumber__c),
  REGEX(SocialSecurityNumber__c, "[0-9]{1}-[0-9]{2}-[0-9]{2}-[0-9]{2}-[0-9]{3}-[0-9]{3}-[0-9]{2}")
))

Devise valide

CASE(CurrencyIsoCode,
  "USD", 1,
  "EUR", 1,
  "GBP", 1,
  "JPY", 1,
  0
) = 0

Adresse IP: 4 fois 3 chiffres (0 à 255) séparés par des points

NOT(REGEX(IPAddress__c, "^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.)
{3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$" ))

Carte de crédit: 9999-9999-9999-9999 ou 9999999999999999

NOT(REGEX(CreditCardNumber__c , "(((\\d{4}-){3}\\d{4})|\\d{16})?"))

Le site Web doit avoir une extension .com, .org, .net ou .fr

AND(
   RIGHT(WebSite__c, 4) <> ".COM",
   RIGHT(WebSite__c, 4) <> ".com",
   RIGHT(WebSite__c, 4) <> ".ORG",
   RIGHT(WebSite__c, 4) <> ".org",
   RIGHT(WebSite__c, 4) <> ".NET",
   RIGHT(WebSite__c, 4) <> ".net",
   RIGHT(WebSite__c, 6) <> ".FR",
   RIGHT(WebSite__c, 6) <> ".fr"
)

🍭 Astuces Bonus: Désactivation (Utilisateurs/Flux)

Pour avoir la possibilité de désactiver les règles de validation pour un utilisateur, créez un champ sur l’objet User nommé overpassVR, puis ajoutez dans chaque règle

&& NOT($User.OverpassVR__c)

Sur le même principe il est possible de désactiver une règle pour un flux. Par exemple créez une case à coché “Toggle” sur l’objet mis à jour dans votre flux, ajoutez sur ce dernier une variable de formule appelée “ChangeToggle” en utilisant “IF(Toggle__c = TRUE, FALSE,TRUE)”, puis définissez la valeur de Toggle dans votre flux égale à ChangeToggle. Enfin complétez votre règle de validation avec

&& NOT(ISCHANGED(Toggle__c))

Tags

RègleValidationSécurité
Article précédent
Salesforce, c'est quoi ?
Etienne Gaudry

Etienne Gaudry

Responsable Technique Salesforce

Articles Similaires

Top 10 des astuces Excel
Top 10 des astuces Excel
06 juillet, 2022
3 min
© 2023, Tous droits réservés.

Liens rapides

CollaborationÀ proposNous contacter

Réseaux sociaux