Formatage d'une valeur calculée
-
Formatage d'une valeur calculée
Posté par Patrice sur 16 mars 2023 à 14h08Bonjour à tous,
Dans une valeur Montant_TTC global (qio est un champ de formulaire), je souhaite faire la somme des différents montants TTC qui sont dans une galerie.
Je précise que dans cette galerie, j’ai du utiliser la formule suivante pour afficher correctement les montants :
Text(Value(ThisItem.Montant_TTC;"en-US"); "#.00 €")
Dans la partie Default de la Datacard du Montant-TTC global, j’ai la formule
Sum(gal_Dépenses.AllItems; Value(Montant_TTC;"en-US"))
Et le résultat donne cela : (voir ci-dessous, un montant avec 1 seule décimale alors que je voudrais dans l’exemple 182,30.
J’ai essayé d’utiliser la fonction Text() comme précédemment mais rien ne fonctionne. Même les exemples du bouquin de Pascal Casti ne marche pas dans mon cas. Je pense que je ne maîtrise pas encore les subtilités du formatage de nombre entre les problèmes de “;” et de “,” de l’US au Français.
PostID=H7fnBx7uxTwNBzz
Patrice a répondu Il y a 11 mois, 3 semaines 1 Membre · 15 Réponses -
15 Réponses
-
Bonjour Patrice
Avec la formule Text(Sum(gal_Dépenses.AllItems; Value(Montant_TTC;”en-US”)); “#.00 €”), j’obtiens le résultat souhaité.
Au fait, pourquoi tu ne mets pas “fr-FR” au lieu de “en-US” ?
CommentID=Fmla5zGzrhNaa1J, PostID=H7fnBx7uxTwNBzz
-
Merci Geoffroy. J’avais essayé cette formule mais même si la syntaxe est OK, je n’ai aucun résultat qui s’affiche
Dans la datacard si je change le format en Texte, l’affichage est correct mais j’ai une erreur de conversion
Idem lorsque j’essaye d’utiliser fr-FR, j’ai systématiquement des erreurs de conversion.
SubCommentID=MCgAtcifDPWAReM, CommentID=Fmla5zGzrhNaa1J, PostID=H7fnBx7uxTwNBzz
-
-
Avec Text(Sum(gal_Dépenses.AllItems; Montant_TTC);”#.00″), ça semble marcher.
Mais on ne peut pas afficher la devise sinon ça fait une erreur.
CommentID=LWjRW10Vmj7BTyf, PostID=H7fnBx7uxTwNBzz
-
Effectivement cela fonctionne mais je dois quand même ajouter “en-US”
Text(Sum(gal_Dépenses.AllItems; Value(Montant_TTC; "en-US")); "#.00")
sinon j’ai une erreur de conversion.Il y a quelque chose qui m’échappe dans le choix des langues. Pourtant je suis en fr-FR partout, y compris dans la liste SharePoint et dans l’environnement M 365.
En tous cas merci pour le coup de main 👍
SubCommentID=3AzbwLyQ6alhJMX, CommentID=LWjRW10Vmj7BTyf, PostID=H7fnBx7uxTwNBzz
-
-
Hello,
Attention, le tag de langage se met en 3eme paramètre dans la fonction Text() et non en second, comme c’est également un tag de format reconnu pour les dates, cela ne génère pas d’erreur.
Pour une valeur décimale le code de langage va permettre de choisir le séparateur de décimales : ” , ” ou ” . ” :
CommentID=rg8G3zK2endDyhc, PostID=H7fnBx7uxTwNBzz
-
Je suis d’accord mais ce n’est pas tout à fait mon cas. Je peux utiliser la formule suivante
Text(Sum(gal_Dépenses.AllItems; Value(Montant_TTC; "en-US")); "#.00")
ou bien
Text(Sum(gal_Dépenses.AllItems; Value(Montant_TTC; "en-US")); "#.00"; "fr-FR")
cela ne change rien.
En revanche, si j’écris “#.00 €” à la place de “#.00” j’ai le résultat suivant :
si le format de la datacard est Nombre
si le format de la datacard est Texte, l’affichage est OK mais il y a une erreur
Précision : le champ Montant_TTC dans la formule est une valeur calculée dans une liste SharePoint
SubCommentID=znA0bKzgvlGu1Ju, CommentID=rg8G3zK2endDyhc, PostID=H7fnBx7uxTwNBzz
-
Ok, je vois !
Dans le .Update du datacard, tu dois certainement avoir : Value(DataCardValueXX.Text)
Si tu ajoutes l’unité et que tu mets le datacard value au format texte, il faudra modifier l’update pour enlever les caractères non numériques :
Value(Substitute(DataCardValue3_1.Text,” €”,””))
SubCommentID=tmpgobOJVK8Fjy1, CommentID=rg8G3zK2endDyhc, PostID=H7fnBx7uxTwNBzz
-
Euh, je ne vois pas de .Update dans la datacard. Mon écran est composé de 2 parties. La partie supérieure est un formulaire (associé à la liste NDF) qui affiche les infos globales de la note de frais.
La partie inférieure est une galerie (associée à la liste NDF-Details) qui affiche les différentes dépenses de la note de frais. Cette liste à une colonne de référence qui pointe vers l’ID de la liste NDF (ici c’est l’ID 8)
Donc dans la datacard Montant du formulaire, je veux faire la somme de toutes les dépenses. Comme tu peux le voir ci-dessous cela fonctionne sauf que je ne peux pas mettre de “€” dans le Montant du formulaire. Et je ne comprends pas pourquoi 🤪
SubCommentID=mCF24Ev4SmXmrsx, CommentID=rg8G3zK2endDyhc, PostID=H7fnBx7uxTwNBzz
-
La propriété Update est dans la DataCard elle-même, pas dans le DataCardValue.
SubCommentID=Cti0ge05g3NO68U, CommentID=rg8G3zK2endDyhc, PostID=H7fnBx7uxTwNBzz
-
Tu ne peux pas afficher l’unité, parce que la valeur du total que tu mets dans ton DatacardValue (Montant) doit mettre a jour un champ décimal dans ta source quand tu valides le formulaire.
Si tu mets des chiffes et du texte à cet endroit, tu auras une erreur car ce champ attends une valeur numérique reçoit une chaîne de caractères Alphanumériques.
Si ta colonne “Montant” était de type texte cela fonctionnerait. Mais tu peux faire comme indiqué dans la formule plus haut : remplacer ” €” par une chaine vide et utiliser Value() pour récupérer une valeur décimale à partir du texte et mettre le tout dans l’update du Datacard (pas du DatacardValue)
SubCommentID=XbdWYvAnUCPvOII, CommentID=rg8G3zK2endDyhc, PostID=H7fnBx7uxTwNBzz
-
Il est possible aussi, si tu n’as pas besoin que l’utilisateur puisse modifier le montant total manuellement, de masquer le DatacardValue et de mettre un labelText à la place, où là tu n’auras pas de restrictions sur la nature de la donnée affichée.
il faudra néanmoins laisser la formule actuelle dans le DatacardValue pour que l’update se fasse
SubCommentID=g9bEodNOY2eGlNd, CommentID=rg8G3zK2endDyhc, PostID=H7fnBx7uxTwNBzz
-
DavidZed Désolé, je viens juste de comprendre de quel update tu parles. je cherchais dans DataCardValue alors que tu parlais de DataCard. Bref, j’ai appliqué ta formule et malheureusement cela ne change rien, le sigle € ne s’affiche pas.
J’ai quand fait le test sur un autre formulaire et cela fonctionne bien. La seule différence c’est que je ne fais pas de Sum(). Estc-e que cela peut jouer ?
SubCommentID=t9PYQKQYgXSsrvU, CommentID=rg8G3zK2endDyhc, PostID=H7fnBx7uxTwNBzz
-
DavidZed Bon j’ai l’impression d’être un gros boulet, mais je ne suis pas sûr de comprendre lorsque tu dis :
“Mais tu peux faire comme indiqué dans la formule plus haut : remplacer ” €” par une chaine vide et utiliser Value() pour récupérer une valeur décimale à partir du texte et mettre le tout dans l’update du Datacard (pas du DatacardValue)”
Où dois-je remplacer “€” par une chaine vide ? Dans le Default de la DataCardValue ? Je n’arrive justement pas à écrire “#.00 €” dans la DataCardValue
Text(Sum(gal_Dépenses.AllItems; Value(Montant_TTC; "en-US")); "#.00")
Je précise que j’ai pu le faire sur un autre formulaire où je n’utilise pas de Sum()
Text(Value(ThisItem.'Salaire Brut'; "en-US"); "#.00 €")
SubCommentID=3Cl1gBGiMmbMUYO, CommentID=rg8G3zK2endDyhc, PostID=H7fnBx7uxTwNBzz
-
Il y a normalement juste 3 choses à faire :
Mettre le DatacardValue en mode
texte
(il est surnombre
de base)Mettre la formule
Text(Sum(gal_Dépenses.AllItems; Value(Montant_TTC; "en-US")); "#.00 €")
dans le default du datacardvalueCela va faire une erreur sur le Datacard.Update, que tu vas pouvoir résoudre en ajoutant un substitute pour enlever le ” €” qu’on a ajouté à l’étape d’avant. :
Value(Substitute(DataCardValueXX.Text," €",""))
SubCommentID=Npo0pMLL6zz9kHN, CommentID=rg8G3zK2endDyhc, PostID=H7fnBx7uxTwNBzz
-
OK. alors j’avais bien compris et c’est ce que j’avais essayé tout à l’heure quand je t’ai dit que cela ne fonctionnait pas. J’avais juste oublié de changer le format de la DataCardValue à Texte.
Vraiment merci pour toutes ces astuces. Le Substitute() dans l’Update il fallait y penser 🧐
SubCommentID=7ed1apLhUZXv9OK, CommentID=rg8G3zK2endDyhc, PostID=H7fnBx7uxTwNBzz
-
Connectez-vous pour répondre.