Taille de police :

×

Lecture de la page :

Lire Test2

Mailing / publipostage : Afficher des nombres réels en toutes lettres

0
(0)

Demande d'un utilisateur : Dans un publipostage, afficher une valeur monétaire avec décimales en lettres.

Problématique

Microsoft offre aux utilisateurs des commutateurs de champ permettant de préciser le format d'affichage de ceux-ci (voir Liste des codes de champ dans Word - Support Microsoft).

Nous trouvons notamment \*CardText qui permet d'afficher la valeur "45 122" par exemple sous la forme suivante : "quarante-cinq mille cent vingt-deux". Cela semble répondre directement à la demande.

Mais cette solution n'est pas pleinement satisfaisante car elle possède certaines limitations qui peuvent être gênantes :

  • La valeur doit être entre 0 et 999 999.
  • Si la valeur possède des décimales, elle sera arrondie à l'euro entier le plus proche (avec "2,7", on aura "trois").
  • La valeur doit être positive.

Solution proposée

Je vous propose une solution allant jusqu'à 999 millions (adaptable si on a besoins de dépasser cette limite), arrondissant au centime d'euro et acceptant les valeurs négatives.

Déclaration de signets

On commence par déclarer/saisir les signets suivant au début du document : La valeur de départ est le champ de fusion "Montant_Facture".

{ SET "Val" { MERGEFIELD Montant_Facture } }
{ SET "Val_ab" { = ABS( { Val } ) } }
{ SET "Val_pe" { = INT({ Val_ab } ) } }
{ SET "Val_pd" { = ({ Val_ab } - { Val_pe })*1OO } }
{ SET "Val_c3" { = INT({ Val_ab }/1000000) } }
{ SET "Val_c21" { = INT({ Val_ab } - ({ Val_c3 }*1000000)) } }
  • Val : Référence le champ contenant la valeur et ainsi en cas de changement de champs seul cette valeur est à adapter.
  • Val_ab : Valeur absolue de la valeur.
  • Val_pe : Partie entière de la valeur.
  • Val_pd : Partie décimale de la valeur.
  • Val_c3 : Partie de la classe des millions de la valeur (par exemple le 12 de 12 345 678,9).
  • Val_c21 : Partie de la classe des milliers et des unités de la valeur (par exemple le 345 678 de 12 345 678,9).

Rappels :

  • Pour basculer l'affichage entre le code des champs et leurs valeurs : Alt + F9.
  • Pour mettre à jour les valeurs des champs : F9.
  • Pour créer un champ (les accolades) : Ctrl + F9 (! Saisir directement les accolades ne fonctionne pas !).

Formule

À l'endroit où l'on doit s'afficher la valeur, on saisit la formule.

{ IF { Val } < 0 "moins " ""}{ IF { Val_c3 } > 0 "{ Val_c3 \*CardText } million" ""}{ IF { Val_c3 } > 1 "s" ""}{ IF { Val_c3 } > 0 " " ""}{ IF { = AND ({ Val_c21 } = 0 ; { Val_c3 } > 0) } = 1 "d'" "{ Val_c21 \*CardText } " }{ IF { Val_ab } > 1 "euros" "euro"} et { Val_pd \*CardText } { IF { Val_pd } > 1 "centimes" "centime"}

Capture d'écran de la formule

Attention aux espaces symbolisés ici par des points.

Texte de la formule

Interprétation de la formule

{ IF { Val } < 0 "moins " ""} => On affiche le texte "moins" et un espace pour les valeurs négatives.

{ IF { Val_c3 } > 0 "{ Val_c3 \*CardText } million" ""} => On affiche la classe des millions, un espace et le texte "million" si la classe des millions existe.

{ IF { Val_c3 } > 1 "s" ""} ) => On ajoute un "s" s’il y a plusieurs millions.

{ IF { Val_c3 } > 0 " " ""}   => On affiche un espace si la classe des millions existe.

{ IF { = AND ({ Val_c21 } = 0 ; { Val_c3 } > 0) } = 1 "d'" "{ Val_c21 \*CardText } " } => On gère les cas comme 2 000 000 > "Deux millions d'euros".

{ IF { Val_ab } > 1 "euros" "euro"} => On ajoute le texte "euro" ou "euros".

 et => On ajoute un espace, le texte "et", un espace.

{ Val_pd \*CardText } => On ajoute la partie "décimale" et un espace (à l’extérieur des accolades), les décimales seront supprimées par \*CardText.

{ IF { Val_pd } > 1 "centimes" "centime"} => On ajoute le texte "centimes" ou "centime".

Merci pour votre attention bienveillante.

Article intéressant ?

Cliquez sur une étoile pour noter cet article !

Note moyenne 0 / 5. Nombre de votes : 0

Aucun vote pour l'instant ! Soyez le premier à noter ce post.

Nous sommes désolés que cet article ne vous ait pas été utile !

Améliorons cet article !

Dites nous comment nous pouvons améliorer cet article ?

Publications similaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *