Donnez vie à vos documents numériques !
 

Calculs conditionnels inopérants

abracadabraPDF Forums PDF – Général Calculs conditionnels inopérants

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #45559
    eruaf
    Participant

    Bonjour l’Equipe Magique,

    Je reviens vers vous pour une aide concernant la seule formule de calcul qui ne fonctionne pas dans le fichier joint.
    Dans mon fichier Excel qui me sert de base pour construire le PDF, la formule suivante fonctionne très bien mais je n’arrive pas à la “traduire” en langage JavaScript…

    Voici la formule dans Excel :
    =SI($G$34>0;SOMME($H48:$H54)*(1-70%);SI($C$30>0;SOMME(H48:H54)*(1-15%);SOMME(H48:H54)))

    En plus clair, voici ce que je veux obtenir.
    Si la case “SUPPL” est différente de zéro (case cochée), la case “STCIRCUIT” doit afficher la somme de “ST1JS”+”ST2JS”+”ST1JD”+”ST2JD” *0.30.
    Si la case “Carte” est supérieure à zéro, la case “STCIRCUIT” doit afficher la somme de “ST1JS”+”ST2JS”+”ST1JD”+”ST2JD” *0.85.
    Sinon, la case “STCIRCUIT” doit afficher la somme de “ST1JS”+”ST2JS”+”ST1JD”+”ST2JD”
    Nota : si la case “SUPPL” est cochée, le pourcentage de réduction qui lui est affecté (- 70%) est prioritaire par rapport à celui de “Carte”

    Voilà, j’espère avoir été suffisamment clair dans mes explications …

    Je vous remercie par avance de l’aide que vous pourrez m’apporter.

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

    bonjour,
    c’était presque ça… il manquait juste un “else” !

    if (this.getField(“SUPPL”).value >0) {
    this.event.value = (this.getField(“ST1JS”).value+this.getField(“ST2JS”).value+this.getField(“ST1JD”).value+this.getField(“ST2JD”).value)*0.30
    } else {
    if (this.getField(“Carte”).value >0) {
    this.event.value = (this.getField(“ST1JS”).value+this.getField(“ST2JS”).value+this.getField(“ST1JD”).value+this.getField(“ST2JD”).value)*0.85
    } else {
    this.event.value = this.getField(“ST1JS”).value+this.getField(“ST2JS”).value+this.getField(“ST1JD”).value+this.getField(“ST2JD”).value
    }
    }

    @+
    :bonjour:

    #61872
    eruaf
    Participant

    Bonjour Bebarth,

    Très heureux d’avoir déjà reçu une réponse à mon problème.

    Malheureusement ça ne fonctionne pas correctement. La case “SUPPL” n’a aucune influence sur le résultat ! …
    C’est le critère principal, car si cette case est remplie (chiffres ou lettres), le résultat “STCIRCUIT” doit être réduit de 70%, quel que soit le contenu de “Carte”.
    (Par ailleurs, la case “Carte” continue de fonctionner correctement. Si elle contient un chiffre, le résultat “STCIRCUIT” est bien réduit de 15%).

    J’espère que le Père Noël t’a apporté la bonne baguette magique car la mienne doit être complètement périmée.

    Très cordialement,

    #61873
    bebarth
    Maître des clés

    bonjour,
    Ça marchait avec un chiffre ou un nombre, vu que ton script initial indiquait “if (this.getField(“SUPPL”).value >0)”.
    Si tu veux aussi des lettres, tu change la première ligne :
    if (this.getField(“SUPPL”).value !=0 && this.getField(“SUPPL”).value !=”” && this.getField(“SUPPL”).value !=null) {

    mais il faudrait également mettre un format aux champs “carte” et ” SUPPL” pour vérifier l’exactidude des valeurs rentrées !
    @+
    :bonjour:

    #61874
    eruaf
    Participant

    Bebarth,

    Cette fois ça a l’air de fonctionner correctement. C’est SUPER !
    Merci beaucoup le Magicien.

    Dans la case “TOTAL”, j’ai du remplacer ma formule simpliste (simple addition) par un script inspiré de celui que tu m’a envoyé car les calculs ne se faisaient pas systématiquement.
    Maintenant tout semble fonctionner et je vais pouvoir mettre mon formulaire en ligne.

    MERCI encore Bebarh.
    Toujours présent pour aider.

    #61875
    Merlin
    Maître des clés
    #61876
    eruaf
    Participant

    En effet Merlin, c’est probablement ce qui se passait. Le calcul dans “TOTAL” ne fonctionnait pas systématiquement.
    C’est pourquoi j’ai remplacé la simple addition par un javascript et ça fonctionne correctement maintenant.

    Merci encore à tous pour vos contributions.

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