Donnez vie à vos documents numériques !
 

Obtenir un nombre entier (arrondi) dans un champ

abracadabraPDF Forums PDF – Général Obtenir un nombre entier (arrondi) dans un champ

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #45592
    Alpha47
    Membre

    Salut à tous,

    un problème simple, une solution simple

    Dans mon formulaire, j’ai un champ A (nombre) calculé automatiquement en fonction de valeurs saisies
    Dans le champ B (nombre) remplissable :
    – si le nombre saisi est inférieur à A, rien (passage au champ suivant)
    – si le nombre et supérieur à A, affichage de A + message  “vous en avez trop demandé”

    Est-ce possible en JavaScript et où le placer en validation ou calcul ?
    Oui je suis nul mais je vais certainement comprendre le script proposé !

    Merci d’avance.

Affichage de 17 réponses de 1 à 17 (sur un total de 17)
  • Auteur
    Réponses
  • #62217
    bebarth
    Maître des clés

    bonjour,
    A mettre en script de validation du champ B :

    Code:
    if(this.event.value > this.getField(“champA”).value) {
        app.alert({cMsg:”Vous en avez trop demandé !”, nIcon:2});
        this.event.value=””;
        this.getField(“champB”).setFocus();
        }

    @+
    :bonjour:

    #62218
    Alpha47
    Membre

    Bonjour bebarth
    Ta réponse est parfaite mais je n’avais pas tout dit … (mea culpa, mea culpa, …)
    Mon formulaire vient d’un version Excel où on utilise couramment les arrondis (quand ça nous arrange) du type ARRONDI((B12*4+4)/10;0) qui définit aussi le nombre de valeur après la virgule.
    Mon champ A est évidemment le résultat d’un calcul qui donne par exemple 2,80. Alors le champ en forme nombre m’affiche bien 0 décimale, mais pour les calculs et utilisation dans les calculs le javascript utilise la valeur avec décimale.
    Donc pour mon problème, je souhaite arrondir le résultat de mon calcul dans le champ A, parce que un choix de 3 est trop grand pour 2,8 …
    La question est encore plus bête que la première  :geek: C’est quoi la formule magique ?  :Smiley08: :Smiley08:
    Merci d’avance

    #62219
    Merlin
    Maître des clés
    Code:
    Math.round(n * 100) / 100;
    #62220
    bebarth
    Maître des clés

    …pas mieux !
    @+
    :bonjour:

    #62221
    Merlin
    Maître des clés

    Ce monsieur nous explique pourquoi c’est mieux de faire autrement mais je ne suis pas certain d’avoir tout compris.  :geek:
    http://www.jacklmoore.com/notes/rounding-in-javascript/

    #62222
    Alpha47
    Membre

    je me suis probablement mal expliqué sur mon objectif
    L’explication de jacklmore est lumineuse évidement,  :doute: et j’en suis aveuglé … je plaisante !
    Pardonnez mon incompétence, comment rédiger mon calcul de B pour obtenir un arrondi sans valeur après la décimale ?

    if( this.getField(“C”).value>=1)
    {this.event.value = ((this.getField(“C”).value*4+4)/10);}
    else
    {this.event.value=””;}
    if (event.value == “0”) {event.value = “”}

    Sur mon formulaire si C = 6, il m’affiche bien l’entier 3 (format Nombre sans décimal), mais en passant la souris dessus, il me montre que le résultat du calcul est 2,8 et pour la suite lorsque je demande 3 pour A, il me dit’ vous avez trop demandé’ (voir post initial en dessous résolu par bebarth)

    Est-ce mieux dit ?  :jerisjaune:
    Merci d’avance à tous les deux

    #62223
    bebarth
    Maître des clés

    bonjour,
    La problématique exposée par ce “Monsieur” est exacte ! La solution aussi puisqu’elle fonctionne…
    Si on veut arrondir un nombre à deux décimales, on doit regarder la valeur de la troisième décimale : si cette troisième décimale est supérieure ou égale à 5, la deuxième décimale doit être incrémentée.
    En ce qui concerne les exponentiels, c’est un peu loin pour moi et je lui fait confiance vu que sa formule fonctionne…

    En ce qui concerne le problème d’Alpha47, je suis un peu perdu avec les champs “A”, “B” ou “C” et ce qu’il faut faire avec…
    J’ai donc fait un mélange, et j’espère qu’avec ces exemples il pourra faire exactement ce qu’il veut !
    La formule “round” est en script de document.
    @+
    :bonjour:

    #62224
    Merlin
    Maître des clés

    je suis un peu perdu avec les champs “A”, “B” ou “C” et ce qu’il faut faire avec…

    Merci, du coup je me sens moins seul.  :geek:

    #62225
    Alpha47
    Membre

    Vous êtes vraiment super.
    je crois que la bonne question eut été : quelle est la façon d’obtenir un nombre arrondi après un calcul ?
    bebarth m’a révélé la fonction round et son emploi dans les exemples judicieux, merci merci  :Smiley01: :Smiley01:
    A bientôt

    #62226
    Alpha47
    Membre

    Encore moi ! Mon enthousiasme d’hier soir a été douché ce matin au moment de la mise en œuvre sur mon formulaire  :Smiley02:  :mur:
    Ja travaille sur Acrobat Pro 10.1.6 sur Mac
    Le formule round ne fonctionne pas sur mon formulaire mais parfaitement sur ton formulaire bebarth
    Une fois la formule round en place sur mon formulaire, Acrobat refuse de me renvoyer quoi que ce soit, même sur des champs nouveaux propres nouvellement créés pour tester
    Alors je me suis rabattu sur la formule initialement proposée “Math.round (n*100/100)” (que je ne savais pas introduire) et là EUREKA  :extra: :extra: (je n’étais pas dans mon bain!) la valeur renvoyée est bien un entier sur mon formulaire !
    Tout fonctionne bien dans la fourchette de valeur que j’utilise.
    Je vous laisse le soin d’apporter une réponse éventuelle au dysfonctionnement sur mon ordi
    NB suggestion : la titre de la discussion devrait être “Obtenir un entier dans un champ”
    Très très cordialement pour votre aide  :bravo:

    #62227
    Merlin
    Maître des clés

    Je ne comprend pas, ça fonctionne ou ça ne fonctionne pas ?
    :Euuuh:  :doute:  :Euuuh:

    NB suggestion : la titre de la discussion devrait être “Obtenir un entier dans un champ”

    On est bien d’accord mais avec SMF changer le titre d’un sujet doit se faire dans chaque message, message par message…  :tutut:
    Alors on va garder l’actuel.  :Smiley03:

    #62228
    Merlin
    Maître des clés

    Salut à tous,

    un problème simple, une solution simple

    Dans mon formulaire, j’ai un champ A (nombre) calculé automatiquement en fonction de valeurs saisies
    Dans le champ B (nombre) remplissable :
    – si le nombre saisi est inférieur à A, rien (passage au champ suivant)
    – si le nombre et supérieur à A, affichage de A + message  “vous en avez trop demandé”

    Est-ce possible en JavaScript et où le placer en validation ou calcul ?
    Oui je suis nul mais je vais certainement comprendre le script proposé !

    Merci d’avance.

    #62229
    Alpha47
    Membre

    Oui Merlin, c’est OK pour moi,ça fonctionne avec Math.round merci  :joker:

    #62230
    bebarth
    Maître des clés

    bonjour,

    Le formule round ne fonctionne pas sur mon formulaire mais parfaitement sur ton formulaire bebarth

    A mon avis tu n’as pas placé la fonction en script de document…
    Tu peux également la placer au début de ton script de calcul :

    Code:
    function round(value, decimals) {
        return Number(Math.round(value+’e’+decimals)+’e-‘+decimals);
    }
    if(this.getField(“champC”).value>=1) {
        this.event.value = round((this.getField(“champC”).value*4+4)/10,0);
    } else {
        this.event.value=””;
    }
    if (event.value == “0”) {event.value = “”}

    @+
    :bonjour:

    #62231
    Merlin
    Maître des clés

    Alors on va garder l’actuel.

    Comme seuls les imbéciles ne changent pas d’avis et comme je viens de me rendre compte que le nouvel habillage du forum ne répète pas le titre sur chaque message je l’ai changé quand même.
    :geek:

    #62232
    Alpha47
    Membre

    Bravo Melin, c’est mieux sans nul doute

    Bonjour bebarth,
    je vois que tu es aussi perfectionniste que moi  :Smiley01:
    Effectivement j’ai juste fait un copier/coller du script sans les deux premières lignes du code proposé = je vais essayer

    Tu parles d’un script de document
    Je ne crois pas que ce soit judicieux de mettre ce code en script document parce que seuls un ou deux champs sont concernés, mais à propos où placer ce script de document pour, par exemple, afficher un champ particulier à l’ouverture du document avec set.Focus() ?
    cordialement

    #62233
    Merlin
    Maître des clés

    où placer ce script de document… ?

    “Script de document” c’est l’emplacement.
    Il faut ajouter ta ligne de script après la déclaration des fonctions.

Affichage de 17 réponses de 1 à 17 (sur un total de 17)
  • Vous devez être connecté pour répondre à ce sujet.