Donnez vie à vos documents numériques !
 

Duplication de calculs de champs en rangées et en colonnes

abracadabraPDF Forums PDF – Général Duplication de calculs de champs en rangées et en colonnes

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #45316
    Amzen
    Membre

    Bonjour,

    Merci pour ce forum qui m’aide beaucoup.

    Je suis sur un formulaire de facturation et je ne trouve pas de solution à mon problème.
    j’ai une première ligne avec des calculs entre les champs et des menus à choix.
    Chaque ligne a la même structure que la précédente.

    Quand je fais une duplication de la ligne pour en avoir plusieurs, je me retrouve avec un problème très embêtant,
    mes scripts ne s’incrémentent pas (comme pourrait le faire Excel par exemple)
    et du coup je suis obligé d’aller les éditer manuellement pour qu’ils fonctionnent.

    Existe t’il un truc pour incrémenter mes scripts lors de la duplication ?

    Par exemple (en simplifiant) ma ligne parent contient : txtA txtB txtC
    et le script dans le champ txtC fait simplement txtA+txtB

    En dupliquant mes lignes j’ai :
    txtA.0 txtB.0 txtC.0
    mais mon script sera toujours txtA+txtB
    donc inefficace sans revenir dessus.

    En supposant que mes scripts sont complexes, et que j’ai des centaines de lignes. Je me demande si j’ai fait le bon choix en choisissant le PDF comme base.

    Merci beaucoup pour vos réponses.

Affichage de 8 réponses de 1 à 8 (sur un total de 8)
  • Auteur
    Réponses
  • #60069
    alex
    Participant

    Bonjour,
    Il suffit de faire une boucle de calcul !
    Voir mes derniers exemples…

    #60070
    Amzen
    Membre

    Salut Alex

    merci pour ta réponse,
    j’ai donc lu attentivement tes derniers postes,
    mais je dois être aveugle, car je ne trouve rien en rapport avec ma demande.

    Je suis heureux qu’il existe apparemment une solution.

    Dans cet exemple :
    http://abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/duplication-rapide-de-champs-de-formulaire/

    l’auteur a-t-il utilisé la “boucle de calcul” pour remplir correctement les scripts des champs Total.TTC.0 .1 .2 etc…
    ou même si il l’a fait manuellement, pourrais tu s’il te plait m’indiquer quel poste sur le forum serait pertinent pour savoir comment travailler cette “boucle de calcul” ?

    Un grand merci d’avance

    #60071
    Merlin
    Maître des clés

    Dans cet exemple :

    Non, justement dans cet exemple l’auteur (moi) utilise la Convention de dénomination des champs de formulaire pour effectuer un total en colonne en deux clics.
    C’est beaucoup plus simple qu’une boucle mais ça ne fonctionne que dans un sens pour un seul calcul.
    Pour des calculs en rangées puis en colonnes il faut impérativement utiliser des boucles.
    Donc je laisse la parole à Alex…
    :joker:

    #60072
    Amzen
    Membre

    Merci pour tes tutos Merlin ;)

    “J’imagine” qu’il pourrait être possible d’obtenir le nom du champ (en cherchant j’ai trouvé cette fonction : event.target.name) puis d’extraire “l’attribut” de celui ci ou “décomposer la variable”,
    par exemple pour txtC.2 le .2,
    puis dans ma formule de calcul l’ajouter à txtA et à txtB.
    Mais là il me manque quelques éléments, je vais continuer à chercher ici et là.

    #60073
    alex
    Participant

    Regardez le fil “Calcul d’heures dans un formulaire PDF” comme exemple de script…

    #60074
    Amzen
    Membre

    Bonjour,

    Merci pour l’aide…
    franchement je trouve le truc bien complexe par rapport à mon besoin qui au final est plutôt simple.

    J’ai donc fouillé encore et encore pour pondre un petit code javascript.
    Je vous le donne car il peut servir à d’autres .

    Il faut tenir compte qu’il fonctionne uniquement si on part d’une copie, si on fait une copie de copie, il faudra modifier res[] avant la nouvelle copie.
    à introduire dans le script de calcul personnalisé du champ “Total”
    avec C1*C2=Total

    Code:
    var str = event.target.name;
    var res = str.split(“.”);
    var num = (res[1]);
    var cal1 = this.getField(“C1.”+num).value;
    var cal2 = this.getField(“C2.”+num).value;
    var Total = cal1*cal2;
    event.target.value = Total;

    Je ne doute pas une seconde qu’on peut faire encore plus simple,
    mais ainsi les étapes sont décomposées.
    Je prend volontiers la même chose en une seule ligne ;)

    Bonne continuation !

    #60075
    Amzen
    Membre

    petite information au passage,
    en effet cette méthode marche merveilleusement bien pour des calculs simples A+B=C ou autre
    mais fait totalement défaut sur une page complexe, les champs ne se mettent pas forcement à jour immédiatement… un temps de retard, et ça peut devenir n’importe quoi…
    il faudrait ajouter le script :

    Code:
    this.calculateNow();

    pour que le calcul se fasse en temps réel, mais on voit immédiatement une lenteur d’usage.
    Donc la solution est bien de passer par un script global de calcul, ou d’aller voir du coté de excel, qui à mon sens est plus simple pour des choses complexes.
    Je trouve l’outil de création PDF très intéressent, mais ressemble quand même à une usine à gaz (comme un CMS pour faire des sites web).

    Bien à vous

    #60076
    KROMS
    Membre

    Bonjour à tous,

    j’ai un petit soucis d’adaptation de code pour calculer un tarif

    est-ce que quelqu’un (pas en vacances saurait me dire où est l’erreur ?

    var res = event.target.name.replace(/quantite1./,””);
    var b = this.getField(“quantite1.”+res).value;
    if (b {event.value = 10;}
    else
    {event.value = 100;}
    this.calculateNow();

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