Donnez vie à vos documents numériques !
 

Tableau de conversion

abracadabraPDF Forums PDF – Général Tableau de conversion

  • Créateur
    Sujet
  • #76510
    homer
    Participant

    Bonjour,

    Comment allez vous ?

    Je suis entrain de bloquer sur un tableau de conversion, j’ai su en réaliser 1, mais le deuxieme je bloque cela fais deux jours que je suis deçu !
    Pouvez vous voir ?

    Merci a vous

    Cordialement

    Attachments:
    You must be logged in to view attached files.
Affichage de 33 réponses de 1 à 33 (sur un total de 33)
  • Auteur
    Réponses
  • #76512
    Merlin
    Maître des clés

    Bonjour

    Dès l’ouverture et à chaque clic la Console renvoie cette erreur :

    TypeError: this.getField(...) is null
    4:Document-Level:InitListes

    Traduction : il y a un nom de champ « null » (introuvable) à la ligne 4 du script « InitListe »

    À l’évidence ça vient du fait que dans le script il y a un point séparateur dans les noms de champs et que dans le document il n’y a pas de champs avec point séparateur.

     

    L’utilisation de la Console est importante, je te recommande la lecture de cet article :

    La Console JavaScript d’Acrobat

    Attachments:
    You must be logged in to view attached files.
    #76515
    homer
    Participant

    Bonjour,

    Voila tout ce que j’ai su faire la je bloque, j’ai vu l’article mais la je nage, il y a que quelle que convertion qui fonction,

    Pouvez vous voir, j’ai meme essayé de trouver avec les ia !

    Bonne journée

    Cordialement

    Attachments:
    You must be logged in to view attached files.
    #76517
    Merlin
    Maître des clés

    Bonjour

    Ton document est une usine à gaz dans laquelle il est difficile de deviner qui fait quoi et d’où viennent les erreurs. C’est d’autant plus difficile quand on n’en est pas l’auteur.

     

    Il y a toujours une erreur qui revient sans cesse quoi qu’on fasse :
    GeneralError: Operation failed.
    Field.setItems:28:AcroForm:Valeuractuelleconv0:Calculate

    ==> Sauf rare exception c’est toujours une mauvaise idée de mettre des scripts de calcul dans des listes déroulantes, de plus dans celle-ci (Valeuractuelleconv0) et sa voisine il y a aussi un script « souris relâchée » qui ne fonctionne pas non plus, et dont je comprend pas l’utilité puisque que s’il fonctionnait il devrait remplir cette liste avec les items qu’elle contient déjà…

     

    Je crois que tu devrais supprimer le tableau du bas et en refaire un neuf à partir du tableau central (Poids, LBS, Miles…) qui lui semble bien fonctionner.

    Par ailleurs ce tableau du bas a une ergonomie fantaisiste et sa logique est impénétrable : pourquoi reporter les unités saisies dans les listes dans ces deux immenses champs ? Quelle en est l’utilité ?

    Ce sont des complications inutiles et je crois que ça fonctionnerait bien mieux sans. Comme le tableau du milieu.

     

    L’intérêt des listes déroulantes c’est qu’elles peuvent avoir deux valeurs :

    • la valeur d’affichage (ce que voit l’utilisateur),
    • la valeur d’exportation, qui peut être utilisée dans un calcul par exemple.

    Dans le cas d’un tableau de conversion ça permettrait d’utiliser une seule formule de calcul, qui serait alimentée par le champ (texte) contenant la quantité à convertir et par la valeur d’exportation de la liste déroulante.

     

    Exemple.

    L’intitulé « KM vers Miles » serait la valeur d’affichage, et « 1.609 » serait la valeur d’exportaion.

    L’intitulé « Miles vers KM » serait la valeur d’affichage, et « 0.621 » serait la valeur d’exportaion.

    Etc.

    Ensuite le script multiplierait la quantité saisie par la valeur d’exportation en appliquant toujour la même formule de calcul, seules les valeurs utilisées changeraient.

    Avantages :

    • une seule liste déroulante
    • pas besoin de script

    Voit comment est fait l’exemple « Conversions-exemple.pdf » ci-joint :

    • la liste contient des valeurs d’affichage (item) et des valeurs d’exportation,
    • le champ « Résultat » utilise un simple calcul « produit »,
    • pour que le calcul fonctionne en temps réel il est important de cocher l’option « Sélectionner la valeur immédiatement » (en anglais sur ma capture d’écran).

    Quand tu auras déjà ça qui fonctionnera on pourra utiliser une autre liste déroulante ou bien un calcul plus complexe pour les unités qu’on ne peut pas convertir avec une simple multiplication, comme les températures par exemples.

    Attachments:
    You must be logged in to view attached files.
    #76520
    bebarth
    Maître des clés

    bonjour,

    Ton document est une usine à gaz dans laquelle il est difficile de deviner qui fait quoi et d’où viennent les erreurs. C’est d’autant plus difficile quand on n’en est pas l’auteur.

    Pareil !!!
    Je pense que ce serait plus compréhensible de faire des listes mères/filles où on pourrait choisir les unités à convertir.

    @+
    😎

    #76521
    bebarth
    Maître des clés

    bonjour,

    Ton document est une usine à gaz dans laquelle il est difficile de deviner qui fait quoi et d’où viennent les erreurs. C’est d’autant plus difficile quand on n’en est pas l’auteur.

    Pareil !!!
    Je pense que ce serait plus compréhensible de faire des listes mères/filles où on pourrait choisir les unités à convertir.

    @+
    😎

    #76522
    homer
    Participant

    Bonjour,

    Merci e vos messages, j’essai de le retravailler et de faire pour qu’il soit plus simple, j’ai voulu faire cette page car par moment je suis formateur quand je ne suis pas dessinateur industriel, vu que par moment je suis tombé sur des personnes ne savaient pas faire de simple conversion

    Cordialement

    #76523
    homer
    Participant

    Re,

    J’ai revu l’ensemble du tableau, voila maintenant ce que j’ai

    Bonne soirée

    Condialement

    Attachments:
    You must be logged in to view attached files.
    #76525
    Merlin
    Maître des clés

    Bonjour

     

    Il y a toujours ce script en action « souris relâchée » qui déclenche cette erreur :
    TypeError: this.getItemAt is not a function
    4:Field:Mouse Up

    Je ne comprend toujours pas son utilité parce que:

    • s’il fonctionnait il remplirait la liste déroulante avec les items qu’elle contient déjà
    • le reste fonctionne quand même, donc il ne sert à rien d’autre qu’à afficher la Console

    Voir capture 1

     

    Par ailleurs je crois qu’avant de s’occuper des scripts il faudrait revoir l’ergonomie de ce tableau.

    D’abord les intitulés : remplacer « mètre » par « distance », « valeur désirée » par « valeur convertie », etc.

    Et surtout revoir la cohérence des listes car là il permet de convertir des choux en carottes, par exemple dans la capture 2 on peut convertir des CM2 en décimètres.

    Ce qui n’a aucun sens.

     

     

    Attachments:
    You must be logged in to view attached files.
    #76528
    homer
    Participant

    Bonjour,

    Oui je comprends mais si on reste bien dans la bonne bonne unité cela fonctionne,

    je comprends que convertir des M en M² cela n’est pas possible,

    Sinon comment ce que vous me dite :
    Il y a toujours ce script en action « souris relâchée » qui déclenche cette erreur :
    TypeError: this.getItemAt is not a function
    4:Field:Mouse Up

    la pour moi cela est trop dur a comprendre, et a enlever cela, et comment voyez vous cela de votre point de vu ?

    Merci a vous pour vos remarque et votre temps que et a vous Merlin et Bebarth qui prenez du temps a me repondre

    Cordialement

    #76529
    bebarth
    Maître des clés

    Bonjour,
    j’essaie de re faire un exemple de listes mères/filles rapidement.

    @+
    😎

    #76530
    bebarth
    Maître des clés

    bonjour,
    Voici un exemple de convertisseurs basé sur des menus déroulants mère/filles. J’espère ne pas avoir fait d’erreurs de conversion…
    Si ça t’intéresse je te laisse l’adapter à tes besoins. Si tu as besoin d’un coup de main je pourrais t’aider (si tu n’es pas trop pressé).

    // Script de document : Tableau des unités par famille
    var lesUnites={
    "Distance": [
    ["nanomètre (nm)","nm"],
    ["micromètre (µm)","µm"],
    ["millimètre (mm)","mm"],
    ["centimètre (cm)","cm"],
    ["décimètre (dm)","dm"],
    ["mètre (m)","m"],
    ["décamètre (dam)","dam"],
    ["hectomètre (hm)","hm"],
    ["kilomètre (km)","km"],
    ["pouce (in)","in"],
    ["pied (ft)","ft"],
    ["yard (yd)","yd"],
    ["mile (mi)","mi"]
    ],
    "Poids": [
    ["milligramme (mg)","g"],
    ["centigramme (cg)","cg"],
    ["décigramme (dg)","dg"],
    ["gramme (g)","g"],
    ["décagramme (dag)","dag"],
    ["hectogramme (hg)","hg"],
    ["kilogramme (kg)","kg"],
    ["quintal (q)","q"],
    ["tonne (t)","t"],
    //
    ["once (oz)","oz"],
    ["livre (lb)","lb"]
    ],
    "Surface": [
    ["millimètre carré (mm^2)","mm2"],
    ["centimètre carré (cm^2)","cm2"],
    ["décimètre carré (dm^2)","dm2"],
    ["mètre carré (m^2)","m2"],
    ["kilomètre carré (km^2)","km2"],
    ["centiare (ca)","ca"],
    ["are (a)","a"],
    ["hectare (ha)","ha"],
    //
    ["square inch (in2)","yd2"],
    ["square foot (ft2)","ft2"],
    ["square yard (yd2)","yd2"],
    ],
    "Volume": [
    ["millilitre (ml)","ml"],
    ["centilitre (cl)","cl"],
    ["décilitre (dl)","dl"],
    ["litre (l)","l"],
    ["décalitre (dal)","l"],
    ["hectolitre (hl)","l"],
    //
    ["millimètre cube (mm^3)","mm3"],
    ["centimètre cube (cm^3)","cm3"],
    ["décimètre cube (dm^3)","dm3"],
    ["mètre cube (m^3)","m3"],
    //
    ["pinte US (US fl)","pt_us"],
    ["gallon US (gal)","gal_us"],
    ["once liquide US (fl oz)","floz_us"]
    ]
    };

    // Script de touches personnalisé du champ Mère "typeUnite"
    if (!event.willCommit) {
    this.getField("uniteInitiale").clearItems();
    this.getField("uniteConvertie").clearItems();
    if (event.changeEx!=0) {
    this.getField("uniteInitiale").setItems(lesUnites[event.changeEx]);
    this.getField("uniteConvertie").setItems(lesUnites[event.changeEx]);
    switch (event.changeEx) {
    case "Distance":var uniteBase="m"; break;
    case "Poids":var uniteBase="kg"; break;
    case "Surface":var uniteBase="m2"; break;
    case "Volume":var uniteBase="l"; break;
    }
    this.getField("uniteInitiale").value=uniteBase;
    this.getField("uniteConvertie").value=uniteBase;
    }
    }

    // Script de calcul du champ "valeurConvertie"
    var typeUnite=this.getField("typeUnite").value;
    var uniteInitiale=this.getField("uniteInitiale").value;
    var uniteConvertie=this.getField("uniteConvertie").value;
    var valeurInitiale=this.getField("valeurInitiale").value;
    if (valeurInitiale=="" || typeUnite=="" || uniteInitiale=="" || uniteConvertie=="") {
    event.value="";
    } else {
    valeurInitiale=Number(valeurInitiale);
    // 1 - Conversion vers l'unité de base
    // 2 - Conversion à partir de l'unité de base
    switch (typeUnite) {
    case "Distance":
    // Unité de base -> mètre
    switch (uniteInitiale) {
    case "nm": var base=valeurInitiale/1000000000; break;
    case "µm": var base=valeurInitiale/1000000; break;
    case "mm": var base=valeurInitiale/1000; break;
    case "cm": var base=valeurInitiale/100; break;
    case "dm": var base=valeurInitiale/10; break;
    case "m": var base=valeurInitiale; break;
    case "dam": var base=valeurInitiale*10; break;
    case "hm": var base=valeurInitiale*100; break;
    case "km": var base=valeurInitiale*1000; break;
    //
    case "in": var base=valeurInitiale*0.0254; break;
    case "ft": var base=valeurInitiale*(0.0254*12); break;
    case "yd": var base=valeurInitiale*(0.0254*12*3); break;
    case "mi": var base=valeurInitiale*(0.0254*12*3*1760); break;
    }
    switch (uniteConvertie) {
    case "nm": var resultat=base*1000000000; break;
    case "µm": var resultat=base*1000000; break;
    case "mm": var resultat=base*1000; break;
    case "cm": var resultat=base*100; break;
    case "dm": var resultat=base*10; break;
    case "m": var resultat=base; break;
    case "dam": var resultat=base/10; break;
    case "hm": var resultat=base/100; break;
    case "km": var resultat=base/1000; break;
    //
    case "in": var resultat=base/0.0254; break;
    case "ft": var resultat=base/(0.0254*12); break;
    case "yd": var resultat=base/(0.0254*12*3); break;
    case "mi": var resultat=base/(0.0254*12*3*1760); break;
    }
    break;
    case "Poids":
    // Unité de base -> kilogramme
    switch (uniteInitiale) {
    case "mg": var base=valeurInitiale/1000000; break;
    case "cg": var base=valeurInitiale/100000; break;
    case "dg": var base=valeurInitiale/10000; break;
    case "g": var base=valeurInitiale/1000; break;
    case "dag": var base=valeurInitiale/100; break;
    case "hg": var base=valeurInitiale/10; break;
    case "kg": var base=valeurInitiale; break;
    case "q": var base=valeurInitiale*100; break;
    case "t": var base=valeurInitiale*1000; break;
    //
    case "oz": var base=valeurInitiale*(0.45359237/16); break;
    case "lb": var base=valeurInitiale*0.45359237; break;
    }
    switch (uniteConvertie) {
    case "mg": var resultat=base*1000000; break;
    case "cg": var resultat=base*100000; break;
    case "dg": var resultat=base*10000; break;
    case "g": var resultat=base*1000; break;
    case "dag": var resultat=base*100; break;
    case "hg": var resultat=base*10; break;
    case "kg": var resultat=base; break;
    case "q": var resultat=base/100; break;
    case "t": var resultat=base/1000; break;
    //
    case "oz": var resultat=base/(0.45359237/16); break;
    case "lb": var resultat=base/0.45359237; break;
    }
    break;
    case "Surface":
    // Unité de base -> mètre carré
    switch (uniteInitiale) {
    case "mm2": var base=valeurInitiale/1000000; break;
    case "cm2": var base=valeurInitiale/10000; break;
    case "dm2": var base=valeurInitiale/100; break;
    case "m2": var base=valeurInitiale; break;
    case "km2": var base=valeurInitiale*1000000; break;
    case "ca": var base=valeurInitiale; break;
    case "a": var base=valeurInitiale*10000; break;
    //
    case "in2": var base=valeurInitiale*(0.0254*0.0254); break;
    case "ft2": var base=valeurInitiale*((0.0254*12)*(0.0254*12)); break;
    case "yd2": var base=valeurInitiale*((0.0254*12*3)*(0.0254*12*3)); break;
    }
    switch (uniteConvertie) {
    case "mm2": var resultat=base*1000000; break;
    case "cm2": var resultat=base*10000; break;
    case "dm2": var resultat=base*100; break;
    case "m2": var resultat=base; break;
    case "km2": var resultat=base/1000000; break;
    case "ca": var resultat=base; break;
    case "a": var resultat=base/10000; break;
    //
    case "in2": var resultat=base/(0.0254*0.0254); break;
    case "ft2": var resultat=base/((0.0254*12)*(0.0254*12)); break;
    case "yd2": var resultat=base/((0.0254*12*3)*(0.0254*12*3)); break;
    }
    break;
    case "Volume":
    // Unité de base -> litre
    switch (uniteInitiale) {
    case "ml": var base=valeurInitiale/1000; break;
    case "cl": var base=valeurInitiale/100; break;
    case "dl": var base=valeurInitiale/10; break;
    case "l": var base=valeurInitiale; break;
    case "dal": var base=valeurInitiale*10; break;
    case "hl": var base=valeurInitiale*100; break;
    //
    case "mm3": var base=valeurInitiale/1000000; break;
    case "cm3": var base=valeurInitiale/1000; break;
    case "dm3": var base=valeurInitiale; break;
    case "m3": var base=valeurInitiale*1000; break;
    //
    case "pt_us": var base=valeurInitiale*(3.785411784/8); break;
    case "gal_us": var base=valeurInitiale*3.785411784; break;
    case "floz_us": var base=valeurInitiale*(3.785411784/128); break;
    }
    switch (uniteConvertie) {
    case "ml": var resultat=base*1000; break;
    case "cl": var resultat=base*100; break;
    case "dl": var resultat=base*10; break;
    case "l": var resultat=base; break;
    case "dal": var resultat=base/10; break;
    case "hl": var resultat=base/100; break;
    //
    case "mm3": var resultat=base*1000000; break;
    case "cm3": var resultat=base*1000; break;
    case "dm3": var resultat=base; break;
    case "m3": var resultat=base/1000; break;
    //
    case "pt_us": var resultat=base/(3.785411784/8); break;
    case "gal_us": var resultat=base/3.785411784; break;
    case "floz_us": var resultat=base/(3.785411784/128); break;
    }
    break;
    }
    if (isNaN(resultat)) event.value="";
    else event.value=util.printf("%.6f",resultat).replace(/\.?0+$/,"");
    }

    // Script de touches personnalisé du champ "valeurInitiale"
    if(!event.willCommit) {
    if (event.change==",") event.change="."
    var aTester=event.value.split("");
    aTester.splice(event.selStart, event.selEnd-event.selStart, event.change);
    var testeChaine=aTester.join("");
    event.rc=/^([1-9]\d*([.]?\d+)?)|([0]([.]\d*)?)$/.test(testeChaine);
    } else {
    event.rc=event.value=="" || /^([1-9]\d*([.]\d+)?)|([0][.]\d+)$/.test(event.value);
    }

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    #76532
    homer
    Participant

    Bonjour,

    ce qui est fais est une tuerie !!!!! mais je ne comprends pas j’ai effacé les unité anglais ou americaine autant dans le script et menu deroualnt, mais apres une nouvelle ouverture elle réapparaisse !!!!

    La je ne comprend plus rien ?

    Merci beaucoup en tout cas !!!

    Cordialment

     

    #76533
    homer
    Participant

    et meme dans le menu deroulant si je veux supprimer ou modifier il n’accept pas !

    je ne peux pa refaire la meme structure que j’ai fais dans mon tableau, on dirait qu’il est verouillé

    J’ai essayé de placer celui la

    case « Temps »:
    // Unité de base -> seconde
    switch (uniteInitiale) {
    case « siècle »: var base=valeurInitiale*3155760000; break;
    case « décennie »: var base=valeurInitiale*315576000; break;
    case « an »: var base=valeurInitiale*31557600; break;
    case « mois »: var base=valeurInitiale*2629800; break;
    case « semaine »: var base=valeurInitiale*604800; break;
    case « jour »: var base=valeurInitiale*86400; break;
    case « h »: var base=valeurInitiale*3600; break;
    case « min »: var base=valeurInitiale*60; break;
    case « s »: var base=valeurInitiale; break;
    case « ms »: var base=valeurInitiale/1000; break;
    }
    switch (uniteConvertie) {
    case « siècle »: var resultat=base/3155760000; break;
    case « décennie »: var resultat=base/315576000; break;
    case « an »: var resultat=base/31557600; break;
    case « mois »: var resultat=base/2629800; break;
    case « semaine »: var resultat=base/604800; break;
    case « jour »: var resultat=base/86400; break;
    case « h »: var resultat=base/3600; break;
    case « min »: var resultat=base/60; break;
    case « s »: var resultat=base; break;
    case « ms »: var resultat=base*1000; break;
    }

    Et de d’enlever les unité hors france par exemple auatnt dans les menu et scriptmais rien ne marche !!!

    var type = this.getField(« typeUnite »).value;
    var valeurInitiale = this.getField(« valeurInitiale »).value;
    var uniteInitiale = this.getField(« uniteInitiale »).value;
    var uniteConvertie = this.getField(« uniteConvertie »).value;
    var base = 0;
    var resultat = 0;

    if (valeurInitiale !== «  ») {
    switch (type) {
    case « Longueur »:
    // Unité de base -> mètre
    switch (uniteInitiale) {
    case « nm »: var base=valeurInitiale/1000000000; break;
    case « µm »: var base=valeurInitiale/1000000; break;
    case « mm »: var base=valeurInitiale/1000; break;
    case « cm »: var base=valeurInitiale/100; break;
    case « dm »: var base=valeurInitiale/10; break;
    case « m »: var base=valeurInitiale; break;
    case « dam »: var base=valeurInitiale*10; break;
    case « hm »: var base=valeurInitiale*100; break;
    case « km »: var base=valeurInitiale*1000; break;
    }
    switch (uniteConvertie) {
    case « nm »: var resultat=base*1000000000; break;
    case « µm »: var resultat=base*1000000; break;
    case « mm »: var resultat=base*1000; break;
    case « cm »: var resultat=base*100; break;
    case « dm »: var resultat=base*10; break;
    case « m »: var resultat=base; break;
    case « dam »: var resultat=base/10; break;
    case « hm »: var resultat=base/100; break;
    case « km »: var resultat=base/1000; break;
    }
    break;

    case « Volume »:
    // Unité de base -> litre
    switch (uniteInitiale) {
    case « ml »: var base=valeurInitiale/1000; break;
    case « cl »: var base=valeurInitiale/100; break;
    case « dl »: var base=valeurInitiale/10; break;
    case « l »: var base=valeurInitiale; break;
    case « dal »: var base=valeurInitiale*10; break;
    case « hl »: var base=valeurInitiale*100; break;
    case « mm3 »: var base=valeurInitiale/1000000; break;
    case « cm3 »: var base=valeurInitiale/1000; break;
    case « dm3 »: var base=valeurInitiale; break;
    case « m3 »: var base=valeurInitiale*1000; break;
    }
    switch (uniteConvertie) {
    case « ml »: var resultat=base*1000; break;
    case « cl »: var resultat=base*100; break;
    case « dl »: var resultat=base*10; break;
    case « l »: var resultat=base; break;
    case « dal »: var resultat=base/10; break;
    case « hl »: var resultat=base/100; break;
    case « mm3 »: var resultat=base*1000000; break;
    case « cm3 »: var resultat=base*1000; break;
    case « dm3 »: var resultat=base; break;
    case « m3 »: var resultat=base/1000; break;
    }
    break;

    case « Temps »:
    // Unité de base -> seconde
    switch (uniteInitiale) {
    case « siècle »: var base=valeurInitiale*3155760000; break;
    case « décennie »: var base=valeurInitiale*315576000; break;
    case « an »: var base=valeurInitiale*31557600; break;
    case « mois »: var base=valeurInitiale*2629800; break;
    case « semaine »: var base=valeurInitiale*604800; break;
    case « jour »: var base=valeurInitiale*86400; break;
    case « h »: var base=valeurInitiale*3600; break;
    case « min »: var base=valeurInitiale*60; break;
    case « s »: var base=valeurInitiale; break;
    case « ms »: var base=valeurInitiale/1000; break;
    }
    switch (uniteConvertie) {
    case « siècle »: var resultat=base/3155760000; break;
    case « décennie »: var resultat=base/315576000; break;
    case « an »: var resultat=base/31557600; break;
    case « mois »: var resultat=base/2629800; break;
    case « semaine »: var resultat=base/604800; break;
    case « jour »: var resultat=base/86400; break;
    case « h »: var resultat=base/3600; break;
    case « min »: var resultat=base/60; break;
    case « s »: var resultat=base; break;
    case « ms »: var resultat=base*1000; break;
    }
    break;
    }
    event.value = resultat;
    } else {
    event.value = «  »;
    }

    cordialement

     

    • Cette réponse a été modifiée le il y a 1 semaine par homer.
    • Cette réponse a été modifiée le il y a 1 semaine par homer.
    Attachments:
    You must be logged in to view attached files.
    #76537
    bebarth
    Maître des clés

    Tout est dans les scripts.
    J’ai retirés les unités anglo-saxonnes.
    je te laisse étudier les différences des scripts.

    // Script de document : Tableau des unités par famille
    var lesUnites={
    "Distance": [
    ["nanomètre (nm)","nm"],
    ["micromètre (µm)","µm"],
    ["millimètre (mm)","mm"],
    ["centimètre (cm)","cm"],
    ["décimètre (dm)","dm"],
    ["mètre (m)","m"],
    ["décamètre (dam)","dam"],
    ["hectomètre (hm)","hm"],
    ["kilomètre (km)","km"],
    ],
    "Poids": [
    ["milligramme (mg)","g"],
    ["centigramme (cg)","cg"],
    ["décigramme (dg)","dg"],
    ["gramme (g)","g"],
    ["décagramme (dag)","dag"],
    ["hectogramme (hg)","hg"],
    ["kilogramme (kg)","kg"],
    ["quintal (q)","q"],
    ["tonne (t)","t"],
    ],
    "Surface": [
    ["millimètre carré (mm^2)","mm2"],
    ["centimètre carré (cm^2)","cm2"],
    ["décimètre carré (dm^2)","dm2"],
    ["mètre carré (m^2)","m2"],
    ["kilomètre carré (km^2)","km2"],
    ["centiare (ca)","ca"],
    ["are (a)","a"],
    ["hectare (ha)","ha"],
    ],
    "Volume": [
    ["millilitre (ml)","ml"],
    ["centilitre (cl)","cl"],
    ["décilitre (dl)","dl"],
    ["litre (l)","l"],
    ["décalitre (dal)","l"],
    ["hectolitre (hl)","l"],
    //
    ["millimètre cube (mm^3)","mm3"],
    ["centimètre cube (cm^3)","cm3"],
    ["décimètre cube (dm^3)","dm3"],
    ["mètre cube (m^3)","m3"],
    ]
    };

    // Script de touches personnalisé du champ Mère "typeUnite"
    if (!event.willCommit) {
    this.getField("uniteInitiale").clearItems();
    this.getField("uniteConvertie").clearItems();
    if (event.changeEx!=0) {
    this.getField("uniteInitiale").setItems(lesUnites[event.changeEx]);
    this.getField("uniteConvertie").setItems(lesUnites[event.changeEx]);
    switch (event.changeEx) {
    case "Distance":var uniteBase="m"; break;
    case "Poids":var uniteBase="kg"; break;
    case "Surface":var uniteBase="m2"; break;
    case "Volume":var uniteBase="l"; break;
    }
    this.getField("uniteInitiale").value=uniteBase;
    this.getField("uniteConvertie").value=uniteBase;
    }
    }

    // Script de calcul du champ "valeurConvertie"
    var typeUnite=this.getField("typeUnite").value;
    var uniteInitiale=this.getField("uniteInitiale").value;
    var uniteConvertie=this.getField("uniteConvertie").value;
    var valeurInitiale=this.getField("valeurInitiale").value;
    if (valeurInitiale=="" || typeUnite=="" || uniteInitiale=="" || uniteConvertie=="") {
    event.value="";
    } else {
    valeurInitiale=Number(valeurInitiale);
    // 1 - Conversion vers l'unité de base
    // 2 - Conversion à partir de l'unité de base
    switch (typeUnite) {
    case "Distance":
    // Unité de base -> mètre
    switch (uniteInitiale) {
    case "nm": var base=valeurInitiale/1000000000; break;
    case "µm": var base=valeurInitiale/1000000; break;
    case "mm": var base=valeurInitiale/1000; break;
    case "cm": var base=valeurInitiale/100; break;
    case "dm": var base=valeurInitiale/10; break;
    case "m": var base=valeurInitiale; break;
    case "dam": var base=valeurInitiale*10; break;
    case "hm": var base=valeurInitiale*100; break;
    case "km": var base=valeurInitiale*1000; break;
    }
    switch (uniteConvertie) {
    case "nm": var resultat=base*1000000000; break;
    case "µm": var resultat=base*1000000; break;
    case "mm": var resultat=base*1000; break;
    case "cm": var resultat=base*100; break;
    case "dm": var resultat=base*10; break;
    case "m": var resultat=base; break;
    case "dam": var resultat=base/10; break;
    case "hm": var resultat=base/100; break;
    case "km": var resultat=base/1000; break;
    }
    break;
    case "Poids":
    // Unité de base -> kilogramme
    switch (uniteInitiale) {
    case "mg": var base=valeurInitiale/1000000; break;
    case "cg": var base=valeurInitiale/100000; break;
    case "dg": var base=valeurInitiale/10000; break;
    case "g": var base=valeurInitiale/1000; break;
    case "dag": var base=valeurInitiale/100; break;
    case "hg": var base=valeurInitiale/10; break;
    case "kg": var base=valeurInitiale; break;
    case "q": var base=valeurInitiale*100; break;
    case "t": var base=valeurInitiale*1000; break;
    }
    switch (uniteConvertie) {
    case "mg": var resultat=base*1000000; break;
    case "cg": var resultat=base*100000; break;
    case "dg": var resultat=base*10000; break;
    case "g": var resultat=base*1000; break;
    case "dag": var resultat=base*100; break;
    case "hg": var resultat=base*10; break;
    case "kg": var resultat=base; break;
    case "q": var resultat=base/100; break;
    case "t": var resultat=base/1000; break;
    }
    break;
    case "Surface":
    // Unité de base -> mètre carré
    switch (uniteInitiale) {
    case "mm2": var base=valeurInitiale/1000000; break;
    case "cm2": var base=valeurInitiale/10000; break;
    case "dm2": var base=valeurInitiale/100; break;
    case "m2": var base=valeurInitiale; break;
    case "km2": var base=valeurInitiale*1000000; break;
    case "ca": var base=valeurInitiale; break;
    case "a": var base=valeurInitiale*10000; break;
    }
    switch (uniteConvertie) {
    case "mm2": var resultat=base*1000000; break;
    case "cm2": var resultat=base*10000; break;
    case "dm2": var resultat=base*100; break;
    case "m2": var resultat=base; break;
    case "km2": var resultat=base/1000000; break;
    case "ca": var resultat=base; break;
    case "a": var resultat=base/10000; break;
    }
    break;
    case "Volume":
    // Unité de base -> litre
    switch (uniteInitiale) {
    case "ml": var base=valeurInitiale/1000; break;
    case "cl": var base=valeurInitiale/100; break;
    case "dl": var base=valeurInitiale/10; break;
    case "l": var base=valeurInitiale; break;
    case "dal": var base=valeurInitiale*10; break;
    case "hl": var base=valeurInitiale*100; break;
    //
    case "mm3": var base=valeurInitiale/1000000; break;
    case "cm3": var base=valeurInitiale/1000; break;
    case "dm3": var base=valeurInitiale; break;
    case "m3": var base=valeurInitiale*1000; break;
    }
    switch (uniteConvertie) {
    case "ml": var resultat=base*1000; break;
    case "cl": var resultat=base*100; break;
    case "dl": var resultat=base*10; break;
    case "l": var resultat=base; break;
    case "dal": var resultat=base/10; break;
    case "hl": var resultat=base/100; break;
    //
    case "mm3": var resultat=base*1000000; break;
    case "cm3": var resultat=base*1000; break;
    case "dm3": var resultat=base; break;
    case "m3": var resultat=base/1000; break;
    }
    break;
    }
    if (isNaN(resultat)) event.value="";
    else event.value=util.printf("%.6f",resultat).replace(/\.?0+$/,"");
    }

    // Script de touches personnalisé du champ "valeurInitiale"
    if(!event.willCommit) {
    if (event.change==",") event.change="."
    var aTester=event.value.split("");
    aTester.splice(event.selStart, event.selEnd-event.selStart, event.change);
    var testeChaine=aTester.join("");
    event.rc=/^([1-9]\d*([.]?\d+)?)|([0]([.]\d*)?)$/.test(testeChaine);
    } else {
    event.rc=event.value=="" || /^([1-9]\d*([.]\d+)?)|([0][.]\d+)$/.test(event.value);
    }

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    #76539
    homer
    Participant

    Re je suis oblige de recommencer a zero ou est mon erreur ??

    Merci

    Cordialement

    Attachments:
    You must be logged in to view attached files.
    #76541
    homer
    Participant

    Bonjour

    Merci beaucoup, mais pourquoi le type de conversion que je viens e mettre  » temps  » ne fonctionne pas ???

    Bonne journée

    Attachments:
    You must be logged in to view attached files.
    #76543
    bebarth
    Maître des clés

    bonjour,
    J’essaie de regarder ce weekend !

    @+
    😎

    #76544
    homer
    Participant

    Bonjour,
    J’ai encore essayé ce matin avec ce que je voudrais faire comme conversion, mais cela ne va pas sur plusieurs point

    1 – Aucun tableau deroulant se sauvegarde ! cela est du a quoi
    2 – Les  calculs ne se font pas !
    La je ne comprens pas pourquoi ?? meme en reprenant le pdf corrigé en enlevant  les unités anglo-saxonnes.

    Bonne journée et week end

    Cordialement

    Attachments:
    You must be logged in to view attached files.
    #76546
    bebarth
    Maître des clés

    bonjour,
    Pour rajouter une famille d’unités, il faut faire 4 modifications. Ici on va rajouter un convertisseur de températures.

    1) On joute MANUELLEMENT « Température » comme élément du menu déroulant « mère » -> typeUnite.

    2) Dans le script de document, on ajoute à l’objet « lesUnites » les différentes unités à convertir :
    ...
    "Température": [
    ["Celcius (°C)","°C"],
    ["Fahrenheit (°F)","°F"],
    ["Kelvin (°K)","°K"],
    ],
    ...

    3) On ajoute au script de touches personnalisé du champ Mère « typeUnite » la valeur par défaut lorsque l’on sélectionne « Tempétature ».
    ...
    case "Température":var uniteBase="°C"; break;
    ...

    4) Et enfin ou ajoute les différent calculs de conversions selon les unités.
    Dans un premier temps on convertit l’unité sélectionnée vers l’unité de base, puis ce résultat vers l’unité à convertir :
    ...
    case "Température":
    // Unité de base -> Celcius
    switch (uniteInitiale) {
    case "°C": var base=valeurInitiale; break;
    case "°F": var base=(valeurInitiale-32)*5/9; break;
    case "°K": var base=valeurInitiale-273.15; break;
    }
    switch (uniteConvertie) {
    case "°C": var resultat=base; break;
    case "°F": var resultat=(base*9/5)+32; break;
    case "°K": var resultat=base+273.15; break;
    }
    break;
    ...

    J’espère que cela est plus clair pour toi.

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    #76548
    homer
    Participant

    re,

    J’arrete pas de refaire la lis a chaque fois elle s’efface !! Pourquoi ??

    Cordialement

     

    #76549
    bebarth
    Maître des clés

    Quelle liste ??? Le menu déroulant « typeUnite » ?

    @+
    😎

    #76550
    homer
    Participant

    de
    uniteInitiale et uniteConvertie

    Oui les menu deroulant s’efface apres que je change par exemple de litre a distance

    • Cette réponse a été modifiée le il y a 5 jours et 19 heures par homer.
    #76552
    bebarth
    Maître des clés

    Comme je te l’ai expliqué dans ce post (#post-76546) :

    Tableau de conversion


    ces menus déroulants se remplissent via le script et non manuellement. Je t’invite donc à lire ce post en entier !

    @+
    😎

    #76553
    homer
    Participant

    je l’ai lu plusieurs fois, mais dans le menu deroulant alors il faut mettre un script dans l’onglet calcul ou action ??

    Dans l’onglet calcul de « valeurconvertie » les script que je rajoute font bien le travail de convertion en tout cas

    • Cette réponse a été modifiée le il y a 5 jours et 18 heures par homer.
    #76555
    bebarth
    Maître des clés

    Le 1) c’est l’onglet « Options » du menu déroulant « typeUnite ».

    Le 2) est en script de document.

    Le 3) est en script de touches personnalisé du menu déroulant « typeUnite ».

    Le 4) est en script de calcul du champ « valeurConvertie ».

    @+
    😎

    #76556
    homer
    Participant

    je  deviens dingue je fais la procedure, quand j’en crée une et que les valeur se convertisent ca va

    ensuite je ferme le pdf sur le type de convertion que je viens de créer et que je la réouvre elle est la et je peux l’utiliser, mais si j’ai le malheur de revenir sur un autre type de convertion, je dois fermer le pdf sur la derniere que je viens de créer pour l’utiliser et je dois effacer et recreer un type de convertion pour l’utiliser

    Je dois creer sans fin ! voici mon pdf

    Attachments:
    You must be logged in to view attached files.
    #76558
    homer
    Participant

    avec le dernier pdf envoyé on voit bien menu deroulant angle est la a l’ouverture, si on passe a un autre menu et que l’on revient dessus les enfants disparaissent !

     

    #76559
    homer
    Participant

    Bonjour,

    Voila impec, j’y aipassé la nuit pour le réussir !! en tout cas un grand merci !!!,
    Bon dimanche et bonne semaine !!!

    Cordialement

    Attachments:
    You must be logged in to view attached files.
    #76561
    Merlin
    Maître des clés

    Tu devrais peut être limiter le champ de résultat à deux décimales…

     

    #76562
    bebarth
    Maître des clés

    bonjour,

    Voila impec,

    Es-tu certain que ça fonctionne bien, parce que lorsque je change la valeur à convertir il n’y a plus rien !!!

    Tu devrais peut être limiter le champ de résultat à deux décimales…

    Si on indique 2 décimales dans le cas de l’exemple, le résulta va donner 0 !
    Il serait donc préférable d’afficher un résultat en « notation scientifique » (comme on appelle ça) si le résultat à 2 décimales. Dans mon script on modifie la fin du script :
    ...
    else {
    valeuaAffichee=util.printf("%.3f",resultat).replace(/\.?0+$/,"");
    if (valeuaAffichee!=0) event.value=valeuaAffichee;
    else event.value=resultat.toExponential(2);
    }
    }

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    #76564
    homer
    Participant

    Oui, j’ai par du pousser plusieurs chiffre derriere la virgule sinon j’avais 0

    Je remets la page

    Apres n’hesitez pas a me corriger ! c’est vous les betes du script ! lol

    En tout cas encore merci !!

    Attachments:
    You must be logged in to view attached files.
    #76566
    bebarth
    Maître des clés

    bonjour,
    Ce ne doit pas être de bon fichier…

    @+
    😎

    #76567
    homer
    Participant

    Bonjour,

    Essai celui la !

    Encore merci et  bonne soirée

    Attachments:
    You must be logged in to view attached files.
Affichage de 33 réponses de 1 à 33 (sur un total de 33)
  • Vous devez être connecté pour répondre à ce sujet.