Donnez vie à vos documents numériques !
 

alex

Toutes mes réponses sur les forums

Affichage de 99 réponses de 199 à 297 (sur un total de 564)
  • Auteur
    Réponses
  • en réponse à : Menu déroulant. – RÉSOLU #56030
    alex
    Participant

    Je vous envoie une petite maquette d’ici 30 minutes.

    en réponse à : Menu déroulant. – RÉSOLU #56028
    alex
    Participant

    Oui.

    en réponse à : Récupération données BDD dans un formulaire PDF. – RÉSOLU #55892
    alex
    Participant

    Voici l’exemple promis.
    Le fichier de données est unique. Pour voir sa structure, utilisez un simple éditeur de texte. Vous remarquerez que toutes les valeurs se suivent séparées par des point-virgules.
    Lors de l’ouverture du document, un script (importDatas()) lit la première colonne et renseigne le menu déroulant.
    Lors de l’action sur le menu déroulant le script remplissageFiche() lit les autres valeurs et remplit les champs Champ.1 et suivants (jusqu’à Champ.7 dans mon exemple)

    On peut aussi faire ça  avec un fichier de données xml, ou du fdf.

    Voyez si ça vous suffit.

    [attachment deleted by admin]

    en réponse à : Récupération données BDD dans un formulaire PDF. – RÉSOLU #55888
    alex
    Participant

    Bonjour à tous,
    Je vous poste sur ce formulaire un exemple avec un seul fichier de données dans les heures qui viennent…

    alex
    Participant

    On est sur la voie, voici comment procéder:
    //Script d’application ou de document
    //On passe en revue tous les champs du document… si leur nom fini par  “.A$” et si c’est un bouton on lui associe le script

    indexField=0;
    while(indexField{
    nomDeChamp=this.getNthFieldName(indexField);
    //substring à vérifier
          if(nomDeChamp.substring(nomDeChamp.length-4,nomDeChamp.length)== “.A1$”& this.getField(nomDeChamp).type==”button”)
          {
          console.println(“Ajout du script au bouton “+nomDeChamp)
          this.getField(nomDeChamp).setAction(“MouseUp”,”activeboomA()”);
          indexBouton=indexBouton+1;
          }
    indexField=indexField+1;
    }

    alex
    Participant

    Bonjour Merlin,
    Fais un essai sur ce formulaire…
    Si tu ouvres une pièce  jointe dans Acrobat (par exemple Dupont.csv) tu constaters que tu peux la modifier sous Excel, et elle sera mise à jour !
    Oui, il faut faire attention à l’encodage pour les accents.
    Dans mon exemple, j’ai mélangé volontairement des csv et des txt.

    alex
    Participant

    Pour traiter les fichiers .csv, il faut considérer le “;” comme caractère séparateur (voir exemple ci-joint script importDatas() ). On peut là aussi modifier ces fichiers directement sous Acrobat PRO.
    Ouvrir le fichier csv pour voir sa structure …

    [attachment deleted by admin]

    alex
    Participant

    Bonjour à tous,
    Sur le thème des données à afficher dans un formulaire voici un petit truc que j’utilise souvent et qui consiste à embarquer les données du formulaire sous forme de pièces jointes. Dans mon exemple, j’ai autant de fichiers texte que de fiches, on peut en ajouter autant qu’on veut. Mon formulaire comporte 3 champs à remplir (champs “Champ.0″,”Champ.1″,”Champ.2”), on peut là aussi en ajouter autant qu’on veut (paramètre NbreChamps à modifier dans le script importDatas().
    Le premier script importDatas liste les pièces jointes, remplit la liste déroulante et et collecte les données pour les stocker dans une table.
    Le second script remplit la fiche à partir de l’item sélectionné.
    Voir maquette.
    Nombreuses variantes possibles:
    pièces jointes XML avec noms des champs.
    pièce jointe unique.
    données externes.
    remplissage du menu déroulant à l’ouverture.
    etc…

    [attachment deleted by admin]

    alex
    Participant

    Je me suis trompé lors de ma première analyse (je mange mon chapeau), vos scripts sont corrects et pourtant je reproduis bien votre problème. Mystère….

    alex
    Participant

    Bonjour,
    Il y a une erreur de script, la valeur d’export du bouton radio Stannous_IV n’existe pas (afficher la liste des champ pour s’en rendre compte:

    (this.getField(“Stannous_IV”).value == “3”)
    Il serait préférable de lancer un script unique à partir des 3 occurences de ce bouton radio avec un test sur la valeur d’export.
    Je vous envoie le formulaire corrigé demain si vous ne vous en sortez pas.

    alex
    Participant

    Voici une maquette. Il vaut mieux mettre le script des pièces jointes en ouverture des premières pages, conseil d’ami.
    Notez qu’il devrait être possible par script de répartir les fenêtres des pièces jointes sur l’écran par les méthodes suivantes:
    app.execMenuItem(“TileHorizontal”);
    app.execMenuItem(“TileVertical”);
    app.execMenuItem(“Cascade”);
    Par ailleurs les paramètres d’ouverture des pièces jointes sont respectés même si la page maître est en plein écran.
    Bon week-end à tous.

    [attachment deleted by admin]

    alex
    Participant

    Et du JavaScript pour faire ça, en voilà:
    1-Script du bouton:
    //pour aller à la page 2 par exemple…

    global.pageDestination=1;
    this.exportDataObject({cName:”pieceJointe1.pdf”,nLaunch:2});
    2-Script d’ouverture du document pieceJointe1.pdf
    this.pageNum=global.pageDestination;
    global.pageDestination=0;
    Ainsi, la page de destination pourra être un paramètre variable issu d’une liste déroulante par exemple.

    en réponse à : Seulement montrer les décimales. – RÉSOLU #55229
    alex
    Participant

    Oui, c’est vrai, mais je suis habitué aux demandes exotiques !  Pour un champ unique donc, nous aurions:
    var h = this.getField(“cm”).value;
    var w = this.getField(“kg”).value;
    calcul=0.0235 * (Math.pow(h,0.42246) * Math.pow(w,0.5145));
    event.value = Math.floor(100*calcul);

    alex
    Participant

    Pour compléter ma réponse ci-dessus , voici un exemple minimal de script pHp affichant le champs de formulaire Donnee Nom du fichier: xCollecteDonnes.php
    session_start();
    echo”“;
    echo”“;
    echo ““;
    echo ““;
    echo “

    “;
    $IPAd=$_SERVER;
    $DateVisite=date(“Y”).”/”.date(“m”).”/”.date(“d”).” “.date(“G”).”:”.date(“i”).”:”.date(“s”);
    //Affichage des données sur la page web avec la date, l’heure et l’Ip emetteur.
    if((strlen($_POST[Donnee])>0)&$_POST[CodS]==’1234′)
      {
      echo”
    Valeur lue : $_POST[Donnee] le $DateVisite envoyee par Ip=$IPAd”;
      }
    echo “

    “;
    ?>
    Le formulaire d’origine contient au moins le champ Donnee et le champ CodS (invisible) ayant pour valeur “1234”. Cet exemple est une base pédagogique, rien de plus, on affiche la données mais on ne la transmet pas à une BD.

    en réponse à : Seulement montrer les décimales. – RÉSOLU #55227
    alex
    Participant

    Voici les scripts de calcul pour les deux champs:
    BSA1 (partie entière du BSA):

    var h = this.getField(“cm”).value;
    var w = this.getField(“kg”).value;
    calcul=0.0235 * (Math.pow(h,0.42246) * Math.pow(w,0.5145));
    partieEntiere=Math.floor(calcul)
    event.value = partieEntiere;
    BSA2 (partie décimale du BSA):
    var h = this.getField(“cm”).value;
    var w = this.getField(“kg”).value;
    calcul=0.0235 * (Math.pow(h,0.42246) * Math.pow(w,0.5145));
    partieEntiere=Math.floor(calcul)
    event.value = Math.floor(100*(calcul-partieEntiere));
    Voir maquette jointe, il faut aussi vérifier la validité des saisies (taille et poids)…

    [attachment deleted by admin]

    alex
    Participant

    Il n’est pas obligatoire d’envoyer les données dans une BD, on peut simplement les afficher sur une page Web (pHp).
    Voici quelques éléments de réponse, je détaillerai plus tard…:
    Dans le script JavaScript:
    Les données envoyées sont celles des champs de formulaire listés par aFields (le nom des champs séparés par des virgules)
    L’envoi des données se fera vers le site “monsite.fr”
    Les donnees seront ensuite analysées par le programme pHp “xCollecteDonnees.php” qui les recevra comme des $_POST[Nom_du_champ]. Il faut inclure dans ces données un identifiant (champ caché du formulaire origine) validant celles-ci, la première opération du script pHp étant de s’assurer que l’emetteur des données est autorisé à le faire.
    Au niveau du formulaire, le script JavaScript est du style:

    this.submitForm({
    cURL: “http://www.monsite.fr/xCollecteDonnes.php#FDF”,
    aFields:ListeChamps,
    cSubmitAs: “HTML”
    });
    On peut associer ce script à un bouton.
    Pour faire des essai, supprimez la ligne aFields (tous les champs de formulaire seront envoyés).
    Je pourrai donner un exemple du script php pour la page Web demain ..

    alex
    Participant

    Dommage, car sur tablette (iPad) PDF Expert est le seul viewer capable d”émuler un peu de JavaScript et en particulier le submitForm() ce que ne fait pas Adobe Reader sur iPad…

    alex
    Participant

    On peut récupérer les données d’un champ de formulaire (ou de tous les champs du formulaire) par un submitForm() associé à service Web (petit programme en pHp par exemple sur un serveur Web ou local).

    alex
    Participant

    Ci-joint exemple de base à la manière de @jsamica (pas de champs pdg pour moi).

    [attachment deleted by admin]

    alex
    Participant

    Exact ! Je n’ai pas vu venir le pdg à 50000!
    if (somtotal < 15000)
    {
    this.getField(“valdg”).display = display.hidden;
    }
    else
    {
    this.getField(“valdg”).display = display.visible;
    }
    if (somtotal < 50000)
    {
    this.getField(“valpdg”).display = display.hidden;
    }
    else
    {
    this.getField(“valpdg”).display = display.visible;
    }

    alex
    Participant

    Tu as raison Merlin, pour gérer l’affichage, d’un point de vue logique ceci suffit:
    if (somtotal < 15000)
    {
    this.getField(“valdg”).display = display.hidden;
    }
    else
    {
    this.getField(“valdg”).display = display.visible;
    }

    [attachment deleted by admin]

    alex
    Participant

    Voici une manière de faire qui contourne bien des obstacles (formats des nombres mal définis ou pas du tout, calcul de la somme évitant les aléas de gestion des évènements de certaines versions)… Un seul et unique script de calcul donc, lancé par chacune des actions sur les membres de la somme…
    Cette technique permet de panacher des modes de calculs de lignes éventuellement différents et d’avoir des sous-totaux intermédiaires et finaux mis à jour même pour des calculs complexes.

    [attachment deleted by admin]

    en réponse à : Comportement et affichage sur un bouton. – RÉPONDU #55167
    alex
    Participant

    Bonjour à tous,
    Pour la gestion des évènements et des couleurs du cadre du bouton voir exemple joint.
    Ici contrôle de la couleur sur entrée/sortie.

    [attachment deleted by admin]

    alex
    Participant

    Pour afficher,le nom des champs les uns après les autres il faudrait écrire ceci et ne pas s’énerver:
    for ( var i=0; i < this.numFields; i++)
    {           
    var temp= this.getField(this.getNthFieldName(i));
    app.alert(temp.name ,2);
    }
    Mais pour travailler dans le calme, il vaut mieux éditer sur la console,le nom des champs les uns après les autres avec leur valeur valeur il faudrait écrire ceci :
    console.clear();
    for ( var i=0; i < this.numFields; i++)
    {           
    var temp= this.getField(this.getNthFieldName(i));
    console.println(temp.name+”-valeur=”+temp.value);
    }
    console.show();

    alex
    Participant

    Pour les paresseux (comme moi) le script ci-dessous liste lui-même les champs obligatoires, fait le même test que vous et envoie les données

    console.clear();
    var bSuccess=true;
    var emptyTest=/^s*$/;
    for(var i=0;i {
    nameField=this.getNthFieldName(i);
    fld=this.getField(nameField);
    if(fld.type==”text”|fld.type==”checkbox”|fld.type==”combobox”)
    {
    if(fld.required)
    {
    console.println(“Analyse champ “+nameField);
    if(emptyTest.test(fld.value))
    {
    bSuccess=false;
    AlertMsg=”Veuillez remplir le champ “”+nameField+”””;
    app.alert(AlertMsg,1);
    fld.setFocus();
    }
    }
    }
    }
    if(bSuccess)
    {
    var fTo = this.getField(“mail”);
    var fSubject = this.getField(“concatobjet”);
    var fBody = this.getField(“concat”);
    this.mailDoc(true, fTo.value, “”, “”, fSubject.value, fBody.value);
    }

    alex
    Participant

    Pour ce genre de problème, ne perdez jamais de vue les solutions à base d’interfaces Web qui fonctionneront sans problème sur la plupart des tablettes :
    Du pHp adossées à une base de données mySQL. Il est alors possible (si nécessaire) de générer des documents pdf ( à plat) ou des fichiers Excel à la demande grâce à des classes pHp !
    Pour ceux qui adorent le JavaScript et les choses un peu plus complexes, il y a aussi Ajax (du JavaScript côté serveur).

    en réponse à : Zone de liste. – RÉPONDU #54664
    alex
    Participant

    Voir maquette ci-jointe: la sélection de l’item “Autre carburant” fait apparaître un champ de saisie spécial. Tout autre choix le fait disparaître.
    En ce qui concerne les calendriers, ce sujet a été abordé dans ce forum récemment.

    [attachment deleted by admin]

    en réponse à : Zone de liste. – RÉPONDU #54662
    alex
    Participant

    Bonjour jeffe 52,
    Il faut sans doute utiliser un menu déroulant et pas la zone de liste…

    [attachment deleted by admin]

    alex
    Participant

    Si vous utilisez un éditeur de script, la syntaxe sera vérifiée avant enregistrement.
    Acrobat>Préférences>JavaScript
    Ci-joint un exemple avec BBEdit.app.

    [attachment deleted by admin]

    en réponse à : TOTAL en fonction de cases cochées. – RÉSOLU #54522
    alex
    Participant

    Bonjour à tous,
    Pour moi ça fonctionne, il faut ajouter des nombres sinon A+B+C donne une chaîne de caractères. Je reviens plus tard pour une solution plus générale.

    [attachment deleted by admin]

    en réponse à : Reader 7 et javascript : faire pivoter une page. – RÉPONDU #54444
    alex
    Participant

    Il s’agit de faire pivoter la page (voir le script associé au bouton) et non pas de tourner les pages.  J’ai déjà répondu à un fil traitant de ce bug.

    alex
    Participant

    Ce petit script devrait vous aider (sur le tard)… On peut l’intégrer à Acrobat, ici je l’ai inséré comme script de document lancé par le bouton.
    Les champs de texte de la page courante seront pivotés au choix en  position 0 (texte vertical lecture de bas en haut), 90 (texte horizontal lecture de gauche à droite) , 180 (texte vertical lecture de haut en bas) ou 270 (texte horizontal tête en bas lecture de droite à gauche).
    Comme on peut le constater, ce n’est pas cohérent avec les propriétés du champ (voir ci-dessus le post de Merlin), il faut choisir 90 deg pour obtenir un texte horizontal …

    [attachment deleted by admin]

    en réponse à : Afficher message/texte passé telle date. – RÉSOLU #54287
    alex
    Participant

    Même chose que précédemment, la date limite est définie par les paramètres jour, mois, année…

    [attachment deleted by admin]

    en réponse à : Afficher message/texte passé telle date. – RÉSOLU #54286
    alex
    Participant

    Pour répondre au problème, voir maquette jointe:
    Un script d’ouverture de page compare la date du jour à la date saisie dans le champs “DateLimite”.
    Si la date du jour est postérieure à la date limite on génère une alerte.
    Si on ne souhaite pas modifier la date limite il faut rendre ce champ invisible ou insaisissable.

    [attachment deleted by admin]

    alex
    Participant

    La ligne de code suivante fera l’affaire:
    this.getField(“CaseDestination”).checkThisBox(0, this.getField(“CaseOrigine”).isBoxChecked(0));
    Si vous préférez quelque chose de plus pédagogique en deux lignes:
    statut=this.getField(“CaseOrigine”).isBoxChecked(0);
    this.getField(“CaseDestination”).checkThisBox(0, statut);

    Nota: on peut écrire un script traitant globalement la recopie de tous les champs d’un template vers un autre.

    alex
    Participant

    Oui, il faut réouvrir le capot et généraliser à n hiérarchies mères/filles/petites filles…  Il faudra d’une part patienter un peu, d’autre part se contenter d’une solution acroForm…

    en réponse à : Differences Acrobat pro X et Acrobat pro XI ? – RÉPONDU #54062
    alex
    Participant

    Vous n’aurez pas de problèmes de compatibilité, les documents issus de la version XI peuvent être repris sous Acrobat X et les versions précédentes pour être retravaillés sans soucis disons jusqu’à la version 9.

    en réponse à : Insertion obligatoirement différentes de valeurs. – RÉSOLU #54059
    alex
    Participant

    Bonjour,
    Voir maquette jointe.
    Baptiser les champs de saisie Saisie1,Saisie2,Saisie3, Saisie4. On peut aller au delà, dans ce cas modifier le paramètre NbreChamps du script de document unique en conséquence.
    Le script AnalyseSaisie() est lancé par la validation des données de chaque champ.
    Voilà.

    [attachment deleted by admin]

    en réponse à : Intéractivité entre tableau et graph dans un PDF. – RÉSOLU #53936
    alex
    Participant

    @max:
    Attention, la propriété readonly s’écrit readOnly pour les annotations ( et non pas readonly comme pour les champs) et le SDK précise:

    If true, the annotation should display but not interact with the user.
    Je viens donc de tester, et effectivement même si la séquence TAB passe sur les segments de la courbe (les annotations), on ne peut pas les déplacer.
    Mais tu as raison, il faudrait placer un champ transparent ou un calque au dessus des annotations…
    On pourrait aussi assez facilement créer une animation en .js équivalente à celle obtenue en flash…
    Enfin, il faudrait généraliser à N courbes…

    en réponse à : Intéractivité entre tableau et graph dans un PDF. – RÉSOLU #53933
    alex
    Participant

    Oui, il faut t’intéresser au groupe dit des “tontons flexeurs”:
    http://groups.adobe.com/group/504

    en réponse à : Intéractivité entre tableau et graph dans un PDF. – RÉSOLU #53931
    alex
    Participant

    Une autre voie consiste à manipuler directement des annotations (ici des traits) sans passer par la fenêtre flash.
    1-Sous Acrobat PRO, placer et dimensionner le champ “Graphes” à votre convenance, c’est lui qui va accueillir les graphes.
    2-Créer autant d’annotations de type trait que requis, ici 12. Seule contrainte, insérer “GrapheAbracadabra” comme subject afin de les reconnaître. Ces annotations n’ont pas à être placées, il suffit de les créer, le script fait le reste (je les ai créé par script mais parce que je suis paresseux).
    Un seul script est à la peine (Test()), il est lancé à chaque saisie de données dans le tableau.
    Pour l’instant, une seule courbe, mais rien de plus facile que d’en superposer d’autres.
    Voir document joint assez basique…

    [attachment deleted by admin]

    en réponse à : Création PDF/A à partir d’un PDF. – RÉPONDU #53852
    alex
    Participant

    En travaillant avec du PHP, on trouve des librairies (class) dédiées à la génération de documents PDF (TCPDF, FPDF), certaines génèrent du PDF/a. C’est très facile à mettre en oeuvre, reste à voir si les documents générés sont bien conformes aux spec et à intégrer ça à SAP !

    en réponse à : Texte barré en rouge dans formulaire PDF. – RÉPONDU #53923
    alex
    Participant

    Les barres en rouge qui apparaissent sur les textes sont sans doute des commentaires.
    Pour s’en assurer, sous Adobe Reader, cliquez sur l’onglet Commentaires et vous verrez la liste s’afficher. Un clic droit sur le commentaire lui-même ou sur l’item de la liste fait apparaître un pop-up avec la possibilité de les supprimer un à un. On pourrait sans doute écrire un script qui les supprimerait tous sur un évènement quelconque… Mais est-ce bien nécessaire?

    en réponse à : Attribution de script sur bouton. – RÉSOLU #53790
    alex
    Participant

    J’aimerais beaucoup avoir un exemple où la logique du & soit mise en défaut avec des expressions logiques…

    alex
    Participant

    Ce lien ne fonctionne pas…

    en réponse à : Afficher/Masquer une deuxième page d’un PDF. – RÉPONDU #53807
    alex
    Participant

    Effectivement, après tests, les templates ne sont pas accessibles par script sur Adobe Reader 11, même en contexte privilégié alors que qu’ils le sont sous Acrobat….

    en réponse à : Attribution de script sur bouton. – RÉSOLU #53787
    alex
    Participant

    Pour clore le débat par un script plus général:
    //Definir le début de nom recherché:
    EnTete=”BTN_DL_fiche_A”;
    //Utiliser la syntaxe  suivante pour la recherche
    if(nomDeChamp.substring(0,EnTete.length)==EnTete)

    Pour le reste:
    l’operation
    x && y
    est la même que
    x & y
    sauf que si x est false, l’évaluation de y ne sera pas faite puisque le résultat sera false dans tous les cas. Bof.

    en réponse à : Afficher/Masquer une deuxième page d’un PDF. – RÉPONDU #53805
    alex
    Participant

    Pour répondre à @Kalo
    1-Si on interdisait d’accéder à la seconde page, il ne serait pas nécessaire de masquer la zone de saisie par un calque ou un masque(champ de texte).
    2-Le bouton d’impression lance un script qui reprend les propriétés de l’imprimante utilisée pour en modifier certains paramètres (pour nous la plage des pages imprimées). On peut le faire lors de la sélection par la case à cocher.
    Reader X suffit pour tout ça.
    3-Voir ci-dessous, je pense qu’on va pouvoir masquer la seconde page tout simplement. Il faudra attendre lundi !
    Pour répondre à Merlin..
    Effectivement, les templates sont fonctionnels avec effet rétroactif sur la version X.
    Je te transmets un script d’application qui permet de créer des templates, de les lister, de les activer ou désactiver sous Acrobat X ou XI. Reste à vérifier qu’on les manipule bien sous Reader. On pourrait ouvrir un fil pour ça ?

    en réponse à : Afficher/Masquer une deuxième page d’un PDF. – RÉPONDU #53799
    alex
    Participant

    Résultat des courses sous Acrobat X et XI (script au niveau document):
    NotAllowedError: Les paramètres de protection interdisent l’accès à cette propriété ou à cette méthode.
    Doc.createTemplate:4:Field Templates:Mouse Up
    Il faut sans doute créer ces templates en contexte privilégié. Ensuite on verra si on peut les manipuler au niveau document…
    Je vois ça et je reviens vers vous.
    Bon week-end.

    en réponse à : Afficher/Masquer une deuxième page d’un PDF. – RÉPONDU #53798
    alex
    Participant

    C’est juste Merlin, je viens de voir ça ! Un truc comme ça devrait alors marcher pour transformer toutes les pages d’un document sauf la première en templates:
    numNewTemplates=this.numPages;
    for ( var i = 0; i < numNewTemplates; i++)
    {
    var t = this.createTemplate({cName:”myTemplate”+i, nPage:1 });
    t.hidden = true;
    }

    en réponse à : Afficher/Masquer une deuxième page d’un PDF. – RÉPONDU #53796
    alex
    Participant

    Ci-joint une solution assez rustique à base de masque (un champ texte qui masque ou non la page 2)
    Si la case n’est pas cochée, le tableau de la page 2 est invisible, les pieds de page sont adaptés et l’impression limitée à la première page.
    Si la case est cochée, le tableau de la page 2 est visible, les pieds de page sont adaptés et l’impression comprend les deux pages.
    On peut aussi utiliser un calque pour masquer la page 2.
    On peut aussi interdire de passer sur la page 2 tant que la case n’est pas cochée.
    Pourquoi ne pas afficher/Masquer la page 2?
    Avec AcroForm sous Acrobat il n’est plus possible depuis la version 7 à ma connaissance de masquer ou afficher une page (template), pour ça il faut passer en xfa sous Adobe LiveCycle Designer, ce que je ne conseille pas.

    [attachment deleted by admin]

    en réponse à : Attribution de script sur bouton. – RÉSOLU #53783
    alex
    Participant

    Petite correction logique:
    //si le nom commence par  “BTN_DL_fiche_A” et si sa longueur est strictement de 14 digits,on lui associe le script
          if(nomDeChamp.substring(0,14)== “BTN_DL_fiche_A”& this.getField(nomDeChamp).type==”button”&nomDeChamp.length==14)

    Non ?

    en réponse à : Calcul sur des dates. – RÉSOLU #53701
    alex
    Participant

    Si vous rencontrez des difficultés, n’hésitez pas… La manipulation et les calculs de dates en JavaScript comme en PHP ne sont pas évidentes.
    Je donnerai la solution avec une maquette lundi sauf si quelqu’un veut bien me doubler. Bon week-end.

    alex
    Participant

    Avec PDF Expert sur iPad l’envoi de données de formulaire vers un serveur via un submitForm(), fonctionne parfaitement. Il faut lui associer côté serveur un script PHP gérant des requêtes SQL vers une base genre mySQL.
    Je n’ai pas encore essayé l’Adobe Reader pour iPad (il s’était fait distancer par son outsider) mais je vais le vérifier sur un système d’évaluation où je dois aussi intégrer des videos (et là c’est PDF Expert qui pêche!).

    en réponse à : Calcul sur des dates. – RÉSOLU #53699
    alex
    Participant

    Qui donne la solution exacte au problème posé par lagentejl ?
    Je n’ai pas dit comment récupérer l’objet date à partir d’un champ de texte  au format date… ou de format libre.
    A suivre.

    en réponse à : Calcul sur des dates. – RÉSOLU #53697
    alex
    Participant

    Quelques lignes pour comprendre et se lancer:
    //obtenir l’objet date:
    hd=new Date();
    //Afficher la date dans le champ “AffichageDate.0” à créer:
    this.getField(“AffichageDate.0”).value=util.printd(“dd-mm-yy”,hd)
    this.getField(“AffichageDate.0″).userName=”Date au format jj-mm-aa”;
    //Afficher l’heure dans le champ “AffichageDate.1” à créer:
    this.getField(“AffichageDate.1”).value=util.printd(“HH-MM-ss”,hd);
    this.getField(“AffichageDate.1″).userName=”Heure au format hh-mm-ss”;

    Créer une date et l’afficher dans le champ “AffichageDate.3” à créer:
    hdo=new Date();
    hdo.setFullYear(2010);
    hdo.setMonth(11);
    hdo.setDate(1);
    hdo.setHours(12);
    hdo.setMinutes(30);
    ddo=util.printd(“dd-mmmm-yyyy”,hdo);
    this.getField(“AffichageDate.3”).value=”Le “+ddo+” à “+util.printd(“HH-MM”,hdo);
    this.getField(“AffichageDate.3″).userName=”Format libre”;

    //calculer la différence entre deux dates:
    debut=util.printd(“dd-mm-yy”,hdo);
    fin=util.printd(“dd-mm-yy”,hd);
    console.println(“Calcul d’un intervalle de temps du “+debut+” au “+fin);
    delta=(hd.valueOf()-hdo.valueOf())/1000/60/60/24;
    console.println(“Intervalle de temps en jours : “+delta);
    this.getField(“AffichageDate.4”).value=”Nombre de jours=”+delta;
    this.getField(“AffichageDate.4″).userName=”En jours”;
    //pour mémoire:
    semaine=1000*60*60*24*7;

    A vous de jouer…

    en réponse à : Automatisation dans Acrobat. – RÉPONDU #53692
    alex
    Participant

    J’ai légèrement modifié, puis placé ce script dans un bouton du document joint:
    //Pour retrouver la liste des menus disponibles dans son contexte de travail:
    menuItems=app.listMenuItems();
    //Pour visualiser les éléments du tableau menuItems dans la console:
    console.clear();
    index=0;
    while(index{
    console.println(menuItems[index])
    index=index+1;
    }
    //ouvrir la console par script…
    console.show();
    Il faut un peu d’habitude pour retrouver le nom des menus et beaucoup ne supportent pas app.execMenuItem() mais ça permet de voir ce qui est disponible sous Acrobat et sous Adobe Reader (ne pas oublier d’autoriser l’execution du JavaScript dans les préférences de l’application).

    [attachment deleted by admin]

    en réponse à : Automatisation dans Acrobat. – RÉPONDU #53690
    alex
    Participant

    Bonjour à tous,
    Au niveau d’un batch ou d’un script d’application la commande suivant étend les droits pour Adobe Reader :

    app.execMenuItem(“DIGSIG:UBDoc”);
    D’une manière générale il est possible d’exécuter par script  une commande de menu d’Acrobat.
    Pour retrouver la liste des menus disponibles dans son contexte de travail:
    menuItems=app.listMenuItems();
    Pour visualiser les éléments du tableau menuItems dans la console:

    console.clear();
    index=0;
    while(index{
    console.println(menuItems[index]))
    index=index+1;
    }

    alex
    Participant

    C’est ce que je faisais dans les anciennes versions (aucun format prédéfini et un code de mise en forme associé au calcul) mais puisque le format est désormais proposé, je voulais l’utiliser.
    Merci quand même, bug avéré donc.

    alex
    Participant

    Oui, très bonne idée, je vais chercher de ce côté là, d’autant plus que j’ai des outils de tests d’Acrobat US installés en ce moment.
    Merci pour ta réponse et à suivre.

    alex
    Participant

    C’est bien le format que j’aurais aimé utiliser. Mais rien à faire (Acrobat 9, 10 sur Mac). Voir capture jointe.

    [attachment deleted by admin]

    en réponse à : Insérer un menu déroulant. – RÉSOLU #53557
    alex
    Participant

    Vous brûlez ! C’est bien sur ce site qu’il faut chercher…

    alex
    Participant

    Mon cher Merlin, je te rappelle que nous avons développé ensemble un script d’extraction de factures pour Acrobat au mois d’avril (dernière version du 26 avril) répondant à ce problème… Or dans ce script, nous avions fonctionné à partir de la détection du mot clef “Facture” puis sur le contrôle de cohérence du numéro de facture (nombre, nature des caractères) pour fractionner une liasse de factures ayant un nombre de pages variables. En général les applications générant des factures au format .pdf sont compatibles avec la méthode que nous avons utilisée (getNthWord()) pour récupérer les chaînes de texte à analyser.

    en réponse à : Calcul jours ouvrés entre deux dates. – RÉSOLU #53063
    alex
    Participant

    Oui, c’est bon mais assez compliqué pour gérer les jours fériés par la suite.
    J’aurais fait défiler les jours entre les deux dates et utilisé .getDay() pour récupérer la valeur du jour de la semaine pour la date courante (L’objet retourné est un entier qui correspond au jour de la semaine.. 0: dimanche 1: lundi …), comparé chaque date courante avec une table des jours fériés et ainsi obtenu un résultat exact (au moins dans un pays donné). Qu’en penses-tu ?
    Merlin, ce serait mieux d’ouvrir un nouveau fil car nous sommes hors sujet !

    [Edit du modo : les sujets ont été déplacés et ré-ordonnés)

    alex
    Participant

    Ces scripts ajustent la hauteur des champs, pas la largeur. Mais ça peut être utile.

    en réponse à : Calcul jours ouvrés entre deux dates. – RÉSOLU #53060
    alex
    Participant

    Voir maquette jointe:
    La saisie et l’affichage des nombres décimaux se fait dans le format du champ (ici S et coefficient).
    La définition de paramètres numériques décimaux dans un script se fait en séparant la partie entière de la partie décimale par un point.
    Les comparaisons de chaînes de caractères prennent en compte la casse (“Non” n’est pas “NON”).

    Pour le calcul des nombres de jours ouvrés, j’ai un script Php que je vais convertir en JavaScript. Pas aujourd’hui.

    A+

    [attachment deleted by admin]

    en réponse à : Formulaire PDF, listes en cascades. – RÉSOLU #53035
    alex
    Participant

    C’est sans doute le format du champ qui n’est pas correct (voir réponse de Merlin) , il suffit de le préciser. Toutefois, avec Scribus, je ne sais pas si on a droit au séparateur de milliers. A voir. En ce qui concerne le comptage des jours ouvrés, j’ai déjà fait ça, e vais voir si je n’ai pas un script dans mes placards, mais je ne suis pas sûr qu’i exclue bien les jours de semaine fériés…

    en réponse à : Formulaire PDF, listes en cascades. – RÉSOLU #53030
    alex
    Participant

    Pour moi, cocher la case à cocher n’est pas suffisant car il faut également lancer le script de remplissage du champ fille sur validation, cette fois et en prenant pour argument this.event.value. Ceci ne fonctionnera que sur les versions récentes d’Acrobat ou Adobe Reader. Les solutions que je propose fonctionneront sur des versions plus anciennes où la case à cocher dont parle Merlin n’existait pas…

    en réponse à : Formulaire PDF, listes en cascades. – RÉSOLU #53026
    alex
    Participant

    L’évènement déclencheur n’est pas la validation du premier champ mais sa modification (voir ce qui concerne les évènements dans la spécification JavaScript d’Acrobat).
    Donc script ci-dessous à placer Onglet Format:script de touche personnalisé:

    console.clear();
    ev=this.event.change;
    console.println(ev);
    if (ev==”France”)
    {
    this.getField(“Liste2”).clearItems();
    this.getField(“Liste2”).insertItemAt(“Paris”);
    this.getField(“Liste2”).insertItemAt(“Tours”);
    }

    if (ev==”Angleterre”)
    {
    this.getField(“Liste2”).clearItems();
    this.getField(“Liste2”).insertItemAt(“Londes”);
    this.getField(“Liste2”).insertItemAt(“Brighton”);
    }

    if (ev==”Portugal”)
    {
    this.getField(“Liste2”).clearItems();
    this.getField(“Liste2”).insertItemAt(“Lisbonne”);
    this.getField(“Liste2”).insertItemAt(“Porto”);
    }

    Voir maquette jointe qui répond à votre problème.
    Nota1: depuis que la gestion des évènements sous Acrobat fonctionne à peu près correctement, il n’est pas nécessaire d’utiliser eventWillCommit comme dans mes exemples précédents, attention par contre à bien prendre en compte event.change ou event.changeEx (voir mes exemples sur ce site).
    Nota2: la syntaxe insertItemAt() utilisée ici fonctionne mais elle est incomplète (voir mes exemples).

    [attachment deleted by admin]

    alex
    Participant

    Sur la page, j’ai créé deux champs texte:
    Le champ “Reference”, caché en lecture seule qui est placé sur la future zone de saisie.
    Le champ “MonBeauChampQuiGrandit”, future zone de saisie n’importe où, elle sera redimensionnée par le script pour couvrir le champ précédant.
    En ouverture de page on ajoute rien, ce n’est pas nécessaire.
    Dans le champ “MonBeauChampQuiGrandit”, onglet “Format>Personnalisé>Format de touche personnalisé” j’ai saisi le script suivant:

    if(!this.event.willCommit)
    {
    console.clear();
    lgbase=3;
    fref=this.getField(“Reference”);
    fsaisie=this.getField(“MonBeauChampQuiGrandit”);
    fsaisie.readonly=false;
    fsaisie.hidden=false;
    fsaisie.rect=fref.rect;
    fref.readonly=true;
    fref.hidden=true;
    rectangle=fref.rect;
    //calcul de la largeur de référence
    larg=rectangle[2]-rectangle[0];
    //lecture du contenu du champ
    lg=this.event.value;
    //calcul de la nouvelle abscisse
    ratio=(lgbase+lg.length)/lgbase;
    newlarg=ratio*larg;
    position=Math.max((rectangle[0]+newlarg),(rectangle[0]+larg));
    pageBox=this.getPageBox();
    console.println(“PageBox droit=”+pageBox[2]+” position =”+position);
    rectangle[2]=Math.min(position,pageBox[2])
    //Pour les curieux:
    console.println(“Chaîne de caractères=”+lg);
    console.println(“Longueur chaine de caractères=”+lg.length);
    console.println(“ratio amplification=”+ratio);
    console.println(“Longueur variable du champ de saisie=”+newlarg);
    console.println(“Longueur mini du champ de saisie=”+larg);
    //On dimensionne
    fsaisie.rect=rectangle;
    }
    Faites des tests, ce n’est pas totalement abouti mais ça devrait se rapprocher de ce que vous voulez.
    Fonctionne avec Adobe Reader 8,9,10, éviter le 7.

    alex
    Participant

    Pour palier à ces inconvénients je place un calque sur le formulaire, calque qui sera masqué par script à l’ouverture. Si le lecteur n’interprète pas le JavaScript, le calque reste en place. Sur ce calque un message indique qu’il faut passer par Adobde Reader. On peut aussi placer un gros bouton avec un texte d’avertissement (même méthode).

    alex
    Participant

    Dans cette version fonctionnellement identique à la précédente toujours sous AcroForm, le script détecte l’éventuelle absence de listes d’items. Pour retrouver la console et suivre l’historique du déroulement du programme sous Acrobat (Ctrl-J SUR PC ou POMME-J sur MAC). J’espère avoir répondu à votre dernier problème.

    Ce sujet semble avoir un gros succès…

    [attachment deleted by admin]

    alex
    Participant

    Dans cette version (à tester), vous trouverez la méthode définissant les listes déroulantes avec des valeurs d’export en clair (plus pratique pour récupérer les données sur un serveur). Attention, les listes sont à compléter pour fonctionner dans tous les cas de figure. L’initialisation peut être lancée en ouverture de page et on peut donc supprimer le bouton.

    [attachment deleted by admin]

    alex
    Participant

    Un champ numérique contenant des nombres décimaux notés avec des points (123.85) au lieu de virgules refusées par Excel ? C’est une supposition….

    alex
    Participant

    Bien vu Merlin, ça peut servir !
    pikmin04, je regarde le problème de l’envoi des données vers un serveur, effectivement en l’état on reçoit les indices des items et non les valeurs elles-même ce qui complique la tâche à l’arrivée à moins d’avoir une copie des mêmes tables dans le script du serveur (pHp ou CGI).Lorsque j’aurai une solution propre j’ouvrirai un nouveau fil “Listes déroulantes en cascade” …

    alex
    Participant

    Voilà une maquette pour illustrer une solution à votre problème si ça peut vous dépanner. Attention, la définition des tables n’est pas complète (limitée à Afrique et Europe), saurez-vous vous en débrouiller ?
    On peut supprimer le bouton “Init”, l’initialisation se fait avec l’ouverture de page (script Initialisation())
    Les deux autres scripts sont lançés:
    1-par action du menu déroulants de niveau 1 (les continents)  pour RemplissageFille()
    2-par action du menu déroulants de niveau 2 (les pays)  pour RemplissagePetiteFille()

    Les villes sont répertoriées dans les liste ListeN3 comme suit:
    c est le rang du continent issu de la liste ListeN1 des continents.
    p est le rang du pays issu de la liste ListeN2[c] des pays.
    ListeN3[c][p]=[“Ville1″,”Ville2″,”Ville3″,”Ville4″,”Ville5”];

    Aucune des listes de niveau 1, 2 ou 3 n’est limitée en nombre.

    On peut adapter ce système à une autre hiérarchie (il suffit de modifier les tables du script d’initialisation).

    [attachment deleted by admin]

    alex
    Participant

    En effet, il faut revoir le script initial pour qu’il s’adapte aux trois niveaux (Continent,Pays,Ville) au lieu des deux niveaux de l’exemple précédant. Accordez moi quelques jours, je vais vous proposer une solution AcroForm uniquement…

    alex
    Participant

    Desole. Je suis sur un lit d ‘hôpital avec un iPhone. Retour prévu pour le 23 janvier.

    en réponse à : Script pour formulaire imposant un @ et un point. – RÉSOLU #52428
    alex
    Participant

    Attention les jeunes ! Ce script vite fait à l’américaine considère les adresses de type “jojo.martin@company.oleane.com” et d’autres comme invalides !

    alex
    Participant

    Bonne année à tous.
    Je vais donner un exemple dans les prochains jours.

    en réponse à : Script Javascript lors de l’ouverture du PDF. – RÉSOLU #52416
    alex
    Participant

    C’était de l’ironie… Vous l’aviez compris chère Bizou.

    en réponse à : Adobe Reader pour iOS ? / plug-ins Flash – ACTUALITÉ À SUIVRE #51796
    alex
    Participant

    Pour ma part j’utilise PDF Expert qui interprète certes partiellement le JavaScript, mais suffisamment pour satisfaire un grand nombre de besoins des formulaires interactifs, envoi de données en prime. Seule ombre au tableau, l’absence de vidéos embarquées, et pour cause…. Ce produit évolue très vite face à Adobe Reader gratuit pour iPad qui est assez indigent, comme la plupart des lecteurs proposés sur l’AppStore.

    alex
    Participant

    Dommage, et la prochaine fois ?
    Je vais vous faire une petite maquette, vous comprendrez la méthode et pourrez l’adapter la prochaine fois…

    en réponse à : Script Javascript lors de l’ouverture du PDF. – RÉSOLU #52413
    alex
    Participant

    Oui, je donne assez souvent des solutions qui fonctionnent. J’en suis moi-même étonné.

    en réponse à : Récupération des données d’un fichier PDF. – RÉPONDU #52386
    alex
    Participant

    Il s’agit probablement d’un formulaire généré sous Adobde LiveCycle Designer, et les données sont  présentes dans le fichier de type  .xlm que l’on peut ouvrir sous Excel. Il peut y avoir des problèmes sous Windows Xp et des versions d’Excel anciennes, on trouve les solutions sur le Web.

    en réponse à : Texte à centrer horizontalement et verticalement. – RÉPONDU #52369
    alex
    Participant

    Désolé, pas de solution pour ça sinon une usine à gaz…

    en réponse à : Script Javascript lors de l’ouverture du PDF. – RÉSOLU #52411
    alex
    Participant

    Sous Acrobat, il n’est pas prévu d’associer un script à l’ouverture d’un document, mais à l’ouverture de page. Par contre, à la fermeture de document on peut lancer un script. C’est bizarre, mais c’est comme ça. Comment faire?
    1-Une première solution est d’ajouter une page vierge en fin du document, ouverte par défaut à l’ouverture du document et de lui associer le script d’alerte puis de pointer sur la première page:

    app.alert(“Mon message important”,1);
    this.pageNum=0;

    2-Une seconde solution consiste à créer un script de document:
    Options avancées>Traitement du document>Scripts JavaScript

    function ajout()
    {
    app.alert(“Mon message important”,1);
    }
    puis de supprimer toutes les lignes dans l’éditeur sauf :
    app.alert(“Mon message important”,1);

    Le script d’alerte sera alors exécuté à l’ouverture.

    3-Une troisième solution réservée aux experts…  saisie directe:
    Options avancées>Traitement du document>Modifier tous les scripts JavaScript
    //
    /*********** appartient à : Document-Level:Ouverture ***********/
    app.alert(“Mon message important!”,3);
    //

    alex
    Participant

    Pour résoudre ce problème il faut attribuer aux champs texte et aux boutons des noms génériques du style :
    Bouton_pp_xxx où pp est le numéro de page (de 00 à 99) et xxx le rang du bouton sur la page considérée.
    Question_pp_xxx où pp est le numéro de page (de 00 à 99) et xxx le rang du bouton sur la page considérée.
    Reponse_pp_xxx où pp est le numéro de page (de 00 à 99) et xxx le rang du bouton sur la page considérée.
    Ensuite, pour chaque action, un script unique sera capable de reconnaître l’origine de l’action (event.target.name), de s’assurer de la validité de son nom (event.target.name.substring(0,6)==”Bouton”) puis d’agir sur les champs associés de même page et même rang soit le champ ayant pour nom:”Reponse”+event.target.name.substring(7,13).
    Nota:on peut se passer du numéro de page et ne traiter que les rangs des questions.

    Eh oui, un ou deux scripts suffisent à cette affaire !

    Envoyez quelques pages de votre questionnaire, le script en place, le reste suivra…

    en réponse à : Connexion annuaire LDAP. – RÉPONDU #52343
    alex
    Participant

    Les exemples de scripts sont nombreux ici:
    http://www.fpdf.org/
    Un bon tutoriel ici chez Developpez.com, un site à ne jamais perdre de vue:
    http://jc-cornic.developpez.com/tutoriels/php/pdf/index.php

    en réponse à : Connexion annuaire LDAP. – RÉPONDU #52341
    alex
    Participant

    Oui, c’est clair. Il existe des classes PHP qui font ce travail.
    Pour ma part j’utilise FPDF, très simple à utiliser avec une base de données mySQL.
    Voir aussi TCPDF, plus simple à utiliser paraît-il et PDFLib.
    Toutefois, attention, le document généré par ces classes est un PDF à plat (les champs de données ne sont pas recréés).

    alex
    Participant

    Voilà une solution sous acroForm. Pour que le système fonctionne, il suffit que les champs aient des noms commençant par AZERTY,QWERTY,QWERTZ respectivement, quelque soit le nombre de ces champs dans chaque groupe. Voir maquette.
    Attention, le script est lancé à partir de la liste déroulante (Onglet Format>Script de touches personnalisé> Action().
    Le script action() se situe au niveau du document et capte le changement de valeur de la liste.
    Ouvrir la console pour voir les éditions console.println

    function Action()
    {
    console.clear();
    prefixe=this.event.change;
    console.println(“Sélection de “+prefixe)
    //Passer en revue tous les champs du document…
    indexField=0;
    while(indexField {
    nameField=this.getNthFieldName(indexField)
    entete=nameField.substring(0,6);
    //Masquer les champs des séries AZERTY,QWERTY,QWERTZ
    if(entete==”AZERTY”|entete==”QWERTY”|entete==”QWERTZ”)
    {
    this.getField(nameField).hidden=true;
    }
    //Afficher les champs de la série choisie
    if(entete==prefixe)
    {
    this.getField(nameField).hidden=false;
    console.println(“Affichage du champ “+nameField)
    }
    indexField=indexField+1;
    }
    }

    Pour la solution Live Cycle Designer, vous patienterez un peu, je travaille sur Mac et cet outil de développement ne fonctionne que sur Pc

    [attachment deleted by admin]

    en réponse à : Calcul sous conditions #49415
    alex
    Participant

    Le script pourrait être le suivant (à bien placer):
    Frais= this.getField(“PORT”);
    Qte=this.getField(“QTT”);
    Frais.value=0;
    if(Qte.value==1)
    {
    Frais.value=6.60;
    }
    if(Qte.value==2)
    {
    Frais.value=7.95;
    }
    if(Qte.value==3)
    {
    Frais.value=8.95;
    }
    if(Qte.value==4)
    {
    Frais.value=9.95;
    }
    if(Qte.value==5)
    {
    Frais.value=11.95;
    }
    if(Qte.value==6)
    {
    Frais.value=11.95;
    }
    if(Qte.value==7)
    {
    Frais.value=11.95;
    }
    if(Qte.value==8)
    {
    Frais.value=13.95;
    }
    if(Qte.value>8)
    {
    Frais.value=13.95;
    }

    en réponse à : Calcul sous conditions #49414
    alex
    Participant

    Après avoir corrigé ce qui suit, à savoir, un problème de syntaxe, les choses devraient s’éclaircir.
    Pour les comparaisons, le signe = doit être doublé, exemple:

    if(this.getField(“QTT”).value==0)
    {
    //script à exécuter
    }

    alex
    Participant

    Envoyez plutôt votre formulaire, ce sera plus simple que de reconstruire votre modèle…
    Si vous laissez tomber LiveCycleDesigner pour l’éditeur intégré d’Acrobat (acroForm), vous aurez une réponse plus rapide. A vous de voir.

    en réponse à : Actualisation de formulaire – RÉSOLU #52314
    alex
    Participant

    Je ne peux pas l’affirmer mais j’ai déjà eu des déboires avec l’ordre des tabulations en passant de la version Acrobat 8 à X. Je n’ai pas fait de tests pour confirmer.

    alex
    Participant

    1-L’objet console permet d’afficher les erreurs de syntaxe ou les informations que l’on souhaite visualiser pour suivre le -déroulement d’un script. Pour ouvrir la console Ctrl-J sur Pc ou Pomme J sur Mac.
    Quelques bases:
    console.clear();
    efface le contenu de la console.
    console.show();
    affiche la console.
    console.println(“Texte sur la console”);
    écrit la ligne “Texte sur la console” dans la console.
    console.println(this.gefField(“Resultat”).value);
    donne la valeur du champ “Resultat”.

    2-Le statut coché d’une case à cocher:
    if(this.getField(“CaseACocher”).isBoxChecked())
    {
    //script à éxécuter…
    }
    3-Sur une liste déroulante, on peut tester:
    this.getField(“ListeDeroulante”).value
    ou
    this.getField(“ListeDeroulante”).valueEx

    Le plus simple est de capter les évènement à la source, ici le script associé à la liste déroulante:
    Onglet Format>Script de touches personnalisé, exemple:

    this.getField(“ResultatValeur”).value=this.event.change;
    this.getField(“ResultatValeurEx”).value=this.event.changeEx;

    Voir maquette jointe.

    4-Merlin a répondu, il faut être attentif au format des champs…

    [attachment deleted by admin]

    alex
    Participant

    Le calcul ci-dessous est lançé depuis le champ “Resultat”:
    Calcul();
    Au niveau du document, la fonction Calcul a été créée. Ouvrir la console pour visualiser le suivi du calcul (console.println)
    function Calcul()
    {
    console.clear();
    console.println(“Debut du calcul apres action sur “+this.event.target.name+” de valeur “+this.event.target.value)
    var c=this.getField(“Groupe”);
    var a1=this.getField(“case1”);
    var a2=this.getField(“case2”);
    var a3=this.getField(“case3”);
    var a4=this.getField(“case4”);
    if(c.value==”Choix6″)
    {
    console.println(“Cas 6”)
    this.getField(“Resultat”).value=(a1.value-a4.value)*a3.value;
    }
    if(c.value!=”Choix6″)
    {
    console.println(“Autres cas”)
    this.getField(“Resultat”).value=(a1.value-a2.value)*a3.value;
    }
    }

    Regardez bien les comparaisons:
    c.value==”Choix6″

    Voir maquette…

    [attachment deleted by admin]

    en réponse à : Actualisation de formulaire – RÉSOLU #52311
    alex
    Participant

    Ceci est d’autant plus intéressant qu’il est très facile de perdre l’ordre de tabulation des champs lors de manipulations au niveau de la page ou de changement de version d’Acrobat.

    en réponse à : Actualisation de formulaire – RÉSOLU #52309
    alex
    Participant

    Avec un script de Calcul unique plaçé au niveau du document, le problème ne se pose pas quel que soit l’ordre de saisie des données.

Affichage de 99 réponses de 199 à 297 (sur un total de 564)