Bonjour,
Je cherche à appliquer un masque d'affichage particulier sur un champ numérique, je souhaiterais que si l'on saisi 2,00 que cela affiche finalement 2 donc si en décimal ont à zéro ne pas afficher les décimales. Est-ce possible ?
Merci.
Bonjour,
Je cherche à appliquer un masque d'affichage particulier sur un champ numérique, je souhaiterais que si l'on saisi 2,00 que cela affiche finalement 2 donc si en décimal ont à zéro ne pas afficher les décimales. Est-ce possible ?
Merci.
Bon, j'ai trouvé une solution correct je pense
Dans le code de sortie de mon champ
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 SI ChaîneOccurrence(MoiMême, ".") = 0 ALORS MoiMême..MasqueAffichage = Remplace(MoiMême..MasqueSaisie, ",", "") SINON MoiMême..MasqueAffichage = MoiMême..MasqueSaisie FIN
Salut
une paire de petites choses...
- PartieDécimale sur la valeur à la place de la recherche de "."
- Une troncature à la place de la suppression de la virgule... qui crée un risque normalement non vérifié vu qu'on n'a pas de décimale
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 lc_Mask est une chaine = MoiMême..MasqueSaisie ln_Dec est un entier = Position(lc_Mask,",") // position du séparateur de décimale dans le masque (>1 pour avoir au moins une position en partie entière) SI PartieDécimale(Val(MoiMême)) = 0 _ET_ ln_dec>1 ALORS MoiMême..MasqueAffichage = lc_Mask[[A ln_dec-1]] // Coupe le masque au séparateur de décimale SINON MoiMême..MasqueAffichage = lc_Mask FIN
Bonjour,
R&B m'a coiffé au poteau pour PartieDécimale.
A priori, Modulo() pourrait également faire l'affaire.
Hemgé
Bonjour,
Merci pour votre participation
Pour PartieDécimale, ok c'est effectivement plus propre. Mais je ne comprend pas l'utilité de Position... ?
Re
Pour l'utilité de la "Position", voici un exemple
Avec un masque initial "999,999", dans ton traitement tu remplace le symbole décimal par rien ce qui donne le masque suivant "999999"
Cela fonctionne mais n'est pas exact.
En effet si on a dans le masque, un simple séparateur de millier ou n'importe quoi d'autre (devise devant ou après la valeur) on va avoir
"999 999,99999" qui devient "999 99999999"... et donc 123456 qui s'affichait "123 456,00000" devient "123456"
Alors qu'avec une troncature sur le séparateur de décimale (sur la base de sa position), on va avoir :
"999 999,99999" -> "999 999" (on a pris ce qui précédait le séparateur) et donc 123456 qui s'affichait "123 456,00000" devient "123 456"
CQFD
Je te laisse interpréter dans le masque les autres caractère selon le masque de départ (monétaires etc etc)
Bon courage.
Evidemment ! Je comprends mieux effectivement tu as raison
Il faut que je tronque en affichage uniquement sur la partie entière du masque de saisie d’où le position pour récupérer uniquement cette partie.
Merci![]()
Ceci également fonctionne et je trouve ça plus simple, vous pensez cela correct ?
Merci.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 nMonMasque est un numérique = MoiMême..MasqueSaisie SI PartieDécimale(MoiMême) = 0 ALORS MoiMême..MasqueAffichage = PartieEntière(nMonMasque) SINON MoiMême..MasqueAffichage = MoiMême..MasqueSaisie FIN
C'est très bon, mais
1- Juste tu ne tiens pas du tout compte des différents types de séparateurs décimales et milliers : il existe des séparateur de milliers qui utilisent le "." les espaces ou les virgules.
2- Dans ton invocation de PartieEntière, tu exploites le trans-typage natif du WLanguage (une plaie ce truc) et si tu as des caractères dans ton format (des points, virgules et autres espaces), ils risquent de déformer ton rendu qui sera un entier (résultat de la fonction) alors affecté à une chaine (le masque) : c'est ce nouveau CAST qui est risqué.
NB : je soulève ici un effet de bord peu probable mais si le projet est configuré pour exploiter les paramètres linguistique de la machine cliente (ce qui devrait toujours être le cas) et que le projet est utilisé sur une configuration non prévue... les problèmes vont surgir.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager