Masque : uniformiser des références de formats différents
Un masque décide quels caractères d'une valeur restent visibles et lesquels disparaissent. Il sert à ramener au même format des références qui n'ont ni la même longueur ni la même structure. Deux façons de l'utiliser : écrit une fois pour toutes dans la formule, ou variable selon le modèle.
Trois choses différentes portent le mot « masque » dans TimeTonic. La colonne Masque, décrite ici, stocke une règle de format. La fonction APPLY_MASK() est la formule qui l'applique. Le Champ crypté n'a rien à voir : c'est un mécanisme de protection. Voir la dernière section.
Un masque ne s'écrit qu'avec deux caractères, un par caractère de la valeur à traiter :
Caractère
Effet
@
Le caractère d'origine est conservé et affiché.
X ou x
Le caractère est masqué, donc absent du résultat. La casse n'a aucune incidence et les deux peuvent être mélangées.
Sur la valeur 12345678, le masque xxxx@@@@ masque les quatre premiers chiffres et conserve les quatre derniers : le résultat est 5678. Un caractère masqué est omis, il n'est pas remplacé par un signe. Aucun autre caractère n'est accepté : un tiret, un point ou un espace invalide le masque.
Cas 1 : un masque écrit directement dans la formule
C'est le cas le plus simple, et souvent le seul dont vous avez besoin : toutes les lignes suivent le même format. Le masque est écrit en dur dans l'éditeur de formule, entre guillemets. Aucune table de référence n'est nécessaire.
1
Repérez la colonne qui contient la valeur à traiter
Une colonne Texte, par exemple Référence, contenant 12345678.
2
Créez une colonne de type Formule
Puis choisissez la fonction APPLY_MASK dans l'éditeur.
3
Appelez la colonne de valeur
Tapez $ dans l'éditeur : la liste des champs disponibles s'affiche, choisissez Référence.
4
Écrivez le masque comme second paramètre, entre guillemets
En comptant un caractère de masque par caractère de la valeur.
APPLY_MASK($Référence, "xxxx@@@@")
L'ordre des deux paramètres est libre. La fonction reconnaît le masque à sa composition, elle accepte donc aussi bien APPLY_MASK($Référence, "xxxx@@@@") que l'écriture inverse. Par lisibilité, cet article place partout la valeur en premier. Ce qui n'est pas libre : un champ s'appelle avec $nom_du_champ, sans guillemets, alors qu'un masque écrit en dur est du texte et en prend.
Cas 2 : un masque qui suit le modèle
Ce cas devient nécessaire quand toutes vos lignes ne suivent pas le même format. Exemple : plusieurs modèles de chauffages, dont les références n'ont ni la même longueur ni la même structure, et que vous voulez tous ramener à quatre caractères. Chaque modèle reçoit alors son propre masque.
Modèle sélectionné
Référence saisie
Son masque
Référence consolidée
Modèle 1
12345678 (8 caractères)
xxxx@@@@
5678
Modèle 2
1234567890 (10 caractères)
@@@@xxxxxx
1234
Modèle 3
123456 (6 caractères)
x@@@@x
2345
Modèle 4
123456 (6 caractères)
@@x@@x
1245
Le modèle 4 montre qu'un masque peut aussi masquer au milieu, et pas seulement aux extrémités : il conserve les 1er, 2e, 4e et 5e caractères.
La mise en place, étape par étape
1
Dans la table de référence, listez vos modèles
Une ligne par modèle, dans une colonne texte.
2
Ajoutez-y une colonne de type Masque
Puis renseignez, en face de chaque modèle, le masque taillé pour la longueur de ses références.
3
Dans la table de saisie, insérez une colonne d'une table liée qui affiche le champ Masque
C'est elle qui ramène le masque du modèle choisi, et la seule colonne capable d'afficher un champ de type Masque.
4
Sélectionnez le modèle dans la liste
Modèle 1, 2, 3 ou 4 selon les modèles que vous avez créés. La colonne affiche aussitôt le masque correspondant.
5
Créez la colonne Formule
Choisissez APPLY_MASK, appelez le champ de référence, puis le champ ramené à l'étape 3. Cette fois le masque n'est pas entre guillemets : c'est un champ.
APPLY_MASK($Référence, $Masque)
Le résultat se recalcule tout seul. Changez le modèle dans la liste de sélection : la colonne qui porte le masque suit, et la colonne formule affiche immédiatement la référence au format de ce modèle. C'est tout l'intérêt du montage.
À savoir avant de choisir ce montage. Deux autres types de colonne semblent convenir pour ramener le masque, mais aucun ne fonctionne. Une colonne Sélect (liste d'une autre table) renvoie le nom du modèle, par exemple « Modèle 1 », et non son masque : la formule reçoit alors des lettres et un espace, et renvoie une cellule vide. Une colonne Sélection conditionnelle laisse bien choisir la colonne à afficher, mais les colonnes de type Masque ne figurent pas dans la liste proposée.
La règle de longueur, à connaître dans les deux cas
C'est la cause n° 1 des résultats vides. Dès que votre masque contient au moins un X, il doit compter exactement autant de caractères que la valeur à masquer. Un caractère de trop ou de moins, et la formule renvoie une cellule vide, sans message d'erreur.
Le seul cas où la longueur peut différer est celui d'un masque composé uniquement de @ : il tronque alors la valeur à sa propre longueur. Voici les résultats obtenus sur la valeur 12345678 :
Masque
Résultat
Pourquoi
XXXX@@@@
5678
8 caractères pour 8.
xxxxX@@@
678
8 pour 8, avec 5 caractères masqués. Majuscules et minuscules mélangées, sans incidence.
xxxxXX@@@
vide
9 caractères pour 8 : un de trop suffit à tout annuler.
XXX@@@@
vide
7 caractères pour 8 : un de moins produit le même effet.
@@@@
1234
Masque de @ seuls : il tronque à sa longueur, sans exiger l'égalité.
@
1
Même règle, poussée à un seul caractère.
Conséquence pratique dans le cas 2 : le montage suppose que toutes les références d'un même modèle aient la même longueur. Si elles varient, un masque unique ne peut pas les couvrir toutes.
Mon résultat est vide : les quatre causes
Cause
Comment le vérifier
Le masque n'a pas la bonne longueur
Comptez les caractères du masque et ceux de la valeur. Dès qu'il y a un X, les deux doivent être égaux.
La formule reçoit le nom du modèle, pas le masque
Affichez la colonne passée en paramètre. Si vous y lisez « Modèle 1 » au lieu de « xxxx@@@@ », c'est une colonne Sélect et non une colonne d'une table liée.
Le masque du modèle n'est pas renseigné
Retournez dans la table de référence : la cellule Masque de ce modèle est peut-être restée vide.
Le masque contient un caractère interdit
Seuls @ et X ou x sont acceptés. Un tiret, un espace ou un point invalident le masque.
Formater une donnée, ou la protéger ?
Un masque change ce qui est affiché, pas ce qui est stocké : la colonne d'origine contient toujours la valeur complète et reste lisible.
Si votre objectif est la confidentialité et non le format, ce n'est pas le bon mécanisme, ou pas le seul.
Votre besoin
Le mécanisme
Uniformiser des références au même format
Le masque, décrit dans cet article.
N'afficher qu'une partie d'une donnée sensible
Le cas 1, combiné au passage de la colonne d'origine en Invisible. Sans cela, le masque ne protège rien.
Stocker un secret que personne ne doit lire
Le Champ crypté : la donnée est chiffrée, y compris côté serveur, et protégée par un mot de passe dédié.
Aller plus loin
APPLY_MASK()
La fiche de la fonction, sa syntaxe et ses exemples.