Donnez vie à vos documents numériques !
 

alex

Toutes mes réponses sur les forums

Affichage de 99 réponses de 100 à 198 (sur un total de 603)
  • Auteur
    Réponses
  • en réponse à : Affichage d’une valeur selon menu déroulant #59929
    alex
    Participant

    Voici donc ma seconde manière à la fois plus simple et plus complexe.
    On saisit les valeurs d’export dans le menu déroulant “DropSown1”, onglet “Options”.
    Cette fois le script est encore associé au menu déroulant “DropSown1”, mais sous l’onglet “Format”, script de touche personnalisé.
    Onglet “Options”, il ne faut pas nécessairement cocher la case “Valider la valeur sélectionnée immédiatement”.

    Plus simple : la saisie des données.
    Moins simple à comprendre : le script associé à l’évènement :

    if(!event.willCommit)
    {
    bb=this.getField(“BRow1”);
    bb.value=this.event.changeEx;
    }

    Bonsoir.

    en réponse à : Affichage d’une valeur selon menu déroulant #59928
    alex
    Participant

    Bonjour,

    Voir maquette jointe. Le script est associé au menu déroulant “DropDown1”, onglet “Validation” “Exécuter le script de validation personnalisé”.
    Attention, onglet “Options”, il faut cocher la case “Valider la valeur sélectionnée immédiatement”.
    Cette solution est basique:


    bb=this.getField(“BRow1”);
    bb.value=””;
    if(saisie==”choix A”){bb.value=20.59;}
    if(saisie==”choix B”){bb.value=41.17;}
    if(saisie==”choix C”){bb.value=54.76;}


    Une autre méthode consiste à associer les valeurs aux items du menu déroulant. Je donnerai également une maquette illustrant cette méthode apparemment plus simple…

    Amitiés à tous.

    en réponse à : Formulaire : JavaScript double condition #59947
    alex
    Participant

    //Un peu de logique combinatoire !
    Si je lis bien, une seule condition devrait suffire à rendre un objet visible, ici un champ de formulaire.
    fff=this.getField(“Nom du champ”);
    if(ccc==”Oui”&adher==”Oui”)

    {
    //condition satisfaite
    fff.display=display.visible;
    }
    else
    {
    //condition non satisfaite (tous les autres cas)
    fff.display=display.hidden;

    }

    en réponse à : Afficher le numéro de la semaine #59850
    alex
    Participant

    Voici corrigé le pb des débuts d’années. Reste l’analyse de la validité des saisies jour/mois/année.

    Merci Merlin pour l’info. Effectivement, ça m’aurait bien aidé pour écrire le script.

    Amitiés à tous
    Alex

    en réponse à : Afficher le numéro de la semaine #59847
    alex
    Participant

    Voici ma copie provisoire revisitée et téléchargeable j’espère.
    On peut y faire des tests et elle est facilement transposable pour obtenir le calcul de la semaine du jour courant.
    Le bouton Today affiche la date du jour et la semaine correspondante.
    Toute saisie du jour, du mois ou de l’année active le calcul de la semaine. Attention, aucun contrôle des saisies n’est configuré (on peut saisir un 15ème mois).

    Il reste à gérer l’affichage des 52 èmes et 53èmes semaines des années n-1 qui débordent sur les premiers jours de l’année en cours.
    Pour l’instant j’affiche 0 pour les journées concernées (par exemple pour 2016 et 2017).

    Une ultime version réglera ce problème et les contôles. Un peu de patience…

    Amitiés à tous.

    en réponse à : Afficher le numéro de la semaine #59842
    alex
    Participant

    Merci pour l’info,
    Voici ma copie provisoire revisitée, il reste à gérer l’affichage des 52 èmes et 53èmes semaines des années n-1 qui débordent sur l’année en cours. Pour l’instant j’affiche 0 pour les journées concernées.

    en réponse à : Afficher le numéro de la semaine #59839
    alex
    Participant

    Oops, je dois revoir mon script pour la détermination de la première semaine de chaque année. Il y a sans doute une règle à respecter que je vais chercher et corriger en conséquence.
    Mais oui, il y a bien des semaines 53 qui sont aussi la semaine 1 de l’année qui suit !
    Patience.

    en réponse à : Afficher le numéro de la semaine #59837
    alex
    Participant

    Bonjour à tous,
    Non aucune retouche à faire d’une année sur l’autre. On fait le choix 1-52 ou 1-53 une fois pour toutes.

    en réponse à : Afficher le numéro de la semaine #59834
    alex
    Participant

    Bonjour à tous,
    Voici une maquette répondant à votre problème.
    Le script weekcalc() fait le travail.

    Il est conçu de manière à pouvoir faire des tests sur la date d’entrée en désactivant la ligne:
    dd=new Date();
    Il calcule de 1 à 53 ou de 1 à 52 si on active la ligne:
    //if(weeksNum>52){weeksNum=1;}
    Activer la ligne:
    //console.show();
    pour afficher les calculs dans la console.

    Le script:

    function weekcalc()
    {
    console.clear();
    //Date pour tests attention, mois de 0 à 11
    dd=new Date(2015,11,27);
    //Date du jour
    dd=new Date();
    //
    year=dd.getFullYear();
    month=dd.getMonth();
    dd0=new Date(year,0,0);
    console.println(dd0);
    console.println(dd);
    //jour de la semaine du 31 dec precedant.
    ref=dd0.getDay();
    console.println(“jour de reference 31 dec de l annee qui precede=”+ref)
    delta=(dd.getTime()-dd0.getTime())/1000/60/60/24;
    console.println(“delta en jours=”+delta);
    weeksNumDef =(delta+ref)/7;
    console.println(“calcul semaine sans arrondi par exces=”+weeksNumDef);
    weeksNum = Math.ceil((delta+ref)/7);
    console.println(“calcul semaine arrondi par exces=”+weeksNum);
    //if(weeksNum>52){weeksNum=1;}
    this.getField(“Semaine”).value=weeksNum;
    //console.show();
    }

    en réponse à : Obligation d’un nombre de caractères minimum #59812
    alex
    Participant

    Un truc comme ça ferait-il l’affaire ?
    Voir script de validation personnalisé du champs de saisie dans la maquette jointe.
    Le nombre de caractères est paramétrable (longueur).

    Beaucoup de variantes sont possibles à partir de ce script:
    8 caractères alphabétiques uniquement.
    8 chiffresuniquement.
    Avoir un minimum de chiffres, de nombres, de majuscules ou minuscules.
    etc.

    en réponse à : Additioner les arrondis et non les valeurs réelles #59662
    alex
    Participant

    Bonjour à tous,
    Voici ma contribution (une maquette) à votre problème que j’ai repris disons, à la base….Un seul script de calcul associé au champ “Total” fait l’affaire, ici avec 5 termes à additionner.
    Pour voir les résultats intermédiaires (console.println), afficher la console.Le nombre de termes et l’ordre de l’arrondi sont des paramétrables.

    en réponse à : Affichage valeur selon choix plusieurs listes déroulantes #59313
    alex
    Participant

    Bonjour à tous,
    Voici votre maquette. Pour chaque sélecteur, veiller à cocher la case “Valider la valeur sélectionnée immédiatement” (Onglet “Options”).
    Un seul script de calcul est alors nécessaire pour obtenir le résultat dans le champ “champ”:

    v1=this.getField(“ld1”).value;
    v2=this.getField(“ld2”).value;
    v3=this.getField(“ld3”).value;
    v4=this.getField(“ld4”).value;
    v5=this.getField(“ld5”).value;
    this.event.value=Math.max(v1,v2,v3,v4,v5);

    en réponse à : Lien entre deux champs #59277
    alex
    Participant

    Bonjour à tous,
    bonjour Merlin,
    Dans ton tuto sur “les différents niveaux d’utilisation des scripts JavaScript” on trouve au paragraphe 4 la liste des évènements susceptibles de lancer l’exécution d’un script. On pourrait peut-être ajouter un petit paragraphe concernant les événements suivants:

    • Ouverture de page.
    • Fermeture de page.
    • [/list]Et en précisant la manière de faire pour:

    • Ouverture du document.
    • [/list]Dans l’exemple qui nous intéresse dans ce fil, le script de document Initialisation() est activé en ouverture de page.

    en réponse à : Listes déroulantes liées et champs associés #59080
    alex
    Participant

    Bonjour à tous,
    Oui, on peut très bien lancer le script d’initialisation à l’ouverture de page.
    On peut aussi le lancer à l’ouverture du document en utilisant la procédure suivante:

    function Initialisation()
    {
    //suite des opérations à effectuer…
    }
    Initialisation()

    C’est ce que j’ai illustré dans l’exemple joint.

    en réponse à : Déplacement automatique #58985
    alex
    Participant

    En première instance je répondrai comme Merlin.
    Il est cependant possible de nommer automatiquement, puis d’enregistrer un document .pdf (en général c’est intéressant pour les formulaires) dans un répertoire choisi en fonction de critères logiques mais il faudra pour ça recourir à un JavaScript d’application (sous Acrobat PRO ou, cerise sur le gâteau sous Acrobat Reader) qui fera passer en contexte privilégié.
    A titre d’exemple, un formulaire unique MERE disponible sur un serveur permettra la saisie puis  l’enregistrement de factures dans un répertoire Facture, des bon de livraison dans le répertoire livraison, etc…
    Nous avons déjà illustré ici ce genre de démarche avec une machine à tickets.
    Je ne peux pas vous aider plus dans le cadre du forum. Désolé.

    en réponse à : Multiplier la valeur d’un champ par un chiffre #58859
    alex
    Participant

    Bonjour,
    Voilà un formulaire provisoire. Un seul script de document à étudier (lancé par le calcul du total). Je pense qu’on ne doit pas pouvoir cocher simultanément les deux cases.
    Attention au formats numériques des cellules de saisie.
    Pour les calculs il faut vérifier.
    Bon week-end

    en réponse à : Message apparait plus d’une fois #58695
    alex
    Participant

    Bonjour,
    Les champs de saisie sont au format numérique. Une saisie 0 est interprétée comme une saisie vide et la comparaison n’est pas effectuée dans ce cas d’où le problème.
    Dans la boucle du script de contrôle remplacer la ligne suivante:
    if(sp.value!=””&sp.value!=9&r.value!=””&r.value!=9)
    Par:
    if((sp.value!=””|sp.value==0)&sp.value!=9&(r.value!=””|r.value==0)&r.value!=9)

    en réponse à : Problème script pour somme de données #58915
    alex
    Participant

    Oui, c’est usant de paramétrer les formats des champs numériques un à un (et on ne peut pas le faire par script). Alors, quand ce n’est pas nécessaire on s’en passe… au moins dans les tests.

    en réponse à : Multiplier la valeur d’un champ par un chiffre #58857
    alex
    Participant

    Désolé, mais une petite analyse s’impose avant de scripter le calcul du résultat:
    Case 1 et case 2 cochées simultanément: on fait quoi ?
    Case 1 cochée et case 2 non cochée: on fait quoi ?
    Case 1 non cochée et case 2 cochée: valeur à 0
    Case 1 non cochée et case 2 non cochée: valeur à 0
    Ensuite, quel est l’état initial de notre affaire (valeurs par défaut à 0 ou vide comme proposé par Merlin, cases non cochées ?).

    en réponse à : Problème script pour somme de données #58912
    alex
    Participant

    Bonjour,
    Si on ne précise pas le format des données saisies, le traitement procède à une concaténation de chaînes.
    On peut s’affranchir de cette “formalité” en forçant le traitement à calculer une somme, pour cela on ajoute 1* (multiplication par 1 qui lève l’ambiguité puisqu’il y a un opérateur).

    //Je veux faire la somme de 4 champs. j’ai mis ce script :
    console.clear();
    var PH11 = this.getField(“PH1-1”).value;
    var PH12 = this.getField(“PH1-2”).value;
    var PH13 = this.getField(“PH1-3”).value;
    var PH14 = this.getField(“PH1-4”).value;
    var U1 = this.getField(“U1”).value;
    if(U1 != “” && U1 != “0”)
    {
    total=1*PH11+1*PH12+1*PH13+1*PH14;
    console.println(“Resultat=”+total);
    this.event.value = total + ” u20AC”;
    }
    else
    {
    this.event.value = “”;
    }
    Voir maquette.

    alex
    Participant

    Bonjour, voici le script de la case à cocher:
    console.clear();
    console.println(“Action sur “+this.event.target.name);
    if(this.event.target.isBoxChecked(0))
    {
    this.getField(“Bouton”).display=display.visible;
    }
    else
    {
    this.getField(“Bouton”).display=display.hidden;
    }
    Et par la même occasion celui du champ de saisie pour l’exemple précédant après correction d’une de mes bêtises:

    console.println(“Action sur “+this.event.target.name);
    if(this.event.value>0)
    {
    this.getField(“Bouton”).display=display.visible;
    }
    else
    {
    this.getField(“Bouton”).display=display.hidden;
    }
    Maquette jointe illustrant simultanément les deux usages.

    alex
    Participant

    Bonjour,

    Voici un script qui va lister les calques du document et les désactiver:
    function desactivationCalques()
    {
    console.clear();
    calqueArray=this.getOCGs();
    index=0;
      while(index  {
      name=calqueArray[index].name;
      console.println(“Calque de rang “+index+”-“+name);
      calqueArray[index].state=false;
      index=index+1;
      }
    }
    Ensuite, il faut créer une table précisant les calques à activer pour chacun des items de la liste déroulante.
    Puis un script qui, en fonction de la sélection va activer ces calques… Ce n’est pas trop difficile.

    en réponse à : Multiplier la valeur d’un champ par un chiffre #58853
    alex
    Participant

    Bonjour,
    En conservant votre manière de faire voici le script de calcul du champ “Texte10”:
    if(this.getField(“Case2”).isBoxChecked(0))
    {
    event.target.value = 0;
    }
    else
    {
    event.target.value = this.getField(“Texte13”).value*0.66
    }

    en réponse à : Question de JavaScript #58826
    alex
    Participant

    Bonjour,
    Dans votre script qui me parait bon, il ne faut pas recourir à une variable globale (global.f), remplacez la par f.
    Il n’est sans doute pas utile de cocher la case de validation immédiate.
    Ci-joint ma version avec trace dans la console.

    en réponse à : Afficher/masquer des listes conditionnelles #58879
    alex
    Participant

    Les commandes d’affichage/masquage de champs sont assez pratiques pour de petits formulaires mais rapidement illisibles et sources de conflits lorsque le nombre de commandes croît.
    Je vous conseille le JavaScript. A titre d’exemple j’ai écrit un script unique associé aux occurrences du bouton radio “Group1” auxquelles j’ai associé la fonction affichage() suivante:
    function affichage()
    {
    //masquer les champs associés
    console.clear();
    this.getField(“RER”).display=display.hidden;
    this.getField(“REAA”).display=display.hidden;
    this.getField(“RF”).display=display.hidden;
    this.getField(“RE”).display=display.hidden;
    this.getField(“RSE”).display=display.hidden;
    this.getField(“RY”).display=display.hidden;
    //noter la valeur d’export du bouton radio Group1
    ckaction=this.event.target.name;
    valeur=this.event.target.value;
    console.println(“Selection de “+ckaction+” avec pour valeur :”+valeur);
    //Afficher le champ.
    this.getField(valeur).display=display.visible;
    }
    Voir maquette.

    en réponse à : Champs obligatoires et signature numérique #58773
    alex
    Participant

    Bonjour,
    Oops, j’ai été trop vite !
    Voici le script corrigé. Il vérifie que les champs obligatoires de type txt et combobox sont bien saisis. Reste à ajouter les cases à cocher obligatoires. Je reviendrai sur ce sujet à l’occasion.
    A vérifier. Ctrl-J pour afficher la console et voir la trace du déroulement du script.

    en réponse à : Champs obligatoires et signature numérique #58771
    alex
    Participant

    Bonjour à tous,

    Voilà un script plus généraliste que le précédant et qui devrait convenir à votre formulaire. En effet, celui-ci embarque des listes déroulantes avec saisies obligatoires et une valeur par défaut vide.
    Ce script prend donc en compte les champs texte et combobox obligatoires.

    A propos de mon premier script:
    Celui-ci comporte une erreur lorsque l’on tente d’obtenir la propriété .required qui est inconsistante pour les boutons. Il faut donc exclure les boutons de l’analyse.

    alex
    Participant

    J’ai été trop vite…

    alex
    Participant

    Bonsoir,
    Voir script du bouton sur le fichier joint. A vérifier (Ctrl-J) pour ouvrir la console sousAcrobat PRO et voir les résultats intermédiaires.
    Attention au format du champ date à respecter mais on peut saisir : “3/1/2013” par exemple.

    en réponse à : Ajout de texte dans champ sur clic case à cocher #58715
    alex
    Participant

    Merci Merlin et désolé, jeanine63000, je suis avare en explications.

    en réponse à : Champs obligatoires et signature numérique #58767
    alex
    Participant

    Bonsoir,

    Qu’est-ce qui ne fonctionne pas chez vous ?
    1-Ma maquette ? Dans ce cas il faut s’assurer que le JavaScript du viewer (Acrobat PRO ou Standard ou Adobe Reader sur PC, Mac, Linux ou UNIX) est activé.
    2-Votre formulaire. Dans ce cas il faut nous le faire parvenir pour qu’on y jette un oeil.

    Par ailleurs, je ne fais plus de tests JavaScript sur les tablettes. J’attends la prochaine version d’Adobe Reader qui interprètera correctement toutes les méthodes du JavaScript et fonctionnera sur tous les supports…. Je suis très optimiste.

    en réponse à : Champs obligatoires et signature numérique #58764
    alex
    Participant

    Bonjour à tous,
    Voici ma manière de répondre à cette problématique qui diffère un peu de ce que propose Merlin:
    Pour une fois j’utilise la détection d’entrée du curseur dans le champ de signature (Action>Souris entrée)
    Je passe en revue tous les champs de saisie obligatoire du formulaire pour rechercher une éventuelle saisie manquante.Celle-ci trouvée, j’y place le curseur ce qui interdit la signature.
    Voir ma petite maquette jointe.

    NB:ce script peut être repris tel quel pour tout autre formulaire.

    alex
    Participant

    Disons que j’ai un peu dépassé la limite d’age….
    Je reviendrai plus tard sur ce formulaire, avec une autre méthode…

    alex
    Participant

    Bonjour,
    Voilà un premier jet qui démontre la faisabilité du projet (enregistrement de données sous Adobe Reader):
    Pour ajouter un nouvel enregistrement, sélectionner l’item vide (le dernier de la liste) puis presser “?” ce qui rend les champs saisissables. Saisir les données et valider.
    Les enregistrements enregistrés sont modifiables.

    Quelques restrictions:
    -On ne peut ajouter qu’un seul enregistrement à la fois (il faut réouvrir le formulaire).

    -Pas de suppression d’enregistrement (sauf à les effacer tous).
    -Pas de tri des items.
    -Nombre d’enregistrements limités.

    en réponse à : Message apparait plus d’une fois #58690
    alex
    Participant

    On approche du but.
    C’est le calcul de la variable sommeRP qui était concerné par cette erreur car il passait par la mise à jour des champs RP. Une erreur de débutant….
    J’ai indiqué en commentaire dans le script de controle les modifications que j’ai apporté.
    Reste à faire quelques tests pour les cas particuliers (saisies inconsistantes en particulier).
    On voit dans cet exemple qu’il faut préférer le script unique à une cascade de calculs associés à des champs, enchaînement toujours délicat à gérer.

    en réponse à : Message apparait plus d’une fois #58689
    alex
    Participant

    Bonjour,
    C’est justement pour éviter les retards que les calculs sont regroupés dans un script unique, malgré cela il y a quelques précautions à prendre.
    J’ajoute les derniers calculs (SRS et SDS) et je reviens vers vous avec un petit commentaire.

    alex
    Participant

    Effectivement, les listes mères-filles de nos exemples sont prédéfinies (un script décrit les tables des items des menus déroulants).
    Deux problèmes pour votre projet:

    1-La mémorisation des données:

    Pour résoudre ce problème, et si on s’impose de travailler avec Adobe Reader, ces données seront obligatoirement stockées dans des champs de texte invisibles et restituées à chaque usage. Par ailleurs, et le formulaire aura ses “Reader Extensions” activées pour s’assurer de la mémorisation des données saisies.
    2-La saisie du nouveau nom:
    Ce n’est pas possible de l’ajouter directement sur le menu déroulant, on devrait le faire sur la partie affichage.

    On peut voir…

    en réponse à : Message apparait plus d’une fois #58687
    alex
    Participant

    Voici une maquette qui fonctionne avec deux scripts:
    1-chaque saisie validée active le script unique baptisé controleSaisie() qui vérifie la validité de la saisie des 34 champs de votre formulaire et note le rang du couple SP/rawSP impacté par la saisie.
    2-Un script de contrôle unique baptisé controle() lié au calcul du champ “SSS” vérifie la cohérence des saisies “SP” et “rawRP”, détermine “RP” et calcule et renseigne les champs de résultats “SSS”,”SRSraw” et “SDSraw” et les LVS. Pour les champs “SRS” et “SDS” et les “TID” je n’ai pas les formules de calcul.

    Le bouton “Normal” côté STRESS PERFUSION réinitialise la partie du formulaire gauche correspondante. Script initialisationSP().
    Le bouton “Normal” côté REST PERFUSION réinitialise la partie du formulaire droite correspondante et les “RP”. Script initialisationrawRP().

    Il reste à replacer les champs de saisies dans l’ordre souhaité par l’utilisateur pour usage des TAB et les formules de calcul manquantes à ajouter dans le script de contrôle.

    Notez bien que je n’utilise qu’une seule action de type calcul (sur le champ “SSS”).

    en réponse à : Forcer saut de page (Nouvelle feuille) #56836
    alex
    Participant

    Pour info, si ça intéresse du monde, voici comment j’ai contourné le problème : j’ai lancé plusieurs commandes “print” en les faisant débuter à l’endroit où j’avais besoin.

    Bonjour,

    Je pense qu’on peut faire la même chose par script en lançant des tâches d’impression consécutives genre:
    console.clear();
    // Passer le statut à true pour faire apparaître le menu lors des tests.
    statutPopUp=false;
    console.println(“Impression partie pages 1 à 3.”);
    //On se positionne page 1 et on lance une tâche d’impression.
    this.pageNum=0;
    this.print({
    bUI:statutPopUp,
    nStart:0,
    nEnd:2,
    bSilent:false,
    bReverse:true,
    bShrinkToFit:true
    });6.”);
    //On se positionne page 3 et on lance une seconde tâche d’impression.
    this.pageNum=3;
    this.print({
    bUI:statutPopUp,
    nStart:3,
    nEnd:5,
    bSilent:false,
    bReverse:true,
    bShrinkToFit:true
    });

    Puis mettre ce script en boucle pour imprimer plus d’un exemplaire….

    en réponse à : Ajout de texte dans champ sur clic case à cocher #58707
    alex
    Participant

    Bonjour,
    Deux colonnes fonctionnent.
    Compléter les autres cases à cocher pour les autre colonnes (deux lignes de script de validation à chaque fois) en s’inspirant des deux premières….

    en réponse à : Message apparait plus d’une fois #58685
    alex
    Participant

    Attention, je n’ai pas saisi le script de validation de tous les champs “SP” et “rawRP”, à compléter donc avec :
    controleSaisie();

    en réponse à : Message apparait plus d’une fois #58684
    alex
    Participant

    Dans votre script, n n’est pas défini.
    Sans votre maquette, je ne peux rien faire car je ne vois pas les déclencheurs.

    Aussi, je vous propose la mienne qui fonctionne avec deux scripts:
    1-chaque saisie validée active le script unique baptisé controleSaisie() qui vérifie la validité de la saisie des 34 champs de votre formulaire.
    2-Un script de contrôle baptisé controle() lié au calcul du champ “SSS” vérifie la cohérence des saisies “SP” et “rawRP”, calcule et renseigne les champs de résultats “RP”,”SRS” et “SDS”. Il faudra ajouter les calculs des champs manquants au sein de ce même script.
    Le bouton “Reset” est à vocation pédagogique. Il réinitialise le formulaire pour faire des tests.
    Pour la compréhension, les champs non saisis ont une bordure rouge par défaut, à corriger si besoin.
    Pour la compréhension, les champsRP valides apparaissent au fur et à mesure des saisies, à corriger si besoin.

    Il reste sans doute un peu de travail, mais l’essentiel est là. Inspirez vous du script initialisation() pour vos boutons radio “SPNormal” et “RPNormal”.

    en réponse à : Où trouve-t-on les Pays et les Villes #58634
    alex
    Participant

    J’ai fait le test. Il n’est pas possible de modifier des pièces jointes sous Adobe Reader (la méthode setDataObjectContents n’est même pas fonctionnelle en contexte privilégié)
    En conclusion: possibilité d’ajout d’items de menus déroulants uniquement sous Acrobat !
    Désolé.

    en réponse à : Où trouve-t-on les Pays et les Villes #58633
    alex
    Participant

    Bonjour,
    Oui, je suis comme les robots de Google, je passe ici de manière aléatoire…
    La maquette illustrant une manière de créer des menus déroulants en cascade ici sur trois niveaux n’est pas prévue pour être modifiée par l’utilisateur. Les données sont chargées à l’ouverture du document par le script d’initialisation.
    Je suis désolé pour vous mais il faudrait pas mal travailler pour ajouter cette fonctionnalité car il faudrait recourir à un fichier .csv ou .xls associé en pièce jointe au document, utiliser les méthodes getDataObjectContents et setDataObjectContents et bien manipuler les chaînes ce caractères et les encodages. Enfin, il faut s’assurer que ça fonctionne bien sous Adobe Reader pour la partie écriture (setDataObjectContents) en faisant un test avant de s’embarquer pour l’aventure….

    en réponse à : Préférence d’item dans une liste déroulante #58526
    alex
    Participant

    Bonjour,
    Ajoutez à votre code la ligne suivante si vous souhaitez que la liste déroulante se positionne sur le premier item à l’ouverture de votre formulaire:
    ff.currentValueIndices =[0];
    Où 0 précise le rang de l’item choisi dans la liste.

    en réponse à : Message apparait plus d’une fois #58682
    alex
    Participant

    Quelques pistes pour commencer…
    Ci-dessous exemple pour le premier script des champs rawSp:
    function controlerawSP()
    {
    console.clear();
    saisie=this.event.value;
    champsaisierw=this.event.target;
    nomchamprw=this.event.target.name;
    nomchampRP=”RP”+nomchamprw.substring(5,nomchamprw.length)
    console.println(“Saisie de la valeur “+saisie+” sur “+nomchamprw+” associe a “+nomchampRP);
    //Validite de la saisie
    if(saisie!=””)
    {
    if((saisie>=0&saisie<=4)||saisie==9)
    {
    //Valid
    this.getField(nomchampRP).required = false;
    }
    else
    {
    app.alert(“ERROR: Please input a value between 0 and 4, or 9 if Unevaluable”,1);
    event.rc = false;
    }
    }
    else
    {
    champsaisierw.required = true;
    this.getField(nomchampRP).required = true;
    }
    }

    Ci-dessous correction du script pour le calcul de SSS:
    console.println(“Calcul SSS”)
    var total = 0; 
    for (var i=1; i<=17; i++)
    {
    var v =this.getField(“SP”+i).value; 
    if (v!=9) {total+v; }

    event.value = total; 

    if(event.value <=0) event.value = "";

    en réponse à : Message apparait plus d’une fois #58681
    alex
    Participant

    Bonjour,
    Il faut savoir que tous les scripts de calcul (en particulier des champs rawRP et RP) sont exécutés quelque soit la saisie effectuée.

    Je vous conseille de revoir globalement ce document et suivre le conseil de Merlin avec:
    une unique fonction liée à la validation de chaque saisie SP baptisée controleSP() pour s’assurer de sa validité (chiffre de 0 à 4 ou 9) .
    une unique fonction liée à la validation de chaque saisie rawSP baptisée fonctionrawSP()
    pour s’assurer de sa validité (chiffre de 0 à 4 ou 9) .
    une unique fonction dédiée au contrôle liée à la validation des saisies rawRP controle() assurant la comparaison de la valeur rawRP à la valeur SP correspondante.
    une unique fonction de calcul pour chacun des champ RP

    Par ailleurs les calculs des champ SRS et SRSraw me semblent erronés mais je peux me tromper.

    en réponse à : Aide pour écriture JavaScript #58603
    alex
    Participant

    Il n’y a pas de frais sur la seule partie verte de la première page (stotal1), voici le formulaire à vérifier.
    Le script est embarqué par le seul champ “frais”. Ce script gère l’affichage des frais forfaitaires et le calcul du total general.

    A vérifier donc.

    [Fichier joint supprimé par l’administrateur le 24-06-2015]
    Je viens de recevoir une requête de la RATP me demandant de supprimer le fichier joint.
    C’était un bon de commande obsolète qui apparaissait en bonne place dans les résultats de Google, et que donc des internautes utilisaient…

    en réponse à : Envoyer par courriel une seule page d’un PDF #58591
    alex
    Participant

    Si le but de  cet envoi est de récupérer des données saisies dans les deux premières pages du formulaire pourquoi ne pas envoyer ces données sous forme de fichier fdf ?

    Dans ce cas on aura recours à un bouton dont l’action sera: “Envoyer un formulaire” en prenant soin de libeller l’adresse d’envoi comme suit :

    mailto:adresse email
    et de choisir les champs dont le contenu doit être envoyé.
    Voir copie d’écran.

    Lors de l’utilisation, sous Adobe Acrobat mais aussi sous Adobe Reader, on a le choix du type de messagerie (local ou distant), le mail est généré automatiquement, reste à l’envoyer.

    en réponse à : Aide pour écriture JavaScript #58601
    alex
    Participant

    Bonjour,
    Voici une maquette avec les éléments d’entrée (saisies des valeurs a, b, c) et le résultat du calcul.
    Le script de document réalise les tests et le calcul lors de toute saisie des valeurs a, b ou c.
    Je corrigerai dès que j’aurai compris la demande.

    script:

    a=this.getField(“ChampA”).value;
    b=this.getField(“ChampB”).value;
    c=this.getField(“ChampC”).value;
    if(a==0|c==0)
    {
    this.event.value=a+b+c;
    }
    else
    {
    this.event.value=a+b+c+30;
    }
    Dans l’attente….
    A+

    en réponse à : Numérotation automatique. – RÉPONDU #56217
    alex
    Participant

    Bonjour,
    Oui, il faut procéder comme indiqué par Merlin puis vérifier et corriger les paramètres d’initialisation si nécessaire:
    //donnees de base numérotation automatique
    //Nom du champ contenant le numero de formulaire
    fNum=”Num_Bordereau”;
    //Nom du bouton de numérotation.
    fNumAction=”Num”;
    //Nom du bouton de validation du formulaire.
    fNumValid=”Validation”;
    //
    enTete=”RSA”;

    Scripts requis:
    1-Ouverture document:
    initialisation()
    2-Bouton de validation:
    enregistrement()

    3-Enregisrement du document:
    Le dernier numéro est mémorisé par une variable locale lors de l’enregistrement du formulaire:
    global.dernNum=this.getField(fNum).value;global.setPersistent(“dernNum”,true);

    en réponse à : Interdire la saisie d’une date antérieure #58463
    alex
    Participant

    J’ai bien dit:
    Attention, cette solution fonctionne pour le format “JJ/MM/AAAA”.
    J’aurais du écrire:
    Attention, cette solution ne fonctionne que pour le format “JJ/MM/AAAA”.
    Mais on pourrait aussi effacer les saisies de format inappropriées.

    en réponse à : Interdire la saisie d’une date antérieure #58461
    alex
    Participant

    Bonsoir,
    Voir la maquette jointe pour une solution basique certes, mais qui pourra facilement s’adapter à des sélections de dates par menus déroulants (Jour,mois;année).
    Attention, cette solution fonctionne pour le format “JJ/MM/AAAA”.

    en réponse à : Remplissage de champs de texte via une liste déroulante #58166
    alex
    Participant

    Désolé, je n’ai pas trop de temps mais voici une maquette assez moche pour illustrer une manière de faire.
    Si j’ai bien compris, il ne s’agit pas de menus déroulants en cascade même si certaines parties de scripts peuvent nous inspirer ici.

    Le script init() de document prépare une table de données et remplit le menu déroulant “Selecteur”.
    A la sélection d’un item du menu déroulant on va rechercher les données dans la table pour renseigner les champs du formulaire.Cette action est réalisée par le script de format > script de touches personnalisé.

    Bonne soirée

    en réponse à : Champs obligatoires avant enregistrement #58143
    alex
    Participant

    Voici une maquette illustrant la proposition de Merlin.
    A l’enregistrement, une alerte apparaît listant les saisies obligatoires manquantes.
    Attention, la couleur de bordure des champs de saisie obligatoire est gérée par le script.

    Bonne soirée.
    Alex

    alex
    Participant

    Ci-joint une ébauche de solution…
    L’administrateur peut réinitialiser la page de formulaire courante en activant un bouton transparent situé au dessus de la colonne des prix, le code est ici “1234”. Les champs de saisie des prix redeviennent alors tous saisissables (readonly=false) avec un encadrement transparent (facultatif, c’est pour la démo).
    L’utilisateur peut modifier les prix. Lors de la validation une alerte lui demande s’il souhaite l’inscrire en dur. Si la réponse est positive, le champ passe en non saisissable (readonly=true) et est encadré de vert (facultatif, c’est pour la démo).
    Pour le bon fonctionnement sous Adobe Reader il faut activer les Reader Extensions avant mise à disposition du formulaire.
    Fichier>Enregistrer sous un autre…>Fichier PDF Reader Extended>Activer d’autres outils (notamment ….)

    Nota 1: le nom des champs de prix sont de la forme “BBp.x” où p est le numéro,de la page du catalogue et
    x l’indice du prix. Le rang x=0 est réservé au titres des colonnes de prix. On peut donc ajouter autant de pages que nécessaire.

    Nota 2:On peut évidemment ajouter un bouton de reset global (boucle sur l’ensemble des pages de tarif).

    en réponse à : Formule rapide pour addition de champs #57933
    alex
    Participant

    Salut Merlin,
    Je connais bien cette manière de faire qui conduit certes à un script de calcul très court mais qui restreint la liberté de choisir les noms des données, en particulier lorsqu’on doit les envoyer vers un serveur ou les récupérer en XML.
    Dans mon exemple, j’ai bien sûr une série de termes de la forme “Montant.x” mais aussi des champs aux noms légèrement différents (“MontantEmballage” ou “MontantTransport” par exemple) plus explicites.
    A chacun sa manière…
    Bonne soirée à tous.

    en réponse à : Javascript réinitialiser champs spécifiques avec un bouton #57930
    alex
    Participant

    Pour plusieurs champs, bouton 1:
    this.resetForm([“Champ1″,”Champ2″,”Champ3”]);
    Bouton 2:
    this.resetForm([“Champ5″,”Champ6”]);
    Ne pas oublier les crochets, la liste est un tableau.

    en réponse à : Formule rapide pour addition de champs #57931
    alex
    Participant

    Bonjour,
    Ci-joint une maquette pour illustrer la manière:
    Le champ “TotalMontants” embarque le script qui vous intéresse. Ce script fait la somme de tous les champs dont le nom commence par Montant.
    On peut créer autant de champs de calcul que l’on veut, il suffit de préciser l’en-tête du nom des champs à additionner (teteNom=”xxxx”;)
    Voici ce script avec quelques éditions pour la console (Ctrl J pour l’afficher).

    console.clear();
    teteNom=”Montant”;
    indexField=0;
    indexTerme=0;
    total=0;
    while(indexField {
    //Recupere le nom du champ.
    nameField=this.getNthFieldName(indexField);
    if(nameField.substring(0,teteNom.length)==teteNom)
    {
    indexTerme=indexTerme+1;
    console.println(indexTerme+”-“+nameField+”-valeur=”+this.getField(nameField).value)
    total=total+1*this.getField(nameField).value;
    }
    indexField=indexField+1;
    }
    console.println(“Total=”+total)
    this.event.value=total;

    en réponse à : Validation JavaScript et Contrôle sur Signature Manuscrite #57838
    alex
    Participant

    Bonjour à tous,
    Tant que la dernière saisie d’une donnée n’est pas validée par “Enter” ou “Tab”, la valeur ne peut être prise en compte par le script du bouton “Test”.
    Faites des essais avec la maquette jointe.

    en réponse à : Equivalent de A99A et AA99A en script #57817
    alex
    Participant

    Même chose avec le détail de l’analyse (ouvrir la console après validation Ctrl J ou Pomme-J)

    en réponse à : Equivalent de A99A et AA99A en script #57815
    alex
    Participant

    Bonsoir à tous,
    Voici ma solution si vous ne souhaitez pas accepter les majuscules accentuées. Je passe par les codes ASCII des digits pour reconstituer le format. L’intérêt de cette manière de faire, c’est qu’on peut l’adapter à des formats très divers.
    Les codes ASCII des chiffres vont de 48 à 57 et ceux des majuscules de 65 à 90
    Le script
    testF() de document à exécuter après validation quelque soit le champ de saisie est donc le suivant:

    function testF()
    {
    index=0;
    mot=this.event.value;
    format=””;
    console.println(“Analyse de la saisie du champ “+this.event.target.name)
      while(index  {
      digit=mot.charCodeAt(index); 
      if(digit>47&digit<58){format=format+"9";}
      if(digit>64&digit<91){format=format+"A";}
      index=index+1;
      }
    console.println(“Format de la saisie:”+format);
      if(format!=”AA99A”&&format!=”A99A”)
      {
      app.alert(this.event.target.name+”rSaisie incorrecterFormat attendu AA99A ou A99A.”,1);
      this.event.value=””;
      }
    }

    en réponse à : Ne pas afficher le petit "+" lorsque le champ est trop petit #57747
    alex
    Participant

    En ce qui concerne l’affichage de deux colonnes, je ne vois pas de solution, sauf à séparer le premier caractère du reste par un caractère genre tiret (Exemple: “M-Demande de…”). Dans ce cas le script est inchangé.
    A moins que je n’aie pas compris la question…
    A.

    en réponse à : Ne pas afficher le petit "+" lorsque le champ est trop petit #57746
    alex
    Participant

    Je vous conseille ça, c’est dédié au Web mais tout ce dont on a besoin en dehors de l’environnement pdf y est (fonction mathématiques, traitement des chaînes de caractères, tables, dates, etc…) :
    JavaScript: The Definitive Guide, 6th Edition
    Activate Your Web Pages
    By David Flanagan
    Publisher: O’Reilly Media

    Sinon on trouve tout sur le Web, il suffit de demander.
    Site conseillé: developpez.com

    Bonne journée à tous.

    alex
    Participant

    Bonjour,

    Voici le petit script qui gère la visualisation du champ “Bouton”  (à placer dans via l’onglet “Validation” du champ “Saisie”)
    Dans la maquette jointe les deux lignes supplémentaires du début permettent d’afficher le nom du champ à l’origine de l’action et la valeur saisie.  Faire Ctrl J pour afficher la console.

    //Test sur la valeur saisie après validation (champ numérique)
    if(this.event.value>0)
    {
    //Faire apparaître le bouton
    this.getField(“Bouton”).display=display.visible;
    }
    else
    {
    //Faire disparaître le bouton
    this.getField(“Bouton”).display=display.hidden;
    //Déplacer le curseur sur ce bouton (pas obligatoire)
    this.getField(“Bouton”).setFocus();
    }

    en réponse à : Ne pas afficher le petit "+" lorsque le champ est trop petit #57742
    alex
    Participant

    Bonjour à tous.
    Pour répondre à la question du “+”, je vous propose de ne retenir pour l’affichage que le premier caractère de l’item du menu déroulant comme indiqué ci-dessous.
    Par ailleurs, pour que la valeur s’affiche je vous propose de “forcer” le déplacement du curseur sur la saisie suivante de votre formulaire ce qui a pour effet de mettre à jour le champ “Text2”
    Voir document de démonstration joint.
    Script:
    var menu31 =
    app.popUpMenu(‘……….’);
    this.event.target.value = menu31.substring(0,1);
    this.getField(“Saisie suivante”).setFocus();

    alex
    Participant

    Bonjour,
    Deux remarques:

    Dans les scripts, il faut faire attention à la casse des noms de champ (“Val1” n’est pas “val1”).
    Les scripts de calcul sur évènement sont associés aux champs de résultat (ici les champs Val1, Val2, Val3, etc..)
    Ci-joint le formulaire avec quelques exemples sur ce sujet.
    Bon courage pour la suite.

    alex
    Participant

    Bonjour,
    J’ai vu ça :
    if(this.getField(“LicenceFFCT”).value == “checked”){(this.getField(“Montant1”).value = “checked”);(this.getField(“val1”).value = “checked”);}

    Je n’ai pas tous les éléments mais la syntaxe correcte du script de calcul du champ “Montant1” pourrait être:
    if(this.getField(“LicenceFFCT”).isBoxChecked(0))
    {this.event.value = this.getField(“val1”).value}

    Pour le second problème le
    script de calcul du champ “Montant2” pourrait être:
    if(this.getField(“Champ1”).value==0){this.event.value=0;}

    Avec le formulaire d’origine on pourrait sans doute faire beaucoup mieux…

    en réponse à : Acrobat – Renommer un fichier avec une date #57579
    alex
    Participant

    Parfait, mais avec cette manière de nommer le fichier, on ne peut pas en créer plus d’un différent par minute. Ce n’est peut-être pas gênant, tout dépend de l’usage qu’on en fait.
    Cette méthode de travail en contexte privilégié est à retenir pour étendre les possibilités d’Adobe Reader.

    en réponse à : Acrobat – Renommer un fichier avec une date #57577
    alex
    Participant

    Voici mon exemple:
    1-modifier l’extension du fichier EnregistrementDocument.txt en .js et le placer dans le répertoire JavaScript de l’application.
    2-Le document DocumentReference.pdf emarque un bouton qui appelle le script d’application après avoir construit le nom du fichier. Un champ visualise ce nom après enregistrement.

    Nota: on peut aussi ajouter un item de menu spécial à l’application (Acrobat ou Adobe Reader) pour lancer cette action.

    en réponse à : Acrobat – Renommer un fichier avec une date #57573
    alex
    Participant

    Bonjour à tous, bonjour Merlin,

    On contourner ça à l’aide d’un script d’application (plug in) placé dans le répertoire JavaScript d’Acrobat PRO sous forme fe fonction exécutable en contexte privilégié, il suffit alors de lui passer des paramètres (le nom d’enregistrement du fichier donc, incluant la date au format souhaité) à partir du document à enregistrer. On peut aussi le faire avec Adobe Reader.
    Je te rappelle Merlin que nous avons déjà utilisé cette méthode ensemble dans le cadre d’une de tes affaires!
    J’ai un petit exemple à vous proposer. Ce sera pour demain, le temps que je vous fasse ça.

    en réponse à : obligation d’une coche en fonction d’un choix #55660
    alex
    Participant

    Voici,
    Les boutons radio “OPEN” lancent le script cocheJumping() qui fait le travail.

    [attachment deleted by admin]

    alex
    Participant

    Bonjour à tous,
    Voici un exemple de base pour 2 niveaux.
    Les données de liste sont définies par le script Initialisation() qui s’exécute à chaque ouverture du formulaire et crée deux tables.
    La première liste (liste de mère) est renseignée par ce même script.
    La liste secondaire est renseignée chaque fois que l’on sollicite la liste mère par le script RemplissageFille(). Champ “ListeNiveau1″>Propriétés>Format>Script de touches personnalisé…

    [attachment deleted by admin]

    alex
    Participant

    Ci-joint deux exemples basiques, l’un avec bouton d’envoi, l’autre avec envoi lors de l’enregistrement.

    [attachment deleted by admin]

    alex
    Participant

    Il faut créer ce bouton ou associer ce script à l’enregistrement du document (Outils>Javascript>Définir les actions du document>Le document sera enregistré), je vous donne un exemple dans la journée.

    alex
    Participant

    Bonjour,
    Comme je l’ai dit plus haut, la sélection de l’imprimante ne fonctionne que sur Windows (c’est mentionné dans la doc, voir propriété printerName). Je suppose que tu es sur Mac ou Linux…
    Quant au découpage, il est imposé par l’outil print qui est mis à notre disposition !
    On peut envisager de générer automatiquement un fichier .pdf à imprimer, contenant uniquement les feuilles à imprimer mais nous devrons le faire sous Acrobat PRO ou Standard, pas avec Adobe Reader.

    alex
    Participant

    Le bouton de validation du formulaire peut lancer le script suivant à adapter à votre cas:
    Msg = “Corps de votre courriern”;
    Objet=”Objet du courrier”;
    CTO=”destinataire@abracadabra.net”;
    CCC=”destinataire2@abracadabra.net”;
    //méthode d’envoi
    app.mailMsg({
    bUI: true,
    cTo: CTO,
    cCC:CCC,
    cSubject: Objet,
    cMsg: Msg
    } );

    alex
    Participant

    Oui, c’est normal ! Les menus déroulants sont remis à jour à chaque ouverture puisque le script est conçu comme ça. Seules les données des champs associés (en jaune sur la maquette) sont invariantes et on notera que le premier de ces champs associé contient la valeur de l’item sélectionné dans le menu déroulant.
    Pour conserver la sélection du menu déroulant après enregistrement du formulaire, il faut revoir la maquette de la manière suivante:
    Lors de l’ouverture le script d’ouverture relit les tables sans toucher aux menus déroulants (voir script ouverture())
    Lors de la modification d’une pièce jointe, on doit mettre à jour les menus déroulants (ici grâce au bouton Mise à jour” qui lance le script initialisation().  On peut ensuite masquer ce bouton. Ci-joint maquette pour illustration.

    [attachment deleted by admin]

    alex
    Participant

    Ci-joint une maquette à ma façon pour illustrer une réponse à l’option 1 avec présélection de l’impression sur Pc uniquement.
    Sur Pc:
    Le sélecteur capte la liste des imprimantes disponibles à l’ouverture et on peut en sélectionner une avant d’imprimer en aveugle ou non.
    Sur Mac:
    La liste se remplit aussi mais on ne peut sélectionner l’imprimante que via le menu d’impression. On ne peut donc pas imprimer en aveugle.

    Je n’ai as cherché de solution via une impression .pdf une voie à explorer sur Mac donc.

    [attachment deleted by admin]

    alex
    Participant

    Bonjour à tous,
    Le formulaire est trop lourd, j’ai donc transféré les champs, les scripts et les pièces jointes sur ma maquette.
    Merci à Merlin d’avoir ajouté des commentaires dans mes scripts.
    Le but de ces outils est de renseigner des menus déroulants à partir de données embarquées dans des fichiers .csv que l’on trouve en pièces jointes. Dans notre exemple, les menus déroulants sont renseignés dès l’ouverture du document une fois pour toute, mais dans d’autres configurations, ils pourront être renseignés en fonction du contexte de saisie. Attention, toutefois, le temps de chargement n’est pas négligeable.
    La sélection d’un item de ces menus déroulants provoque l’affichage des données correspondantes issues des tables, ici pour l’exemple en fond jaune.
    Attention au format des données.

    Bon courage.

    [attachment deleted by admin]

    alex
    Participant

    Bonjour à tous,
    Le script xinitialisation()) qui renseigne les menus déroulants du formulaire une fois pour toutes,  doit se faire à l’ouverture du document.
    Il ne faut pas le relancer à chaque utilisation des menus déroulants pour lesquels seul le script de format personnalisé doit être conservé.

    alex
    Participant

    Oui, il me suffit d’avoir les 10 premières pages pour localiser le problème.

    alex
    Participant

    Bonjour,
    Si les boutons des pages suivant la page 1 sont des copies des boutons de la page 1, ce script ne fonctionnera pas. Il faut que les noms de champs soient différents, exemple: A.R1, B.R1, C.R1 etc…

    en réponse à : menu et tables #56359
    alex
    Participant

    Voilà, vous pouvez ajouter autant de lignes que nécessaire.
    Attention, la manière de procéder a changé !
    Deux scripts sont à l’oeuvre, tous deux déclenchés par l’action des menus déroulants (placement du résultat de la ligne dans la bonne colonne puis sommes des deux colonnes).
    On pourrait avoir d’autres colonnes en gardant les scripts de base légèrement modifiés.

    [attachment deleted by admin]

    en réponse à : menu et tables #56355
    alex
    Participant

    J’ai mis plus de temps à chercher ce qui devait être fait qu’à faire.
    Ici, nous avons certes des magiciens chevronnés, mais aussi un groupe restreint de voyantes extra-lucides dont je fais partie !

    en réponse à : menu et tables #56353
    alex
    Participant

    Voir si cette maquette se rapprocherait de ce qui est souhaité …
    Ici, un seul script est à l’oeuvre (travail()). L’action sur l’un des menus déroulants le lance.
    J’ai renommé les champs de manière à pouvoir ajouter des lignes si nécessaire (jusqu’à 10).

    [attachment deleted by admin]

    en réponse à : menu et tables #56348
    alex
    Participant

    Quelques remarques:
    1-L’action déclenchant les scripts associés aux menus déroulants doit se faire via l’onglet Format, puis Script de touche personnalisé.
    2-On doit récupérer les valeurs de ces champs par les évent.value ou évent.valueEx.
    3-Les scripts font référence à des champs qui n’existent pas.

    J’ai une vague idée du but à atteindre, apparemment n’y a pas de calculs à faire, juste faire apparaître les champs d’un tableau suivant les choix effectués via les menus déroulants. Quelques précisions seraient les bienvenues…

    “Ce qui se conçoit bien s’énonce clairement, et les mots pour le dire arrivent aisément.(Nicolas Boileau)”

    en réponse à : Champs liste de formulaire vide #56308
    alex
    Participant

    1-“Au démarrage, les listes sont vides mais ne fonctionnent toujours pas”
    Voilà qui me paraît tout à fait  normal puisqu’on ne lance plus le programme à l’ouverture du document (voir demande ci-dessus)!

    2-“si j’actualise, les listes fonctionnent mais gardes toujours une valeur par défaut”

    Là aussi, c’est le comportement normal des listes et menus déroulants , mais, mais, supposons….
    faisons l’hypothèse que tu souhaites avoir un item de liste vierge, dans ce cas le formulaire joint ajoute un item de liste en blanc qui deviendra l’item par défaut. La sélection de cet item par l’utilisateur réinitialisera les champs associés.

    [attachment deleted by admin]

    en réponse à : Exportation d’un formulaire PDF vers Excel #56329
    alex
    Participant

    En fait, on peut ! Mais disons que ça dépasse un peu le cadre de ce forum consacré au PDF:
    1-Créer un bouton d’envoi de données (celui proposé par Acrobat ou un script submitForm() ) vers un service Web (un programme pHp associé à une base de données mySQL par exemple)
    2-A partir de ces données, on utilisera une classe pHp capable de générer un fichier Excel formaté selon son besoin par extraction via requêtes SQL. On peut aussi gérer ces données directement sur une interface Web.
    Pour faire ça, il faut connaître le JavaScript Acrobat, le pHp, le SQL et avoir quelques notions sur la sécurité.
    Cela dit,on peut aussi s’intéresser à LiveCycle ES2

    en réponse à : Champs liste de formulaire vide #56306
    alex
    Participant

    Ci-joint le formulaire dans lequel j’ai supprimé la ligne xinitialisation() comme je le demandais.
    De ce fait, le remplissage des menus déroulants ne se fait que sur demande comme prévu.

    [attachment deleted by admin]

    en réponse à : Champs liste de formulaire vide #56304
    alex
    Participant

    Envoies ton formulaire…

    alex
    Participant

    Bonjour,
    Voici pour répondre à la seule première question. Les deux boutons activent le même script unique de document facile à comprendre et à modifier. J’ai créé les champs de texte gérés par le script d’origine et qui manquaient avec des textes en français et en anglais.
    A adapter à votre cas.

    [attachment deleted by admin]

    en réponse à : Champs liste de formulaire vide #56302
    alex
    Participant

    Sous Acrobat Pro
    Outils>
    Scripts JavaScript>Scripts JavaScript du document>
    Sélectionner xInitialisation>Modifier
    A la fin de la fonction :

    function xinitialisation()
    {
    ….
    }
    xinitialisation();

    Supprimer cette dernière ligne !

    en réponse à : Propriétés de de champs pour un Novice #56310
    alex
    Participant

    Bonjour et bienvenue,
    Voici un premier pas: créer un numéro de fiche à l’aide d’un bouton.
    Attention au format des données du champ “date”, ici, c’est le script qui le définit via la méthode util.prind(). Ce script est un script de document baptisé xInit() qui est lancé par l’action sur le bouton.

    [attachment deleted by admin]

    en réponse à : Champs liste de formulaire vide #56300
    alex
    Participant

    Tu as laissé la ligne
    xinitialisation();
    qui exécute le script à l’ouverture.

    en réponse à : Champs liste de formulaire vide #56298
    alex
    Participant

    Placer
    this.resetForm();
    à l’ouverture du document, rien de plus.
    Mais il ne sera pas possible d’enregistrer le formulaire complété pour le consulter ultérieurement.

    Pour garder les deux possibilités (conserver les données précédemment saisies ou non), créer un script de document comme suit:
    function init()
    {
    //Ce script sera exécuté à l’ouverture du document.
    rp=app.alert(“Effacer les saisies antu00E9rieures?”,2,2)
    if(rp==4)
    {
    //si oui, les saisies et contenus des menus déroulants sont effaces.
    this.resetForm();
    }
    }
    init();

    en réponse à : Champs liste de formulaire vide #56296
    alex
    Participant

    Pour n’utiliser que les boutons il faut supprimer la ligne:
    xintialisation();
    Ainsi, le préremplissage des menus déroulants ne se fera qu’à la demande et on pourra enregistrer le formulaire avec ses données sous Adobe Reader.

    en réponse à : Champs liste de formulaire vide #56294
    alex
    Participant

    En ajoutant la ligne suivante au tout début du script xinitialisation(), le formulaire sera vierge:
    this.resetForm();

    en réponse à : Champs liste de formulaire vide #56292
    alex
    Participant

    Et oui, il n’y a pas d’erreur !
    Ces deux boutons sont là pour les tests:
    “Reset” initialise le formulaire et en effet, les menus déroulants ne “fonctionnent plus” puisqu’ils sont vides.
    “Test” recharge ces menus déroulants !
    Tu peux donc les supprimer, le chargement se fait à l’ouverture du document.

Affichage de 99 réponses de 100 à 198 (sur un total de 603)