Donnez vie à vos documents numériques !
 

alex

Toutes mes réponses sur les forums

Affichage de 99 réponses de 1 à 99 (sur un total de 564)
  • Auteur
    Réponses
  • en réponse à : Interdire l’enregistrement d’un formulaire à remplir #62500
    alex
    Participant

    Pour retrouver votre formulaire protégé vierge même sur une tentative d’enregistrement:

    Actions du document>Le document sera enregistré>
    app.alert(“Avertissement:rLes donnu00E9es saisies dans ce formulaire ne seront pas conservu00E9es!”,3);
    this.resetForm();

    Avec ou sans alerte, c’est comme au bon vieux temps.

    en réponse à : Changer couleur de fond #62467
    alex
    Participant

    Bonjour à tous,
    J’ai remplacé le champ ” ldentifier/localiser les composants” par un champ de type texte baptisé “Text” qui embarque un script de calcul personnalisé qui devrait répondre au  problème…
    Voir maquette, on peut tester en saisissant directement la note finale.

    en réponse à : Contrôle sur la saisie d’un champ #62397
    alex
    Participant

    Bonjour,
    Ci-joint une variante à adapter à votre cas. Attention, le format de ce champ ne peut pas être “nombre” puisqu’on analyse une chaîne de caractères. Il faudrait ajouter un script pour forcer la saisie des nombres si nécessaire.

    en réponse à : Total de cases à cocher #62329
    alex
    Participant

    Bonsoir,
    Il vous suffit de créer un champ au format texte et de le nommer “Total”, Puis d’ajouter le script suivant au script existant:

    cMsg=”Il y a “+boutonCoche+ ” boutons cochu00E9s sur ” + boutonRadio + ” boutons-radios.”;
    this.getField(“Total”).value=cMsg;

    en réponse à : Remplissage formulaire dynamique sur PC #62388
    alex
    Participant

    Solution avec script unique donc …Comme promis précedemment.

    en réponse à : Remplissage formulaire dynamique sur PC #62387
    alex
    Participant

    Bonjour à tous.
    Pour prendre en compte les “Tab”, peut-être faut-il préférer les events.
    Un seul script commun si on veut encore raffiner.
    Amitiés
    Voir maquette.

    en réponse à : Contrôle sur la saisie d’un champ #62394
    alex
    Participant

    Bonjour,
    Voici un petit script de validation de saisie qui pourra être repris dans d’autre configurations.
    Les impressions dans la console illustrent le fonctionnement.
    Voir maquette jointe.

    en réponse à : Retours (ENTER) dans les scripts #61392
    alex
    Participant

    Bonjour,
    Sur Pc je vous conseille NotePad++ (pas NotePad).

    en réponse à : Fonctions javascript utilisable avec Acrobat #60824
    alex
    Participant

    Depuis Acrobat 8 la version de JavaScript embarquée est 1.6.
    Voir Mozilla Developer Center, http://developer.mozilla.org/en/docs/JavaScript
    Pour moi, la majeure partie des méthodes et propriétés sont utilisables.

    en réponse à : Datamatrix sous reader #60822
    alex
    Participant

    Bonjour à tous,
    N’oubliez pas qu’il existe d’autre moyens que le code barre pour collecter des données de formulaire….

    en réponse à : Numéro de semaine suivant date #60558
    alex
    Participant

    Correctif pour BB1.

    en réponse à : Numéro de semaine suivant date #60555
    alex
    Participant

    Variante qui n’affiche que le numéro de la semaine.

    en réponse à : Numéro de semaine suivant date #60554
    alex
    Participant

    Bebarth a du louper quelque chose. Voir maquette jointe qui correspond à ce qu’il aurait du proposer.
    Onglet calcul du champ “Semaine”, on lance le script weelcalc() légèrement modifié pour prendre en compte la forme de la saisie.
    Amitiés à tous.

    alex
    Participant

    NawelCPA travaille peut-etre sous Acrobat Pro 11 et Adobe® LiveCycle® Enterprise Suite …

    en réponse à : liste déroulante mixte #60150
    alex
    Participant

    Je ne comprends pas le problème !
    Une liste déroulante ne peut pas contenir des champs puisque par nature elle est elle-même un champ.
    Une liste déroulante embarque un certain nombre d’items auxquels on peut associer des valeurs d’export. Ces couples items/valeurs d’export peuvent être manipulées par script, donc variables en fonction du contexte de travail (la valeur d’un autre champ, l’état d’une case à cocher ou d’un bouton radio où l’heure du jour, etc…)
    Merci de reformuler votre question.

    en réponse à : Champ format nombre à virgule #60027
    alex
    Participant

    Attention, pour satisfaire votre demande, il faut utiliser un script de format personnalisé. Voir exemple joint.
    Après saisie, le script l’analyse digit par digit en partant de la gauche.
    Si on détecte la présence d’une virgule, on analyse les chiffres qui suivent en partant de la droite pour supprimer les digits “0” jusqu’à rencontrer un digit non “0”.
    Ce script fonctionne quelque soit le nombre de chiffres désirés après la virgule.
    A tester avant de valider…

    en réponse à : Comment afficher l’année avec JavaScript #60491
    alex
    Participant

    Voir les exemples dans la maquette jointe. Le script se trouve pour chaque champ dans l’onglet Calcul> Script de calcul personnalisé.
    this.event.value=util.printd(“yyyy”,new Date());

    en réponse à : Champ : couleur en fonction d’une question #60478
    alex
    Participant

    Désolé, une erreur s’est glissée dans l’initialisation de ma précédente version.
    Il y a aussi des améliorations à apporter à l’analyse des saisies…

    en réponse à : Champ : couleur en fonction d’une question #60477
    alex
    Participant

    J’ai déplacé les scripts “Action” en scripts de “Validation” pour gérer la couleur des pavés.
    J’ai ajouté quelques lignes dinitialisation.
    J’ai créé un script de document pour gérer la couleur de la note.
    Faites un essai, c’est sans garantie…

    alex
    Participant

    On trouve ça dans la documentation de référence page 243 (JavaScript for Acrobat API Reference):
    info
    Specifies an object with properties from the document information dictionary in the PDF file. (See the PDF Reference version 1.7.) Standard entries are:
    Title
    Author
    Subject
    Keywords
    Creator
    Producer
    CreationDate
    ModDate
    Trapped

    Exemples:
    oDoc=this;
    var aAuteur=oDoc.info.Author;
    var cDocTitle = oDoc.info.Title;
    Par ailleurs on put créer ses propres paramètres Propriétés du document: onglet Personnalisées
    Nom:parametre, Valeur: “Info perso”

    var x=this.info.parametre;

    Enfin, on a souvent besoin du nom du fichier dans les scripts d’application:
    cNomFichier=this.documentFileName;

    en réponse à : Champ : couleur en fonction d’une question #60474
    alex
    Participant

    Bonjour,
    Pour les couleurs de remplissage basiques on peut écrire:

    if(condition)
    {
    this.getField(“Note1”).fillColor=color.green;
    }
    else
    {
    this.getField(“Note1”).fillColor=color.red;
    }

    alex
    Participant

    Bonsoir,
    Il s’agit bien de désigner la nature ce qui est manipulé comme le dit Merlin:
    a pour les tableaux, exemple, var aFruits = [“Fruits”,”Apples”,”Oranges”];
    b pour les variables binaires, exemple bBlockEx8 = true;
    c pour les variables chaines de caractères, exemple cContactName = this.getField(“Ex8.ContactDropDown”).value;
    n pour les entiers
    o pour les objets, exemple var oFld = this.getField(“Ex7.” + cName); où oFld est un champ

    En ce qui concerne nStart, il s’agit du nom d’un argument associé à une méthode app. (app.print() par exemple) où nStart désigne un numéro de page (donc un entier).
    Exemple de méthode app. (ajout d’un item de menu):
    app.addMenuItem({cName:”Close All PD&Fs”,
                    cParent:”File”,
                    nPos:6,
                    cExec:”DoCloseAllDocs()”,
                    cEnable:”event.rc = app.doc != null”
    });

    Je pense que c’est une bonne habitude de développeur. Je ferais bien de la faire mienne…

    alex
    Participant


    Suivez bien cette procédure à la lettre et vos attentes seront récompensées…
    Procédure à suivre :

    Cette procédure s’effectue sous Adobe Acrobat PRO versions 10, 11 ou sous Adobe Acrobat DC.
        Collecter les formulaires remplis et les placer dans un répertoire dédié.
        Ouvrir le formulaire ayant servi à la saisie des données sous Acrobat PRO.
        Faire apparaître les outils de formulaires: Affichage>Outils>Formulaires.
        Cliquer sur l’onglet “Autres options de formulaire et sélectionner l’item:
        “Fusionner les fichiers de données dans une feuille de calcul”, la fenêtre “Exporter les données provenant de plusieurs formulaires” apparaît.
        A l’aide des boutons “Ajouter des fichiers” et “Supprimer des fichiers”, établir la liste des formulaires dont vous souhaitez collecter les données.
        La liste étant établie, cliquer sur “Exporter”.
        Choisir le nom du fichier d’export et le format .csv puis “Enregistrer”. Compter moins de 20 secondes pour une centaine d’enregistrements.
        Ouvrir le fichier des données sous Excel. La première ligne donne le nom des champs de formulaire dans l’ordre où ils apparaissent sur le formulaire.
        Chaque ligne correspond aux données d’un formulaire, la première colonne étant réservée au nom du fichier.
        Procéder à une mise en forme des données et au remplacement des caractères accentués manuellement ou via une macro pour plus de commodité.
        Enregistrer le fichier au format Excel.

    en réponse à : Limiter un champ à une plage de saisie #60469
    alex
    Participant

    Le & est destiné à la manipulation des nombres binaires:
    exemple avec les nombres 3 et 9 en binaire:
    3 & 9
    3 = 0 0 1 1 en binaire
    9 = 1 0 0 1 en binaire
    L’opérateur donne 1 car:
    . 0 0 1 1
    & 1 0 0 1



      0 0 0 1

    && est le ET de la logique combinatoire
    (condition1 && condition2)
    vaut true si les 2 conditions sont vraies(true en JS), false sinon.

    Conclusion: j’aurais du, en toute rigueur choisir &&

    en réponse à : Limiter un champ à une plage de saisie #60467
    alex
    Participant

    POur interdire la saisie des chiffres….
    Un peu de logique combinatoire:
    Onglet Format: script de touches personnalisé:

    saisie=this.event.change;
    codedigit=saisie.charCodeAt(0);
        if(codedigit<57&codedigit>48)
        {
        this.event.change=””;
        app.beep(0);
        }

    en réponse à : Limiter un champ à une plage de saisie #60465
    alex
    Participant

    Bonjour Merlin,
    Voici une nouvelle maquette dédiée à la détection des saisies non numériques dans un champ texte. Je pense que l’item 3 répond à ton problème. A chaque fois qu’un digit est saisi on teste sa nature en s’assurant que son code ASCII est bien sur le segment 0-9 (codes ASCII 48 à 57).

    Conseillé:
    Onglet Format: script de touches personnalisé:

    saisie=this.event.change;
    codedigit=saisie.charCodeAt(0);
        if(codedigit>57|codedigit<48)
        {
        this.event.change=””;
        app.beep(0);
        }

    Nota: pas de beep sur Mac !

    en réponse à : Limiter un champ à une plage de saisie #60463
    alex
    Participant

    Et oui, j’ai eu tort de mettre la solution basique d’Adobe (sans script) en quatrième position de mon exemple:
    4-Contrôle standard sur un champ formaté nombre sans recours à un script.
    Elle aurait du figurer en tête!
    Cependant, dès qu’on sort de cet usage basique  (limitation de la saisie à une plage numérique unique min/max), le script s’impose et permet des analyses beaucoup plus fines (plages multiples et disjointes, saisies combinées de chiffres et de caractères alphanumériques, et autres contraintes) et des alertes adaptées.

    en réponse à : Limiter un champ à une plage de saisie #60457
    alex
    Participant

    Et voici les exemples (on est limité à une pièce jointe apparemment).

    en réponse à : Limiter un champ à une plage de saisie #60456
    alex
    Participant

    Bonjour à tous,
    Voici ci-joint l’illustration de plusieurs types de contrôles de saisie.
    1-Contrôle après saisie complète sur un champ non formaté. Saisie limitée aux nombres de 0 à 9
    2-Contrôle du digit unique sur un champ non formaté . Saisie limitée à un nombre du segment 0-6
    3-Contrôle digit par digit sur un champ non formaté . Saisie limitée aux nombres de 0 à 6
    4-Contrôle standard sur un champ formaté nombre sans recours à un script.
    Par ailleurs je vous joins une table ASCII qui vous permettra de retrouver les codes à utiliser dans les scripts.

    en réponse à : Convertir heures en centièmes d’heure #60451
    alex
    Participant

    Je vous propose cette maquette pour avancer. J’ai séparé la saisie des heures (champ “Heures”) et celle des minutes (champ “Minutes”).
    Un seul script embarqué dans le champ d’affichage des centièmes (onglet calcul) fait le travail.
    Le bouton RAZ pourra être supprimé.
    J’aurai une correction à faire sur l’arrondi à la prochaine version.
    A+

    en réponse à : Formule de calcul non prise en compte dans l’onglet Calcul #60381
    alex
    Participant

    Pour ceux qui aiment le JavaScript, il en suffit d’un !
    Placer ce script dans le champ de total (onglet calcul). Pour tester, rendre les champs taux.x et page2.dep.x saisissables et de format numérique.

    //calcul des montants
    console.clear();
    console.println(“Calcul sur champ “+this.event.target.name+” sur evenement “+this.event.name)
    x=0;
    total=0;
    while(x<8)
    {
    //test d’existance du champ “montant.x”
        if(this.getField(“montant.”+x))
        {
        //calcul montant ligne
        this.getField(“montant.”+x).value=this.getField(“page2.dep.”+x).value*this.getField(“taux.”+x+”.1″).value;
        console.println(“Calcul ligne “+x+”=”+this.getField(“montant.”+x).value);
        total=total+this.getField(“montant.”+x).value;
        }
    x=x+1;
    }
    //calcul du total en ajoutant le forfait fixe.
    this.event.value=total+this.getField(“forfaitfixe”).value;

    en réponse à : Test sous-chaine dans une chaine + Casse #60364
    alex
    Participant

    Salut Merlin,
    J’ai répondu strictement à la question posée, à savoir trouver une chaîne de caractères.
    Si l’on souhaite limiter la recherche à des mots (donc une chaine précédée d’un blanc ou d’une apostrophe), il faut légèrement modifier le script.

    Amitiés à tous

    en réponse à : Test sous-chaine dans une chaine + Casse #60362
    alex
    Participant

    Ci-joint une maquette où un script à adapter ferait l’affaire.
    On peut le modifier pour prendre en compte la casse.
    La variable recherche prend la valeur true si la recherche est fructueuse, false dans le cas contraire.
    Cette manière de faire ouvre la porte à de nombreuses variantes (exclusion de chaines particulières lors de la recherche).

    en réponse à : Convertir des chiffres en nombres en lettres #60211
    alex
    Participant

    Bonsoir,
    Désolé pour l’attente.
    Merci de faire les tests. Cette maquette pourra être améliorée dans une prochaine version (choix de l’écriture belge ou française, niveau d’arrondi)
    Cordialement.

    Alex

    en réponse à : Convertir des chiffres en nombres en lettres #60207
    alex
    Participant

    Bonjour à tous,
    Ligne 3 de mon script vous pouvez tester les trois variantes :

    num=Math.round(saisie);
    (arrondi au plus près comme dans mon dernier script)
    saisie de 122,55 donne 123 ,

    saisie de 122,45 donne 122

    num=Math.floor(saisie);
    (arrondi par défaut)

    saisie de 122,55 donne 122
    ,
    saisie de 122,45 donne 122

    num=Math.ceil(saisie);
    (arrondi par excès)
    saisie de 122,55 donne 123
    ,
    saisie de 122,45 donne 123

    Ci-joint exemple avec Math.round

    en réponse à : Convertir des chiffres en nombres en lettres #60203
    alex
    Participant

    J’utilise ce petit livre que l’on trouve chez Eyrolles à Paris ou ailleurs:
    JavaScript
    de David Flanagan (Auteur), James Guérin (Traduction) Édition : O’Reilly.

    Une bonne adresse à retenir: http://javascript.developpez.com/cours/
     

    en réponse à : Formulaire remplissable après un choix sur bouton radio #60272
    alex
    Participant

    Il faut écrire:
    if (choix.isBoxChecked(0)) ou bien
    if (choix.isBoxChecked(0)==true)
    et non pas:
    if (choix.isBoxChecked=true)

    en réponse à : Convertir des chiffres en nombres en lettres #60201
    alex
    Participant

    Bonsoir,
    Ligne 3, il suffit d’utiliser la méthode suivante (arrondi):

    num=Math.round(saisie);
    Au lieu de l’arrondi par défaut
    num=Math.floor(saisie);

    Voir maquette jointe.

    en réponse à : Calcul note moyenne suivant cases à cocher #60262
    alex
    Participant

    Bonsoir,
    Voici une maquette à peaufiner….
    Amitiés à tous.

    en réponse à : Convertir des chiffres en nombres en lettres #60199
    alex
    Participant

    Bonjour,
    Voici ma seconde copie mais il faut la tester à fond, il peut rester des erreurs. En principe on écrit bien:
    un million, un milliard
    cent et pas un cent, mille et pas un mille.

    J’ai laissé des éditions console sur la fin du script (Ctrl-J pour l’ouvrir sous Acrobat PRO)
    Merci pour le retour.

    en réponse à : Valeur d’exportation identique dans une liste déroulante #60178
    alex
    Participant

    Pour être sûr de passer la valeur de l’item sélectionné et pas la valeur d’export utilisez ce script de calcul associé à la semelle droite:

    console.clear();
    //capter l’indice de la sélection gauche
    indice=this.getField(“SemelleG”).currentValueIndices;
    //Lire la valeur de l’item (pas l’export)
    item=this.getField(“SemelleG”).getItemAt(indice,false);
    //Passer la valeur à la sélection droite.
    event.target.value = item;

    Je déconseille l’usage immodéré des scripts de calcul, je reviendrai sur ce sujet.

    en réponse à : Convertir des chiffres en nombres en lettres #60195
    alex
    Participant

    Ci-joint le script corrigé vite fait (il y a des petites choses à peaufiner pour que tout soit parfait).
    Amitiés à tous.

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

    Bonjour et bonne année.

    Un seul script de document à étudier: il est lancé par le script de calcul unique associé au seul champ “Texte.9.0”. Ce script calcul() est un script de document (Outils>Scripts JavaScript du document).

    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.

    en réponse à : PDF interactif liste déroulante intelligente #60034
    alex
    Participant

    Bonjour et bonne année.
    Dans votre document, manque le script d’initialisation et, bien sûr les valeurs des items des deux menus déroulants.

    en réponse à : Export de certaines données d’un formulaire vers un .fdf #60082
    alex
    Participant

    Bonjour,
    Sous Acrobat PRO et Standard uniquement, vous pouvez utiliser le script suivant pour exporter une partie des champs de formulaire, ici pour trois d’entre eux pour mon exemple:
    this.exportAsFDF(
    {
    aFields:[“Data”,”Dropdown”,”Saisie.1.1″]
    });

    A l’inverse, vous pouvez utiliser le script suivant pour importer une partie des champs de formulaire, ici pour trois d’entre eux pour mon exemple:
    this.importAnFDF(
    {
    aFields:[“Data”,”Dropdown”,”Saisie.1.1″]
    });

    Voir maquette jointe avec trois boutons:
    “Reset Form” associé à script qui efface toutes les saisies
    “Export” et “Import” avec les scripts ci-dessus. L’argument aFields est donc un tableau listant les champs concernés.

    Voir documentation page 287 pour plus de détails (JavaScript for Acrobat API Reference version 8.1)

    en réponse à : Duplication de calculs de champs en rangées et en colonnes #60073
    alex
    Participant

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

    en réponse à : Duplication de calculs de champs en rangées et en colonnes #60069
    alex
    Participant

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

    en réponse à : Calcul d’heures dans un formulaire PDF #60020
    alex
    Participant

    Désolé de répondre si tard mais oui le script peut-être embarqué en totalité par le champ TotalTemps (onglet “Calcul” script de calcul personnalisé) sans recourir à un script de document.
    Ce qui doit concorder, c’est le nom des champs DepartDate.xx , DepartHeure.xx, ArriveeDate.xx, ArriveeHeure.xx, Pause.xx bien sûr.
    Par contre on peut augmenter librement le nombre de lignes (plus de 4 donc en numérotant à partir de 0).

    en réponse à : Listes mère-filles à 4 niveaux #59995
    alex
    Participant

    Pour ceux qui sont sur PC, je conseille Notepad++ que ce soit pour le JavaScript ou le PHP.
    Je vais essayer sublimetext…

    en réponse à : PDF interactif liste déroulante intelligente #60032
    alex
    Participant

    Maquette jointe.
    Il suffit de définir les produits et leurs référence dans le script Initialisation() qui s’exécute à l’ouverture du document.
    A chaque liste déroulante est associé un script de format qui en fonction de la sélection synchronise l’autre liste.

    en réponse à : PDF interactif liste déroulante intelligente #60031
    alex
    Participant

    Oui, c’est assez simple. Il suffit de synchroniser les deux listes.
    Une maquette va suivre.

    en réponse à : Calcul d’heures dans un formulaire PDF #60015
    alex
    Participant

    Ma maquette fonctionne indifféremment sous Acrobat PRO, Acrobat Standard et Acrobat Reader ou Adobe Reader à partir des versions 10.
    L’usage d’Acrobat Pro est conseillé pour ouvrir le capot et aller plus loin et comprendre le fonctionnement (le script).
    Bonne soirée.

    en réponse à : Calcul d’heures dans un formulaire PDF #60010
    alex
    Participant

    Bonjour à tous,

    Sur cette maquette le script est un script de calcul est associé au champ “TotalTemps”.
    Une boucle balaye les lignes de saisies et fait les calculs souhaités. La difficulté provient du fait que la saisie du jour est séparée de celle de la date ce qui conduit à reconstituer les objets Date(). Pour cela on décompose les saisies en tables par la méthode split() et on récupère les morceaux pour générer un objet Date.
    Pour voir les calculs ouvrir la console sous Acrobat PRO.
    Faites des tests avec des missions démarrant à une date donnée et finissant un autre jour.
    Pour une application plus PRO, il faudra aller un peu plus loin dans l’analyse des saisies.

    J’ai choisi de garder les formats Adobe !

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

    Bonjour,
    Voilà pour vous remettre sur les rails.
    Il faut respecter le nom des champs utilisés par les scripts, ici “ListeMere” et “ListeFille”.
    Ctrl J vous permet d’ouvrir la console et de suivre la trace des impressions intermédiaires lors du déroulement des scripts.
    Bon courage.

    en réponse à : Listes mère-filles à 4 niveaux #59986
    alex
    Participant

    Bonjour à tous,
    Voici une version plus aboutie de la maquette établie sur la base micka92
    Dans le script Initialisation(), vous pouvez renommer manuellement les items à votre convenance mais il vaut mieux préparer la hiérarchie et son paramétrage…
    Pour les applications “PRO”, je dispose d’un outil qui permet les modifications dynamiques de ces paramètres, la structure des données étant un peu différente.
    Si la case à cocher “Memoriser” est cochée, l’état des menus déroulants est conservée.
    Si la case à cocher “Memoriser” n’est pas cochée, les menus déroulants sont réinitialisés.
    Si la case à cocher
    “Memoriser” est supprimée, les menus déroulants sont réinitialisés à chaque ouverture de page.
    Bon week-end à tous.

    en réponse à : Listes mère-filles à 4 niveaux #59985
    alex
    Participant

    Voici la maquette corrigée mais avec le service minimum de commentaires.
    Je reviendrai sur ce sujet ultérieurement pour proposer une maquette adaptable à différentes configurations d’architectures mères/filles…
    Bonne soirée.

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

    Pour répondre à bebarth, voir ci-dessous:
    https://acrobatusers.com/tutorials/print/formatting_text_fields

    en réponse à : Case à cocher suivant menu déroulant #59968
    alex
    Participant

    Maquette que j’espère sans erreur.
    La fermeture du document réinitialise le formulaire:
    this.resetForm();

    Amitiés à tous.

    en réponse à : Case à cocher suivant menu déroulant #59967
    alex
    Participant

    Bonjour,

    Mon script est prévu pour fonctionner sur un nombre quelconque de pages en respectant la dénomination des cases à cocher suivante:
    Page 1: “1Case 1” et “1Case 2” associées à “1ListeContrats”
    Page 2: “2Case 1” et “2Case 2”associées à “2ListeContrats”
    Page x: “xCase 1” et “xCase 2”
    associées à “xListeContrats”
    D’où le script faisant référence à la page courante: page=this.pageNum+1;

    Par ailleurs j’ai choisi la valeur d’export comme variable de départ du script associé au format personnalisé plutôt que le rang de l’item sélectionné (bebarth).

    numero=this.event.changeEx;
    L’évènement déclencheur est l’action de sélection d’un item du menu déroulant dont on tire la nouvelle valeur d’export.
    Pour plus de détails:
    https://acrobatusers.com/tutorials/print/formatting_text_fields

    Voir The Keystroke Event

    en réponse à : Case à cocher suivant menu déroulant #59960
    alex
    Participant

    Bonjour,
    J’ai un doute, mais si ce formulaire répond bien à votre problème, je préciserai son fonctionnement.
    Versions Adobe Reader postérieures à 9.

    Amitiés
    Alex

    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….

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