Donnez vie à vos documents numériques !
 

brumbies

Toutes mes réponses sur les forums

Affichage de 99 réponses de 1 à 99 (sur un total de 136)
  • Auteur
    Réponses
  • en réponse à : Récupérer numéro de page dans champs de texte #58305
    brumbies
    Membre

    Bonjour,
    Pour que cela soit plus parlant, peux-tu joindre ton fichier ?  :Smiley08:

    en réponse à : Report de cases à cocher #59201
    brumbies
    Membre

    Bonjour,

    le problème est que tu vas devoir soit :
    1) passer par un bouton pour tester si une des cases sous les mois est cochée… pas terrible autant de suite la dernière case…
    2) soit dupliquer le code (qui n’est qu’un exemple adapté à ton fichier) ci-dessous dans chacune des cases mois…

    Code:
    var compteur = 0;
    for(var i = 0 ; i <5; i++)
    if(this.getField(“Check Box1.”+i).value != “Off”)
    compteur ++;

    if(compteur == 0)
    this.getField(“Check Box1.2a”).value = “Off”;
    else
    this.getField(“Check Box1.2a”).value = “Oui”;
    [code]

    Car un champs “case à cocher” ne permet pas de lui afgecter des calculs comme sur un champs texte (ce qui aurait permis de regrouper le code son le dernier champs)

    en réponse à : Lien entre deux champs #59282
    brumbies
    Membre

    Pas de soucis… :Smiley03:

    donc tu as 2 problèmes :
    1) tu n’initialises pas la fonction INITIALISATION(), à l’ouverture de la page comme sur le doc d’Alex…
    accessible dans les propriétés des vignettes => actions => à l’ouverture + javascript => mettre “Initialisation();”

    2) l’ajout de l’Item “” n’est pas reconnu au niveau de la listeN1 de la fonction initialisation() => remplace le par ” “

    Code:
    ListeN1=[” “,”Europe”,”Amérique du Nord”,”Amérique du Sud”,”Asie”,”Moyen Orient”];

    :Smiley01:

    en réponse à : Lien entre deux champs #59280
    brumbies
    Membre

    Bonsoir,

    tu devrais commencer par poster ton fichier…
    :Smiley01:

    brumbies
    Membre

    Bonjour,

    C’est bien ce que Merlin de dit… :geek:
    Obligatoire :
    Exige que l’utilisateur remplisse le champ de formulaire sélectionné. Si l’utilisateur tente d’envoyer le formulaire avant de remplir un champ obligatoire, un message d’erreur s’affiche et le champ de formulaire obligatoire vide est mis en surbrillance.Ensuite, tu peux passer par un script si tu ne veux pas qu’un champ obligatoire soit vide… Mais c’est plutôt contraignant au niveau de la conception du PDF et aussi d’un point de vue utilisateur…
    Ce que tu peux faire c’est ajouter un bouton libellé “Testez le remplissage de cette fiche” et y placer un code qui testera si tout tes champs “obligatoires” sont renseignés et sinon qui les fera ressortir
    :Smiley01:

    en réponse à : LiveCycle Designer #59260
    brumbies
    Membre

    Je ne peux pas visualiser tes champs puisque tu as utilisé LiveCycle pour créer ton fichier…

    Sinon, ton idée de concatener l’ensemble des valeurs d’exportation de tes boutons radios est bonne!
    Maintenant, tu peux utiliser un tableau de 2 colonnes avec autant de lignes que de combinaisons possibles ou dans la premiere colonne tu indiques le numéro concatener et dans la 2eme le texte y afférent.
    Puis par le biais d’une recherche de la valeur trouvé tu viens afficher dans ton champs la valeur en colonne 2 associée à ton numéro…
    => A condition que tu n’ais que du texte… sinon tu peux aussi utiliser des calques
    :Smiley01:

    en réponse à : Lien entre deux champs #59269
    brumbies
    Membre

    Bonjour,

    la question est de savoir si le nom d’une ville peut être repris pour plusieurs noms différents…
    Ensuite tu as plusieurs possibilités, soit tu passes par un script avec par exemple une instruction switch et tu listes dans ton instruction chaque cas possible de nom…
    Soit tu peux associer à chaque nom une ville dans ta 2eme liste (quitte à ce que tu ait plusieurs fois une même ville… et ensuite tu as une simple affectation à faire du type :
    this.getField(“ville”).value = this.getField(“nom”).value; => attention, la contrainte étant de bien associer les valeurs d’exportation entre elle (ville-nom)

    La 2eme solution est sans doute la plus simple du point de vue code,
    car sinon tu peux aussi :
    soit définir en code un tableau associant nom et ville que tu utiliseras pour faire afficher dans un champs texte la ville
    soit en passant par l’ajout d’Item à ta liste déroulante suivant le nom sélectionné
    => c’est 2 solutions comportent davantage de code
    etc…
    :Smiley01:

    en réponse à : Comment mettre un libellé dans un bouton ? #59255
    brumbies
    Membre

    Bonjour,

    Tu utilises quel outils pour la réalisation de ton formulaire?
    :Smiley01:

    en réponse à : LiveCycle Designer #59258
    brumbies
    Membre

    Bonjour,

    Le fichier que tu as trouvé a été réalisé avec LiveCycle Designer que je ne maitrise pas.
    Par contre pour faire apparaitre/disparaitre des champs c’est tout a fait possible via adobe acrobat standard ou pro.

    Ensuite pour ce qui est de la réalisation, soit tu fais une recherche sur le forum car ce sujet a déjà été évoqué (recherche avec le mot display)
    soit tu peux nous joindre une maquette de ton fichier…
    :Smiley01:

    en réponse à : Listes déroulantes liées et champs associés #59095
    brumbies
    Membre

    Ok je n’avais pas vu la ligne this.event.value=””;
    qui réinitialise à “vide” la valeur de ton champs Date2 => donc dans ton script si la condition était vrai alors la valeur disparaissait.

    De plus la fonction filColor modifie la couleur de fond et non la couleur du texte, donc inutile dans ton cas…

    donc si la condition est vrai => alors la couleur de fond se met en rouge
    sinon => elle se met de la même couleur que celle de ton champ “c_dateinter” ………. qui n’existe pas !

    donc je modifierai le code suivant

    Code:
    if(ecartJ<0)
    {
    this.event.value=””;
    this.event.target.fillColor=color.transparent;
    }
    else
    {
    this.event.target.fillColor=this.getField(“Date1”).fillColor;
    }

    par

    Code:
    if(ecartJ<-365) // pour prendre en compte la différence d'un an en moins du champs Date2 par rapport à Date1
    {
      this.event.target.textColor = color.red;
    }
    else
    {
      this.event.target.textColor = color.black;
    }

    :Smiley01:

    brumbies
    Membre

    Bonjour,

    Essaie avec le code ci-dessous …

    Code:
    var myDoc = event.target.doc;
    var commentList;

    if(!myDoc)
    app.alert(“Impossible d’accéder au document”);
    else
    {
    commentList = myDoc.getAnnots();

    if(commentList != null)
    {   
      for each(comment in commentList)
      comment.lock = true;
      app.alert(“blocage effectué”);
    }
    else
    app.alert(“Ce document ne présente aucun commentaire ni aucune signature”);
    }

    :Smiley01:

    en réponse à : copier des noms dans une liste déroulante #59245
    brumbies
    Membre

    C’est effectivement le cas… mais tu aurais eu la même problématique avec une liste déroulante… et tu ne nous l’avais pas précisé…

    A chaud, je passerai par une case à cocher située à côté de ton champs texte avec un texte en dur à côté du style : “saisie manuelle”
    et je testerai ensuite la valeur d’exportation de cette case à cocher avant d’exécuter le script affichant la popup menu.

    :Smiley01:

    en réponse à : copier des noms dans une liste déroulante #59243
    brumbies
    Membre

    Je ne visualise pas ta formule javascript…

    j’ai adapté ton fichier.
    Le problème venait du fait que ton champs observateur est une liste déroulante…
    Hors pour une liste déroulante le “.value” correspond à la valeur d’exportation et comme tu n’en as pas de liste de définit ca ne pouvait pas fonctionner…
    je l’ai donc remplacé par un champs texte.
    :Smiley01:

    en réponse à : Listes déroulantes liées et champs associés #59092
    brumbies
    Membre

    C’est tout de suite plus facile …  :geek:

    donc ton problème est que tu as définit en script de document une fonction Controle() que tu n’appelles pas … donc rien ne peut s’exécuter !
    L’astuce est de mettre au niveau de ton champs “c_dateverifdff” => Propriétés => Validation => Exécuter un script de validation personnalisé
    et tu y places l’instrcution :
    Controle();

    Ensuite attention, car si la date est supérieure à 1 an alors le texte “s’effacera” car tu as mis :
    this.event.target.fillColor=color.transparent;

    :Smiley01:

    en réponse à : copier des noms dans une liste déroulante #59240
    brumbies
    Membre

    Le plus simple serait de poster ton fichier, car chez moi cela fonctionne bien…
    :Smiley01:

    en réponse à : Listes déroulantes liées et champs associés #59090
    brumbies
    Membre

    Bonjour,

    Le plus simple serait que tu post un exemple actualisé de ton fichier…
    :Smiley01:

    en réponse à : formule conditionnelle #59173
    brumbies
    Membre

    Bonjour,

    Il faut que tu ajustes ta comparaison en remplacant > (supérieur strictement à 41 ou 30 => donc ils sont exclus) par >= (supérieur ou égale)
    :Smiley01:

    en réponse à : copier des noms dans une liste déroulante #59238
    brumbies
    Membre

    Bonjour,

    Merlin t’a tout dit…
    En plaçant le script ci-dessous (à adapter selon tes noms) dans un champs de formulaire via les propriétés de ce champs => actions => Action : Souris Enfoncée. => exécuter un script javascript

    Code:
    var monMenu = app.popUpMenu(“Riri”,”Fifi”,”Loulou”,”Donald”,”Daisy”,”Picsou”);
    if (monMenu!=null) {event.target.value = monMenu;}

    :Smiley01:

    brumbies
    Membre

    Bonjour,

    page_froid est une variable, tu peux donc l’appeler comme tu veux du moment que tu l’appelles du même nom lorsque tu veux faire appel à elle…

    Ensuite, pour que ton fichier fonctionne, il faut que tu ajoutes à cette variable le numéro de page -1.
    donc : var page_froid = x + this.getField(“FR”).value; //ou x correspond au numéro de page de ta page “initiale” -1

    si je comprend bien ton cas tu t’attendais à ce que ta page FROID dupliquée soit insérer en page 12. donc ta page “initiale” est en 11 positions…
    donc x = 10… et ainsi de suite pour les 2 pages que tu souhaites dupliquer…

    Attention : lors de la 1ere utilisation ou quand tu as reproduit le bouton il faut bien que le champ FR (et les autres identiques) soit bien à 0… sinon tu aura 1 décalage supplémentaire
    :Smiley01:

    brumbies
    Membre

    De plus,
    il faut savoir que tu as bien mis tes calques en page 2 mais d’un point de vue script ton document commence au numéro de page 0… donc la page 2 à laquelle tu veux faire appel porte le numéro 1 et ainsi de suite… => raison pour laquelle tu as une erreur, puisqu’il n’y a pas de calque sur la page 3 de ton doc…
    Il en va de même avec les calques…
    :Smiley01:

    en réponse à : Listes déroulantes liées et champs associés #59088
    brumbies
    Membre

    Bonjour,

    As tu regardé le topic suivant?
    http://abracadabrapdf.net/forum/index.php/topic,2662.msg14500.html#msg14500
    Avec l’exemple d’Alex et en l’adaptant légèrement tu devrais pouvoir réussir à faire ce que tu veux…

    ensuite pour modifier la couleur du texte d’un champs on peut utiliser:

    Code:
    var f = this.getField(“myField”);
    f.textColor = color.red;

    ensuite pour le remettre en noir: color.black
    :Smiley01:

    en réponse à : copier des noms dans une liste déroulante #59235
    brumbies
    Membre

    Bonjour,

    La solution de Merlin est la plus rapide…
    Avec de la programmation, on peut récupérer la liste de tes noms placés dans un fichier en PJ de ton PDF et les intégrer dans une liste déroulante via la fonction “insertItemAt”
    C’est un peu plus complexe. ça dépendra de ce que tu veux en faire ensuite…
    :Smiley01:

    brumbies
    Membre

    Bonjour,

    Ci-joint ta maquette dont j’ai modifié les codes sur tes pages visibles et sur tes modèles…
    :Smiley01:

    en réponse à : Format personnalisé pour coordonnées latitude-longitude #58849
    brumbies
    Membre

    Bonsoir,

    ATTENTION : java et javascript sont 2 langages différent… http://abracadabrapdf.net/forum/index.php/topic,2160.msg10980.html#msg10980

    Maintenant, perso par principe de codage je mets les fonctions au niveau des scripts de document et ensuite je les appelle au niveau des champs de formulaire (soit via un bouton au niveau des actions par exemple.

    Ensuite pour le code que tu as trouvé… tu parles de java et on lit javascript dans les commentaires du programme… Est ce que tu peux nous donner une maquette de ton doc et l’url ou tu as trouvé ce code…
    :Smiley01:

    brumbies
    Membre

    Bonjour,

    Tu aurais une maquette?
    C’est faisable, perso j’ajouterai un champs texte invisible à l’écran et à l’impression dont je me servirai pour définir la page à laquelle insérer ton modèle de document… ce chiffre serait incrémenté de 1 à chaque fois que tu insères un modèle.
    tout en sachant que tu peux choisir la page à laquelle tu souhaites insérer ton modèle…
    :Smiley01:

    en réponse à : Listes déroulantes liées et champs associés #59083
    brumbies
    Membre

    Bonjour,

    1) Dans ton cas, il n’y a pas de différence entre les 2 méthodes au niveau du résultat recherché.
    Celui d’Alex s’exécute à l’ouverture du document. Tandis que le mien ne s’exécute qu’à l’ouverture de la page.
    Donc si la page que tu ouvres à l’ouverture contient le script il s’ouvrira à l’ouverture, alors que si ce n’est pas le cas il ne s’exécutera qu’après coup.
    De plus, la méthode d’Alex est prioritaire sur les scripts de page dans l’ordre d’exécution des scripts….

    Donc pour résumer, ça va dépendre de ce que tu souhaites faire…

    2) Il faut tester…
    :Smiley01:

    brumbies
    Membre

    Bonjour,

    Oui ce que tu veux faire est tout à fait possible…
    Il faudra juste faire attention à  bien associer le numéro du calque avec celui de la combinaison valexport1 et valexport2… (il faut aussi avoir le bon nombre de calque…)

    Par contre pour te faire un script, sans modèle (avec + de calques) que celui que tu as transmis, ça va être compliqué…
    :Smiley01:

    en réponse à : Listes déroulantes liées et champs associés #59079
    brumbies
    Membre

    Bonjour,

    Donc tu peux procéder ainsi :

    1. Cliquez sur le bouton Vignettes de page, à gauche.
    2. Sélectionnez la vignette associée à la page qui vous intéresse, puis choisissez Propriétés de la page dans le menu Options AX_NavOptions_Sm_N.png.
    3. Cliquez sur l’onglet Actions.
    4. Dans le menu Sélectionner le déclencheur, choisissez Ouverture de la page pour définir une action à l’ouverture de la page ou choisissez Fermeture de la page pour définir une action à la fermeture de la page.
    5. Choisissez “Exécuter un script javascript” dans le menu Sélectionner l’action, puis cliquez sur Ajouter.
    6. [/list] :Smiley01:

    en réponse à : Listes déroulantes liées et champs associés #59077
    brumbies
    Membre

    Bonsoir,

    Tu l’as peut être déjà indiqué mais tu utilises quelle logiciel pour créer ton PDF? et quelle version?
    :Smiley01:

    en réponse à : formule conditionnelle #59170
    brumbies
    Membre

    :Ooops: dsl mais il est vrai que je ne me suis pas encore penché sur LiveCycle designer…

    en réponse à : Si lundi, remplacer par la date du dernier vendredi #59166
    brumbies
    Membre

    Bonjour,

    la fonction getDay() permet de savoir quel est le jour de la semaine…
    Dimanche : 0
    Lundi : 1

    Donc avec une instruction if en testant que xxx.getDay == 1
    tu dois pouvoir soustraire 3 jours au lieu de 1 dans les autres cas

    :Smiley01:

    brumbies
    Membre

    :Smiley08: Merci Merlin…

    brumbies
    Membre

    Bonjour,

    1) Tu fais appel à un champs nommé “dimdalle1” qui n’existe pas…
    2) pour gérer les calques, tu peux utiliser le script d’Alex, sinon perso j’utilise un de ce style :

    Code:
    for (var i = 2 ; i <= this.getField("dr2").numItems; i++) // on commence à 2 pour prendre en compte la valeur d'exportation 0 de ton champs dr2
    {
      if((i-1) == this.getField(“dr2”).value)
      this.getOCGs(this.pageNum)[i-2].state = true;
      else
      this.getOCGs(this.pageNum)[i-2].state = false;   
    }

    je l’ai adapté à ton document, je le place en action champs désactivé sur “dr2”.
    Attention, pour le tester il faut que tu es le même nombre de calque que d’Item de ton champs “dr2″ (sans compte ” ” – valeur d’exportation 0, puisque je l’ai déjà pris en compte dans le script)

    :Smiley01:

    en réponse à : formule conditionnelle #59168
    brumbies
    Membre

    Bonjour,

    Tu peux utiliser un script de calcul personnalisé du type :

    Code:
    if(this.getField(“Kilométrage parcouru”).value>41)
    this.getField(“Frais kilométrique”).value = this.getField(“Kilométrage parcouru”).value * 0.399;
    else
    if(this.getField(“Kilométrage parcouru”).value>30)
      this.getField(“Frais kilométrique”).value = 15;
    else
      this.getField(“Frais kilométrique”).value = 11.5;

    :Smiley01:

    en réponse à : Listes déroulantes liées et champs associés #59075
    brumbies
    Membre

    Bonjour,

    Quelques Pistes…
    1) tu dois Initialiser tes listes à l’ouverture du document… Met en script d’ouverture ta fonction “Initialisation();”
    2) ta fonction initialisation comporte une ligne qui a 1 élément de trop et qui ne permet donc pas l’insertion d’Item sur tes listes…
    Ton code : this.getField(“ld_ff1”).insertItemAt(ListeN1[indexTypeFF],ListeN1[indexTypeFF],ListeN1[indexTypeFF],indexTypeFF)
    Celui qui est correct : this.getField(“ld_ff1”).insertItemAt(ListeN1[indexTypeFF],ListeN1[indexTypeFF],indexTypeFF)

    Essai ce devrait mieux fonctionner…

    :Smiley01:

    brumbies
    Membre

    Bonjour,

    Désolé du délais de réponse, j’ai été pas mal pris ces derniers temps…

    Donc le message d’erreur qui est généré laisse supposer, comme tu l’indiquais, un problème au niveau de la reconnaissance soit de la page soit du calque.
    J’ai besoin de savoir :
    – quel est le numéro de page ou se situe les calques que tu veux faire apparaitre/masquer?
    – quel est ton nombre de calque à gérer?

    :Smiley01:

    en réponse à : Forcer saut de page (Nouvelle feuille) #56838
    brumbies
    Membre

    Bonjour,

    Une autre solution passe aussi par un script, du style :

    Code:
    var pp = this.getPrintParams();
    pp.printRange=[[0, 2], [4, 6]]; // permet de choisir les pages à imprimer
    pp.NumCopies = 3; // permet de choisir le nombre de copies
    this.print(pp);

    :Smiley01:

    en réponse à : Imprimer la dernière page #58619
    brumbies
    Membre

    :Smiley03:

    en réponse à : Imprimer la dernière page #58617
    brumbies
    Membre

    Bonjour,

    est-il possible dans ce code d’insérer la quantité à imprimer, genre nQty:x ?

    C’est possible, mais il faut passer par getPrintParams()…

    voici le code pour ton exemple :

    Code:
    var pp = this.getPrintParams();
    pp.firstPage = this.numPages – 1;
    pp.lastPage = this.numPages – 1;
    pp.pageHandling = pp.constants.handling.fit;  // permet d’ajuster la taille de ton doc au format du papier de l’imprimante
    pp.NumCopies = 4;  // tu indiques le nombre de copies que tu souhaites
    this.print(pp);

    :Smiley01:

    en réponse à : Duplication de champs et de page dans un formulaire #58666
    brumbies
    Membre

    Bonjour,
    regarde les exemples que l’on met à jour…

    Code:
    this.getField(“P”+this.pageNum+”.liste.Stotal.0″).value = this.getField(“P”+this.pageNum+”.liste.quant.0″).value * this.getField(“P”+this.pageNum+”.liste.prix.0″).value;

    ce code est à intégrer au niveau de ton champs Stotal.0 présent dans ton modèle de page (template).
      => propriétés du champs / onglet Calcul / Script de calcul personnalisé
    Ensuite il faut le dupliquer sur les autres champs Stotal (en modifiant le .0 par .1, .2, .3 …)

    Pour faire la somme de tous tes champs totaux Stotal.x tu peux utiliser le code ci-dessous appliqué au champs SStotal:

    Code:
    var total = 0;
    for (var i = 0; i<= 2; i++) // 2 étant à adapter en fonction du nombre de champs Stotal.x
    total = total + this.getField(“P”+this.pageNum+”.liste.Stotal.”+i).value;

    this.getField(“P”+this.pageNum+”.liste.SStotal”).value = total;

    Pour faire la somme de tous les SStotal tu peux utiliser le code ci-dessous, appliqué sur le champs Total :

    Code:
    var global = 0;

    if((this.numPages – 1) != 0)
    for(var i = 1; i <= (this.numPages - 1); i++)
      global = global + this.getField(“P”+i+”.liste.SStotal”).value;
     
    this.getField(“Total”).value = global;

    Attention à l’ordre de calcul de tes champs sinon les différents totaux peuvent avoir un temps de décalage…

    J’ai mis à jour ta maquette.
    A toi de jouer…
    :Smiley01:

    brumbies
    Membre

    Exact, je suis parti d’un fichier existant chez moi…
    En fait, de manière général quand tu veux gérer des pages avec Javascript, la première page commence par 0 et non pas par 1…
    donc si tu remplaces 1 en nStart et nEnd par 0 (faisant donc bien référence à la 1ere page…) ca devrait fonctionner beaucoup mieux
    :Smiley01:

    brumbies
    Membre

    C’est toujours plus facile de trouver ce qui cloche avec un exemple… merci

    donc, le problème vient du fait que tu associes un script (pour la dialogue box) à une action qui va chercher une commande de menu.
    LES 2 S EXECUTENT DE MANIERE DISTINCTES….

    pour résoudre ton problème :
    1) tu supprimes toutes les actions que tu as placé sur ton bouton Imprimer (script + commande de menu).
    2) tu crées une nouvelle action (souris relachée + exécuter un script javascript)
    3) tu colles le code ci-dessous (le nombre de page de la ligne print est à adapter en fonction de ton doc)

    Code:
    var nButton = 4; // permet de gérer le cas ou l’utilisateur coche la croix pour fermer sans avoir répondu.
      nButton = app.alert({
      cMsg: “xxxxxxxxxxxxxxxxxxxxxxx”,
      cTitle: “Impression”,
      nIcon: 2, nType: 2});
     
      if(nButton == 4)
        this.print({nStart: 1, nEnd: 1});

    :Smiley01:

    brumbies
    Membre

    Bonjour,

    J’utilise souvent un script approchant du tiens et qui fonctionne très bien…

    Code:
    var nButton = 4; // permet de gérer le cas ou l’utilisateur coche la croix pour fermer sans avoir répondu.
      nButton = app.alert({
      cMsg: “xxxxxxxxxxxxxxxxxxxxxxx”,
      cTitle: “Impression”,
      nIcon: 2, nType: 2});
     
      if(nButton == 4)
        this.print({nStart: 1, nEnd: 4});

    n’hésite pas à poster une maquette de ton doc si besoin
    :Smiley01:

    en réponse à : Duplication de champs et de page dans un formulaire #58663
    brumbies
    Membre

    Bonjour,

    Et enfin quand je duplique la page, j’ai encore le souci au niveau des calculs, qui restent bloqués sur le modèle prix*quantité sans tenir compte des préfixes…

    En fait, comme tu as pu le constater seul les champs peuvent changer de nom en fonction des différentes pages dupliquées…
    du coup, il faut le prévoir au niveau d’un script de calcul personnalisé du type :

    Code:
    this.getField(“P”+this.pageNum+”.liste.Stotal.0″).value = this.getField(“P”+this.pageNum+”.liste.quant.0″).value * this.getField(“P”+this.pageNum+”.liste.prix.0″).value;

    le script va chercher le numéro de page de la page dupliquée, ce qui permet de gérer le préfixe
    cela nécessite que lorsque tu dupliques ton template cela soit toujours en fin de document, que tu ne supprimes pas entre temps une page.

    je te joins ton fichier auquel j’ai ajouté cette ligne uniquement au niveau du champs Stotal.0 (on peut l’adapter aux autres sommes)
    De plus, j’ai modifié ton bouton “Nouvelle” ou j’ai changé ton script en préférant :

    Code:
    this.spawnPageFromTemplate(“liste”,this.numPages, true, false);

    :Smiley01:

    en réponse à : Exportation d’un formulaire en PDF non modifiable. – RÉSOLU #55756
    brumbies
    Membre

    Bonjour,
    De mon côté j’ai tester avec Arcobat pro XI => ça fonctionne
    avec adobe Reader XI => ça ne fonctionne pas, quand tu rouvres le fichier (puisqu’il est censé ce fermer automatiquement) les popup menu accessibles via les champs “Désignation” sont disponibles.

    Une alternative est d’utiliser un champs text non visible (Text6 dans l’exemple joint) à l’écran et de lui affecter la valeur 0 initialement.
    Une fois les champs mis en lecture seul, on affecte la valeur 1 au champs “Text6” (je l’ai mis au niveau du bouton Save As).
    J’ai modifié légèrement les scripts présents dans les champs “Désignation” pour que le popup menu ne s’affiche que si la valeur de “text6” est 0.

    L’erreur en ligne 20 du bouton Sauvegarder vient du fait que l’on appelle une pièce jointe mais qu’aucune pièce jointe n’est présente, ce qui vient surement du fait que le fichier a été retravaillé pour être posté ….

    :Smiley01:

    en réponse à : Limite de l’éditeur de code interne, besoin de conseil :) #58501
    brumbies
    Membre

    Ok, est ce que tu aurais une maquette à me transmettre pour que je regarde…
    :Smiley01:

    en réponse à : Ouverture d’une pièce jointe avec JavaScript #58363
    brumbies
    Membre

    Bonjour,

    Je viens de me pencher sur ta demande, et j’ai oublier de te demander si tu seras le seul utilisateur ou non?

    J’ai modifié ta maquette, elle ouvre fichier2 à partir de fichier1 qui s’ouvre également (tu peux intégrer un calque à fichier1 pour faire revenir l’utilisateur sur fichier0).

    Par contre, j’utilise une variable globale persistante dans mon script qui n’est utilisable que si tu modifies les paramètres de sécurités (depuis la version 9):
    le plus simple étant manuellement Edition => Préférences => JavaScript => décocher “activer la stratégie de protection globale des objets” (à reproduire sur chaque poste utilisateur)

    :Smiley01:

    en réponse à : Limite de l’éditeur de code interne, besoin de conseil :) #58499
    brumbies
    Membre

    Bonjour,

    Je n’ai jamais été confronté à ce type de police, par contre j’utilise PSPad (open source et possibilité de l’avoir en version portable) et en y regardant de plus près il semble possible de modifier la police et d’y intégrer des caractères arabes…

    Sinon tu as la possibilité de diviser ton script en plusieurs fonctions que tu appelles les une à la suite des autres, mais tu peux t’y perdre si tu en as beaucoup…
    :Smiley01:

    en réponse à : Ouverture d’une pièce jointe avec JavaScript #58361
    brumbies
    Membre

    Bonjour,
    Dsl pour le délais de réponse mais cette semaine je ne capte pas la 3g et n’est pas de wifi…

    OK j’étais parti sur 2 fichiers  pdf. ..
    une piste serait de mettre ta vidéo en pj de fichier1 et d’initialiser une variable globale en fichier0 associer à un script d’ouverture en fichier1
    Tu ouvrirais fichier1 à partir de fichier0  pour que ça ouvre automatiquement ta vidéo. .. et voir ensuite comment revenir à fichier0 pour que ce soit le plus transparent pour l’utilisateur
    Je ne pourrais le tester pas avant ce week end…
    as tu une maquette à nous donner?
    :Smiley01:

    en réponse à : Ouverture d’une pièce jointe avec JavaScript #58359
    brumbies
    Membre

    Bonjour,

    Tu as 2 possibilités.
    j’appelerai :
    fichier0 => ton fichier “parent”
    fichier1 => ton fichier en PJ que tu ouvres en 1er
    fichier2 => celui que tu cherches à ouvrir à partir de fichier1

    1) Si tu ne fais pas appel à fichier2 via fichier0, alors le plus simple c’est de mettre ton fichier2 en PJ de ton fichier1
    ainsi tu auras une imbrication de fichier en pièce jointe

    2) Si tu fais appel à fichier 2 via fichier0, alors tu peux passer par un bouton en y associant l’action “atteindre une page de vue”.
    techniquement tu ouvres ton fichier0, tu le laisses ouvert et tu ouvres fichier1, tu crées ton bouton et tu crées l’action “atteindre une page de vue” => tu vas ensuite ouvrir ton fichier2 (à partir de fichier0) et une fois fichier2 ouvert tu peux cliquer sur “définir le lien”.
    Tu enregistres via la disquette fichier1 et tu enregistres via la disquette fichier0.
    Et ca devrait fonctionner.
    => l’inconvénient ou l’avantage à toi de voir :
      – fichier2 s’ouvre à la place de fichier1
      – s’agissant de pièces jointes, tu ne peux pas enregistrer de formulaire si tu en as un.

    :Smiley01:

    en réponse à : Exportation de données vers FileMaker Pro #58349
    brumbies
    Membre

    Bonjour,

    Je ne connais pas particulièrement Filemaker Pro, mais dans ce que j’ai pu voir sur le net, j’ai 2-3 questions :

    1) Veux tu créer un nouveau fichier Filemaker ou veux tu en implémenter un existant?
    ton message d’erreur me laisse penser que ton problème vient du fait que tu souhaites implémenter un fichier existant et qu’il y a une différence entre le nombre de donnée (ex: pas le même nombre de colonne) du fichier Filemaker et de celui que tu cherches à intégrer.

    2) As tu essayé d’autre format d’exportation de données? Perso avec Acrobat Pro XI je peux aussi faire une extraction en csv.
    Et comme j’ai vu que le format excel est supporté par Filemaker (une conversion csv en xlsx, est très rapide).

    en réponse à : Lancer un script en ligne de commande #58331
    brumbies
    Membre

    Bonsoir,

    Sujet qui m’est inconnu, mais très intéressant.
    Malheureusement, je n’ai pas trop le temps en ce moment de me pencher sur la question… dsl
    :Smiley01:

    en réponse à : Script pour calcul d’intervalles dans un formulaire PDF #58329
    brumbies
    Membre

    Bonsoir,

    Le document de Merlin permet de te donner le script pour additionner les 4 notes à renseigner. En le combinant au miens on obtient le doc ci-joint.

    C’est sans doute ce que tu as fait mais attention à bien vérifier l’ordre de calcul de tes champs de formulaires, sinon effectivement ça ne fonctionne pas… ou plutot avec un décalage de 1 saisie (donc inutile)
    accessible dans la acrobat pro XI : formulaire / modifier / autres taches / définir l’ordre de calcul

    :Smiley01:
    PS: j’ai mis les champs de calcul en lecture seul

    en réponse à : Script pour calcul d’intervalles dans un formulaire PDF #58324
    brumbies
    Membre

    Bonsoir,

    Il y plusieurs solutions possibles. Par exemple, par le biais d’une imbrication d’instructions de contrôle comme if(){}else{if(){}else{if(){}else{}…}}.

    Le problème dans ton cas c’est le fait qu’il n’y ait pas de suite logique entre ton nombre de point, ton numéro de transfert et ton pourcentage.
    Du coup, j’ai opté pour l’utilisation d’un tableau que je définis en script de document. Il suffit de modifier le résultat (32).
    :Smiley01:

    en réponse à : Calcul de pourcentage d’usure #58341
    brumbies
    Membre

    Bonsoir,

    Qu’elle est ta formule de calcul du pourcentage d’usure?
    A partir de ça, nous pourrons te proposer un script
    :Smiley01:

    en réponse à : Script pour calcul d’intervalles dans un formulaire PDF #58322
    brumbies
    Membre

    Bonjour,

    Il est possible de faire exécuter un script de calcul pour faire ce que tu veux, par contre, aurais tu une maquette à poster, ce qui serait plus simple…
    :Smiley01:

    en réponse à : Affichage au remplissage d’un formulaire PDF #58318
    brumbies
    Membre

    Bonsoir,

    En fait, tu avais déjà la réponse sous les yeux… avec la réponse de Merlin juste après mon post.
    J’ai simplement modifier la police de tes champs de formulaire en mettant Helvetica.

    Cela montre que en utilisant une police des 3 police de bases, c’est toujours plus simple…
    Et que tu as effectivement un problème de police sur ton mac
    :Smiley03:

    en réponse à : Identifier un consultant #58321
    brumbies
    Membre

    :bravo:

    en réponse à : Identifier un consultant #58319
    brumbies
    Membre

    Bonjour,

    J’ai besoin d’avoir un peu plus de précisions…
    Le fichier est commun à tous les utilisateurs (ex: déposé sur un serveur commun), comment y as tu accès (retour de mail, …)
    Tu recherches quoi? pouvoir identifier les utilisateurs ou juste pouvoir les compter?
    Identifier les utilisateurs, à chaud je dirai pas possible, mais je vais m’y pencher.
    pouvoir compter le nombre de visite et à quelle date, ok mais via une action de chaque utilisateur à minima pour enregistrer le fichier à la fermeture

    :Smiley01:

    en réponse à : Affichage au remplissage d’un formulaire PDF #58312
    brumbies
    Membre

    Bonjour,
    De mon côté je suis sous PC, et je ne reproduis pas ce problème avec adobe reader XI…
    Peux tu tester le fichier joint et me dire si tu rencontres les même problèmes?
    :Smiley01:

    en réponse à : Récupérer numéro de page dans champs de texte #58302
    brumbies
    Membre

    Bonjour,

    J’ai modifié ton fichier et ca devrait répondre à ton besoin.

    j’ai supprimé le code présent sur ton champ “numeropage1” car this.pageNum revoit systématiquement le numéro de la page ou le focus est présent, raison pour laquelle tous tes champs indiquaient le même chiffre.

    pour palier ça j’ai modifier le code présent dans ton bouton comme suit :

    Code:
    this.getField(“numeropage1”).value = this.numPages + 1;        // affecte au champ “numeropage1” le numéro de la page
    this.spawnPageFromTemplate(“annexe”, this.numPages, true);    // duplique le modèle de page “annexe” en renommant tous les champs de formulaire
                                                                  // + insère la page systématiquement en fin de document
    this.pageNum = 0;                                              // remet le focus sur la 1ère page

    l’ensemble des champs sur tes différentes pages ont un nom différent grace au paramètre “true” de spawnPageFromTemplate
    associer au fait de venir affecter à ton champs initial “numeropage1” le nombre total de page +1 permet de conserver le numéro de page distinctement sur l’ensemble des pages ajoutées.

    :Smiley01:

    en réponse à : Affichage au remplissage d’un formulaire PDF #58310
    brumbies
    Membre

    Bonjour,

    Le problème semble lié aux caractères accentués.
    As tu essayé de changer la police de caractère de ton champs de formulaire?
    :Smiley01:

    en réponse à : Récupérer numéro de page dans champs de texte #58300
    brumbies
    Membre

    Bonjour,

    le script est

    Code:
    event.target.value = this.numPages;

    :Smiley01:

    brumbies
    Membre

    Bonjour et Bienvenu,

    Une solution est effectivement de passer par des listes déroulantes…
    Mais pour cela il faut que leur affecte pour chaque élément une valeur d’exportation (paramétrable au niveau des paramètres du champs => options / saisir l’éléments et la valeur d’exportation)
    => il faut faire de même sur tes 2 listes déroulantes …

    Ensuite tu peux placer un script de ce type au niveau du script de calcul personnalisé de ton champs “P1 – Liste déroulante 7” (onglet Calcul)

    Code:
    switch(this.getField(“P1 – Liste déroulante 6”).value)
    {
    case 1: // correspond à la valeur d’exportattion du champs P1 – Liste déroulante 6
      this.getField(“P1 – Liste déroulante 7”).value = 1; // correspond à la valeur d’exportation du champs P1 – Liste déroulante 7
      break;
    case 2:
      this.getField(“P1 – Liste déroulante 7”).value = 1;
      break;
    case 3:
      this.getField(“P1 – Liste déroulante 7”).value = 2;
      break;
    case 4:
      this.getField(“P1 – Liste déroulante 7”).value = 3;
      break;
    case 5:
      this.getField(“P1 – Liste déroulante 7”).value = 3;
      break;
    case 6:
      this.getField(“P1 – Liste déroulante 7”).value = 3;
      break;
    case 7:
      this.getField(“P1 – Liste déroulante 7”).value = 4;
      break; 
      //…
    }

    :Smiley01:

    en réponse à : Exportation d’une valeur d’un bouton radio #58092
    brumbies
    Membre
    en réponse à : Comment barrer sous condition le résultat d’un champ de texte #58089
    brumbies
    Membre

    Sinon, il faut savoir que l’attribut “barré” est disponible dans la barre des Propriétés (ctrl-E ou cmd-E) du texte quand l’option “Autoriser le format RTF”

    :bravo:  Bravo Merlin, je ne connaissais pas cette possibilité.

    Du coup, comme il s’agit d’un paramètre de champs de formulaire, c’est paramétrable via un script :

    Code:
    var spans = new Array();
    spans[0] = new Object();
    spans[0].text = “texte à affecter à ton champs”;
    spans[0].strikethrough = true; //true : barré / false : non barré
    this.getField(“Ton champs”).richValue = spans;

    Attention : “ton champs” doit avoir la fonction “Autoriser le format RTF” d’activé

    j’ai modifié le fichier avec cette nouveauté,
    Donc, zebulon59 a toi de choisir…
    :Smiley01:

    en réponse à : Comment barrer sous condition le résultat d’un champ de texte #58087
    brumbies
    Membre

    Bonjour et bienvenu,

    Une méthode pour “barré” un texte (ou un champs de formulaire) peut être d’utiliser un champs texte en lecture seule avec un caractère windings ou autre (police de caractère) que tu viens faire apparaitre/disparaitre de la même manière que ce que tu as fait sur la 1ère partie.

    Je t’ai fait un exemple

    :Smiley01:
    PS: un conseil, écrit ton script en colonne plutot quand ligne tu gagneras en lisibilité

    en réponse à : Programmation afficher/masquer plusieurs calques de façon rapide #57982
    brumbies
    Membre

    Bonjour et bienvenu,

    1) je ne vois pas de script d’ouverture pour venir affecter aux calques P1 et P2 les valeurs des champs OFFRE_0a et OFFRE_1a.
    Je mettrais le script suivant en script d’ouverture de la page d’ouverture de ton document (ici la page 1):

    Code:
    this.getOCGs(2)[1].state = this.getField(“OFFRE_0a”).value;
    this.getOCGs(2)[2].state = this.getField(“OFFRE_1a”).value;

    2) ensuite tu as fait une inversion d’une inversion au niveau des scripts en OFFRE_0 et OFFRE_1 (déclencheur souris relachée) => pile je gagne, face tu perds
    tu as écrit les même codes, même ce n’était pas ton souhait:

    Code:
    // code en OFFRE_0
    this.getField(“OFFRE_0a”).value = true;
    this.getField(“OFFRE_1a”).value = false;
    // code en OFFRE_1
    this.getField(“OFFRE_1a”).value = false;
    this.getField(“OFFRE_0a”).value = true;

    j’ai modifié ton fichier avec les éléments que je viens de te décrire
    dis moi si ca te va?
    :Smiley01:

    brumbies
    Membre

    Bonsoir,
    la convention de dénomination!!!  :priere:
    ainsi et avec l’aide d’une simple boucle for tu peux rendre en 2 lignes de codes tous tes champs non modifiable…

    sinon pour le bouton avec mdp, regarde le fichier de ce poste :
    http://abracadabrapdf.net/forum/index.php/topic,2038.msg10399.html#msg10399

    :Smiley01:

    brumbies
    Membre

    Bonjour,

    le code que tu cherches d’après ma compréhension et celle de Merlin est :
    this.getField(“xxx”).readonly = true; => champs non modifiable
    this.getField(“xxx”).readonly = false; => champs modifiable
    et comme le dit Merlin, il te faut un bouton pour y mettre ce code.

    un conseil, prévoit un bouton pour “remettre” tes champs modifiables, que tu peux “sécuriser” via un mdp connue uniquement de l’utilisateur “maitre”.
    Sinon il faudra bien lui préciser d’enregistrer le pdf avec ces prix sous un autre nom…

    brumbies
    Membre

    Je viens de regarder et ta fonction saveLayerConfig remplie bien ca fonction chez moi… testé sous acrobat pro XI et adobe reader 11…

    Sinon, il y a plus simple pour enregistrer/récupérer le statut des calques.
    tu peux ajouter la boucle for  en script d’ouverture de document…

    Code:
    for (var i = 0 ; i <= 3; i++)
    this.getOCGs(this.pageNum).state = this.getField(“OFFRE_”+(i)+”a”).value;

    d’ou l’utilisation des champs OFFRE_na pour “sauvegarder” le statut de chaque calque et dans ce cas la liste déroulante LayerConfig est inutile.
    Et le code est plus simple…

    cf exemple joint…
    :Smiley01:

    brumbies
    Membre

    oups!!! je n’ai pas tester les autres boutons…

    donc le problème vient de la numérotation de tes calques:
    this.getOCGs(this.pageNum)[0].state => BASE
    this.getOCGs(this.pageNum)[1].state => P4
    this.getOCGs(this.pageNum)[2].state => P3
    this.getOCGs(this.pageNum)[3].state => P2
    this.getOCGs(this.pageNum)[4].state => P1

    du coup avec la boucle for tu affectes la valeur de “OFFRE_0a” à BASE
    => pour résoudre ton problème il suffit de mettre
    this.getField(“OFFRE_0a”).value = true;
    dans chacun des scripts des boutons

    Sinon, P1 ne sert à rien, et pour ne pas avoir à gérer un calque pour qu’il soit visible tout le temps, met le en fond de page. => cad utilses le pdf BASE comme pdf principal et vient y ajouter les calques dessus, comme cela tu n’as besoin d’en gérer que 3…

    :Smiley01:
    PS: il faut bien conserver la boucle for ainsi :

    Code:
    for (var i = 0 ; i <= 3; i++)
    this.getOCGs(this.pageNum).state = this.getField(“OFFRE_”+(i)+”a”).value; 

    car le tiens ne fais pas référence au  numéro de calque

    brumbies
    Membre

    Bonjour,

    Je remplacerai ta boucle for par :

    Code:
    for (var i = 0 ; i <= 3; i++)
    this.getOCGs(this.pageNum).state = this.getField(“OFFRE_”+(i)+”a”).value; 

    si tu utilises la console avec ton code, elle te signale que this.getField(“OFFRE”+(i+1)+”a”).value n’est pas définit…
    => attention à la casse il manque “_”
    => dans ce cas tu ne couvres pas les 4 calques mais seulement 1 (i = 0 + 1) et 2 (i = 1 + 1) et s’arrête à i < à 2 ... il manque donc le calque correspondant à OFFRE_0a et OFFRE_3a et perso, j’ajouterai un bouton qui réactiverai l’ensemble des boutons OFFRE_n visible et faisant disparaitre l’ensemble des calques car sinon l’utilisateur ne peut pas revenir en arrière une fois son choix fait… :Smiley01:

    en réponse à : Faire une barre de progression #58030
    brumbies
    Membre

    Bonjour,

    Ça va m’être très utile

    :Smiley03:

    Edit : Je suppose qu’il n’existe pas de fonction magique permettant de savoir si tous les champs ont fini de s’afficher dans le doc ?

    Je ne cerne pas bien l’utilité… car si tu utilises l’objet thermometre, le script compris à l’intérieur sera entièrement exécuté avant fermeture du thermomètre.
    Cependant, tu peux ajouter en bas de script un message d’alert app.alert(“xxx”); (ou d’info…) une fois l’ensemble de ton code exécuté (et donc que tes champs sont chargés).
    Sinon, tu peux également intégrer un compteur qui vient s’incrémenter de 1 à chaque fois q’un champs est chargé. Et en fin de script il suffira de contrôler que le nombre de champs chargés est = aux nombres de champs attendus…

    Je ne peux pas te donner plus de détails sans avoir un exemple succinct…

    :Smiley01:

    en réponse à : Erreur action envoi de formulaire sur pc #58037
    brumbies
    Membre

    Bonjour,

    Quelle est la version d’adobe Reader que tu utilises sur Mac ? et sur PC ? Est ce bien la même ?
    Pour que ton pdf intégre les champs de formulaires remplis, il faut penser, pour les versions d’Adobe Reader inférieures à la version XI, à étendre l’enregistrement et le remplissage des formulaires.

    :Smiley01:

    en réponse à : Faire une barre de progression #58026
    brumbies
    Membre

    Bonjour,

    Essaie ceci :

    Code:
    var t = app.thermometer;// Acquire a thermometer object
    t.duration = this.numPages;
    t.text = “Chargement en cours”;
    t.begin();

    //… place ton script permettant de remplir tes champs

    t.end();

    Dis moi si ca te va…

    :Smiley01:

    en réponse à : Changement Logo/avatar/image #58022
    brumbies
    Membre

    Bonsoir,

    c’est bien cela, tu ne peux importer qu’un pdf dans adobe reader
    il y a aussi des posts abordants ce sujet…
    ex: http://abracadabrapdf.net/forum/index.php/topic,2471.msg13237.html#msg13237

    :Smiley01:

    en réponse à : Case à cocher #58006
    brumbies
    Membre

    Bonsoir,

    Oui le code est à placer au niveau des actions de la checkbox avec le déclencheur “souris relachée”.

    Ensuite, pour la question de surbrillance, quel est ton but?
    Il est possible de paramétrer à l’ouverture la surbrillance comme “inactive” via le code :
    app.runtimeHighlight = false;
    Mais cela n’empêchera pas à l’utilisateur de la “réativer” via le bandeau violet présent en haut du document “Selec. les champs existants”…
    et autre point cela s’applique à l’ensemble des champs …

    Sinon tu as la possibilité de changer la couleur de fonds de la surbrillance et de la mettre en blanc par exemple… avec les même effets que ci-dessus
    app.runtimeHighlightColor = color.white;

    Et regarde ici : http://abracadabrapdf.net/forum/index.php?topic=1685.0 cela peut être une alternative… selon ton besoin

    :Smiley01:

    en réponse à : Case à cocher #58002
    brumbies
    Membre

    Bonsoir,

    Merlin a raison, la checkBox doit être visible de l’utilisateur à minima à l’ouverture…
    ensuite si l’utilisateur la coche alors tu peux placer ce script au niveau du script de calcul personnalisé du champs B:

    Code:
    if(this.getField(“checkbox”).isBoxChecked(0))
    this.getField(“B”).value = 0;
    else
    this.getField(“B”).value = 20 * this.getField(“A”).value / 100;

    afin de ne pas faire apparaitre la checkBox à l’impression ou autre
    place un script (actions – souris relachée) au niveau de ta checkBox pour le rendre invisible (display.xxx – nous l’avons vu dans quelques post très récemment)

    A adapter selon le besoin : pour finir, je placerai un “display.visible” sur la checkBox en script d’ouverture pour la faire apparaitre à chaque ouverture.
    Et j’y ajouterai une ligne pour décocher la checkBox (ex; this.getField(“checkbox”).value = “Off”;)

    :Smiley01:

    en réponse à : problème de script avec les dates #58020
    brumbies
    Membre

    Bonsoir,

    Tu es sur la bonne voie… Attention à respecter la casse… new Date()
    Ensuite je modifierai ton script légèrement de la sorte:

    Code:
    if (this.getField(“datedebut”).value != “” && this.getField(“nbjour”).value != “”)
    {
        var dated= util.scand(“dd/mm/yyyy”, this.getField(“datedebut”).value);
        var jour = this.getField(“nbjour”).value;
        var datef = new Date(dated.getTime()+(jour * 24 * 60 * 60 * 1000));
        this.getField(“datefin”).value = datef;
    }
    else
    {
        this.getField(“datefin”).value = “”;
    }

    Tu peux définir le format que tu veux pour le champ “datefin”…
    :Smiley01:

    en réponse à : aide pour firnir mon PDF #57998
    brumbies
    Membre

    :bonjour:
    exact Merlin, j’ai de temps en temps tendance à considérer comme acquis ce qui me parait le plus simple….

    en réponse à : aide pour firnir mon PDF #57996
    brumbies
    Membre

    Bonjour,
    De ce que je comprends, ce qu’il te reste à faire c’est d’associer le nom du choisi en « communication » à un mail en « mailcom »…
    La question est de savoir si tu laisses la possibilité à l’utilisateur de modifier le mail ?
    Si oui alors il faut rester sur un champs texte
    Si non tu peux utiliser une liste déroulante
    Tu as 2 possibilités repris dans le code ci-dessous à placer à la suite de ton code présent dans communication:

    switch(reply)
    {
    case «null» :
    app.alert(«merci de choisir un participant»);
    break;
    case «Denis LAZZAROTTO» :
    this.getField(«mailcom»).value = 1;  // si mailcom est un menu déroulant ou 1 est la valeur d’exportation du mail correspondant au nom
    //ou this.getField(«mailcom»).value = xxx@xx.xx; //s’il s’agit d’un champ texte
    break;
    // …  et ainsi de suite
    }

    :Smiley01:

    en réponse à : Envoi par mail puis fermeture du document #57907
    brumbies
    Membre

    Bonsoir,

    J’ai tester ton fichier et il fonctionne de mon côté sur Acrobat XI et sur adobe reader XI…

    Si tu veux que les utilisateurs le remplissent sur adobe reader (autre que la version XI) pense à étendre les fonctionnalités d’enregistrement sinon de toutes les manières la pièce jointe sera vierge…

    Maintenant, j’ai l’impression que ton problème vient toujours du timing d’exécution des différentes lignes…
    donc, je modifierai ton script ainsi :

    Code:
    this.dirty = false;
    function DoIt() {this.closeDoc();}
    app.setInterval(“DoIt()”, 500);


    par

    Code:
    app.alert(“Merci d’avoir renseigné ce formulaire.nA bientôt”);
    this.dirty = false;
    this.closeDoc();


    Cela permettra de stopper le déroulement du script après l’envoi du mail…

    Sinon une autre approche pour empecher les modifications, serait de mettre l’ensemble des champs de ton formulaire en lecture seule (this.getField(XXXX).readonly = true;) juste avant l’envoi et de le coupler à un script d’ouverture de document pour réinitialiser les champs et les rendre de nouveaux visibles
    :Smiley01:

    en réponse à : Envoi par mail puis fermeture du document #57906
    brumbies
    Membre

    Ok je regarde ça ce soir… :Smiley01:

    en réponse à : Calcul JavaScript au niveau document #57960
    brumbies
    Membre

    Bonjour,

    tu es proches d’une solution opérationnelle…
    le problème vient de this.numFields que tu as placé au niveau de ta boucle for.
    this.numFields renvoi le nombre total de champs présents… soit dans ton cas 101.
    Alors que le nombre de ligne du pavé A n’est que de 12.
    => remplace this.numFields par 12 et ca devrait marcher (enfin tu n’auras plus l’alerte au niveau de la console)
    dans son exemple Alex n’effectuait le calcul de somme que sur les champs ayant la même racine de nom (Montant) d’ou l’utilsation possible de this.numFields

    ensuite pour pouvoir calculer la somme des subtot, il faut ajouter
    total = total + subTot; à l’intérieur de ta boucle for (après le calcul de subTot)
    et il faut ajouter aussi une ligne en début de script pour réinitialiser total = 0;
    ta ligne en fin de script total = this.getField(“aSubTot”).value est donc à retirer…

    :Smiley01:
    A noter que les variables masterSubTot, masterQty et masterPrice ne sont pas utiles, tu peux directement mettre leur valeur (“aSubTot”, “aQty” et “aPrix”) dans les this.getField de la boucle for…

    brumbies
    Membre

    Bonsoir,

    pour le point 2 c’est un bon début…
    par contre il faut différencier les cases à cocher pour la TVA à 10% des cases à cocher pour la TVA à 20%.
    Car si tu les grises comme tu veux le faire alors l’ensemble des cases d’un même “groupe” seront grisée.

    Il n’est pas utile de désactiver le bouton radio puisque que tu en as 2… et que l’utilisateur a donc 2 choix.
    je modifierai ton script ainsi:

    Code:
      this.getField(“ACH10”).fillColor = color.white;
      this.getField(“ACH10”).strokeColor = color.black;
      this.getField(“ACH10”).readonly = false; 
      this.getField(“ACH20”).fillColor = [“RGB”,0.93,0.93,0.93];
      this.getField(“ACH20”).strokeColor = color.ltGray;
      this.getField(“ACH20”).readonly = true;

    ou ACH10 correspond au valeur 779, 1079 et 1379 et ACH20 les autres…
    et je supprimerai donc le script sur le déclencheur “souris enfoncée”
    :Smiley01:

    en réponse à : Sauvegarder l’état (in)visible d’un bouton #57953
    brumbies
    Membre

    Bonsoir,

    Le problème semble venir du fait que sur tes boutons “Avec ensemble” et “Sans ensemble” tu rends visible/invisible les champs “et ensemble”, “ensemble” et “txt_option” via l’action “prédéfinie” Afficher/masquer un champs.
    Essaie de remplacer ces actions par un script javascript comme ceci : http://abracadabrapdf.net/forum/index.php/topic,2574.0.html

    Ca devrait fonctionner…

    Ce qui me laisse à penser qu’acrobat ne reconnait pas de la même manière les évènements d’action suivant s’ils sont instruis par du script ou s’ils sont instruis via une action “prédéfinie” … interressant!
    :Smiley01:

    en réponse à : Envoi par mail puis fermeture du document #57904
    brumbies
    Membre

    Bonsoir,

    Ton code pour fermer sans interrogation de l’utilisateur doit de toutes les façons être éxécuté après l’action d’envoi du mail.

    Ensuite, pour l’envoi du mail tu utilises une action via une action “prédéfinie” (envoyer un formulaire) ou via un script de type :
    this.mailDoc({
    bUI: false,
    cTo: “xxxx@xxx.xx“,
    cCC: “xxxx@xxx.xx“,
    cSubject: “Essai”,
    cMsg: “cool ca marche”
    });
    Et tu as mis les 2 actions sur le même déclencheur?

    Joint ton fichier si possible…
    :Smiley01:

    brumbies
    Membre

    Bonjour,

    C’est proche d’une de tes demandes précédentes : http://abracadabrapdf.net/forum/index.php/topic,2550.0.html
    sinon le post évoqué par Merlin avec le script d’Alex est celui-ci je pense :http://abracadabrapdf.net/forum/index.php/topic,1284.msg5829.html#msg5829

    Enfin, j’ai modifié légèrement la maquette que je t’avais faite en intégrant la visibilité des 2 boutons présents

    :Smiley01:

    brumbies
    Membre

    Bonjour,

    Un post récent en fait mention : http://abracadabrapdf.net/forum/index.php/topic,2574.0.html
    :Smiley01:
    Suivant ton besoin, tu peux ajouter un script inverse lors de la fermeture du document afin de faire réapparaitre le bouton lors de l’ouverture suivante…

    brumbies
    Membre

    Autant pour moi, je n’avais pas vu que tu avais deja joint ton fichier…

    1)
    a) je ne comprend pas pourquoi tu réinitialises “MES” lorsque tu sélectionnes “FORMULE” (Pack 1) alors que ton but est de le cocher…
    b) pour activer automatiquement MES avec FORMULE tu peux utiliser :

    Code:
    if (this.getField(“FORMULE”).isBoxChecked(0))
    {this.getField(“MES”).checkThisBox(0,true);}
    else
    {this.getField(“MES”).checkThisBox(0,false);}

    => ce code est à mettre sur le déclencheur souris relachée
    en fait si tu veux utiliser le choix du bouton radio alors tu dois te servir de la valeur du champs this.getField(xxx).value, et si tu utilises isBoxChecked ou checkThisBox alors tu dois prendre en compte le numéro du champs parmis l’ensemble des champs portant le même non

    2) on a déjà vu récemment comment griser un bouton radio il y a peu de temps, associé à un code similaire à celui de 1 et en y ajoutant celui permettant de griser un bouton radio, tu devrais obtenir ce que tu veux

    3) pour rendre visible et invisible un champs, ca aussi on l’a vu très récemment
    sinon pour ton test, tu peux utiliser :

    Code:
    if(this.getField(“MATCOMP”).value == “FIN” && this.getField(“FORMULE”).value == “19.9”)
    {
    …}

    dupliques ce code sur FORMULE et sur MATCOMP afin de prendre en compte les 2 actions
    => ce code est à mettre sur le déclencheur souris relachée

    et pour le reste tu fais exactement la même chose…
    :Smiley01:

    en réponse à : Calcul JavaScript au niveau document #57958
    brumbies
    Membre

    Bonsoir,

    Petite précision sur ton script :
    var i = 1;
    var prix = this.getField(“prix_” + i);
    var qte = this.getField(“qte_” + i);
    var subTot = this.getField(“subTot_” + i);

    for (var i=0; i < 150; i++) {
    subTot.value = qte.value * prix.value;
    }

    il ne peut pas fonctionner de la sorte, car la boucle “for” n’exécute que les lignes situées entre ses accolades…
    ton script se traduit ainsi:
    tu affectes à prix la valeur prix_1; qte la valeur de qte_1 et subTot la valeur subTot_1, et avec la boucle for tu effectues 150 fois le calcul
    subTot_1 = qte_1 * prix_1

    je modifierai ton script de la sorte:

    for (var i=0; i < 150; i++)
    {
    this.getField(“subTot_” + i).value = this.getField(“prix_” + i).value * this.getField(“qte_” + i).value;
    }

    :Smiley01:

    brumbies
    Membre

    Bonsoir,

    Le plus simple serait de poster ton fichier ou une partie de celui-ci avec le code que tu as tenté…
    :Smiley01:

    brumbies
    Membre

    Bonjour,

    J’ai maquetté un exemple d’une solution que j’utilise pour gérer l’affichage des calques à l’ouverture du document.
    l’exemple correspond à ce que précisait Merlin…

    J’utilise ici 2 boutons pour faire apparaitre l’un ou l’autre calque, et j’ai 2 champs texte qui sont invisible à l’écran qui me servent à stocker la valeur d’affichage de chacun des calques (true ou false).
    il y a 1 script au niveau de chaque bouton qui permet de changer le calque visible “immédiatement” et un qui affecte la visibilité du calque au champ texte associé.
    il y a 1 autre script à l’ouverture du document qui affecte la valeur contenu dans les champs texte à chacun des calques.
    d’autre combinaisons pour passer d’un calque à l’autre sont possible…

    Il faut bien entendu que l’utilisateur enregistre le doc à la fermeture.
    Ce modèle fonctionne aussi bien sur acrobat que sur reader (j’ai étendu l’enregistrement…)

    :Smiley01:

    en réponse à : Heure automatique dans formulaire #49695
    brumbies
    Membre

    Bonjour
    si ton souhait est d’obtenir à l’écran la date au format “dd:mm” alors il faut bien utilisé ce que dit merlin => option de date personnalisée, par contre lors de la saisie tu devras quand même indiquer d/m ou d-m, car “:” sont reconnus pour indiquer une heure.
    => ce qui n’est pas très pratique selon moi… sinon utilise un format “dd/mm” ou “dd-mm” si tu peux.
    :Smiley01:

    brumbies
    Membre

    Bonjour,
    Tu devrais aller regarder sur le web des cours d’initiation à JavaScript ainsi tu auras une meilleur vu de la syntaxe à utiliser.
    http://javascript.developpez.com/cours/
    https://developer.mozilla.org/fr/docs/Web/JavaScript/Une_r%C3%A9introduction_%C3%A0_JavaScript
    Ainsi, tu apprendras les variables, les opérateurs, les structures de contrôle, les fonctions … (ex : &&, ||, == ou =, if(), for(), …) dans quel cas et surtout comment les utiliser.
    La boucle for() est un standard au même titres que la condition if(), et une fois que tu l’auras maitrisé, tu te rendras compte qu’elle peut être très utile dans ton cas.
    Regarde de plus près la duplication rapide des champs et à la Convention de dénomination des champs de formulaire (recherche sur le site déjà évoqué plusieurs fois) et associé à la boucle for tu verras que ton script sera « raccourci ». Dans l’exemple j’ai mis une boucle for allant de i = 1 jusqu’à i <= 2 avec un pas de 1 (i++ s’écrit aussi i = i + 1), mais on aurait pu aussi faire aller i jusqu’à 100…
    Le but d’avoir un script le plus minimaliste possible n’est pas toujours une bonne solution, car souvent perte de temps par rapport à la recherche de l’optimisation.

    Dernier point sur (0), il ne signifie rien tout seul, ce qui importe c’est la fonction isBoxChecked, cette fonction doit recevoir une variable pour être exploitable. Variable correspondant au numéro de la Checkbox.
    Tu peux voir l’utilisation des fonctions JavaScript propres à Acrobat ici :http://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/js_api_reference.pdf

    Merci Merlin pour la correspondance entre version anglaise et française.
    :Smiley01:

    en réponse à : Validation JavaScript et Contrôle sur Signature Manuscrite #57834
    brumbies
    Membre

    Bonjour,

    Précision sur le point 2, il existe différents types d’annotations
    Commentaire : “Text”
    Surlignage : “Highlight”
    onglet signer d’Adobe reader XI
    ajout de texte : “FreeText”
    ajout d’une coche : “Stamp”
    apposer des initiales : “Stamp”
    apposer une signature : “Stamp”

    donc tu ne peux pas identifier une signature, ni la vérifier, tu peux juste vérifier la présence d’une annotation de type “Stamp” (qui correspond à trois type d’annotations)

    le code ci-dessous, placer sur un bouton, affiche le nombre de type “Stamp” détecté

    Code:
    var myDoc = event.target.doc;
    var commentList;
    var compteur = 0;
    if(!myDoc)
    app.alert(“Impossible d’accéder au document”);
    else
    {
    commentList = myDoc.getAnnots();
    if(commentList != null)
    {     
      for each(comment in commentList)
      {   
      switch(comment.type)
      {
        case “Stamp”:
        {
        compteur ++;
        break;
        }
      }
      }
    }
    if(compteur != 0)
      if(compteur == 1)
      app.alert(compteur + ” signature de renseigné sur ce document”);
      else
      app.alert(compteur + ” signatures de renseigné sur ce document”);
    else
    app.alert(“aucune signature de renseigné sur ce document”)
    }

    :Smiley01:

    brumbies
    Membre

    Bonjour,

    Quelques pistes pour tes diverses interrogations :

    1) tu étais proche d’un script opérationnel, tu as simplement ajouté trop de {}

    Code:
    if (event.target.isBoxChecked(0))
    {
    this.getField(“CheckBox1”).checkThisBox(0,true);
    this.getField(“CheckBox2”).checkThisBox(0,true);
    }
    else
    {
    this.getField(“CheckBox1”).checkThisBox(0,false);
    this.getField(“CheckBox2”).checkThisBox(0,false);
    }

    sinon tu peux aussi simplifier le code de la façon suivante :

    Code:
    if (event.target.isBoxChecked(0))
    {
    for(var i = 1; i <=2; i++)
      this.getField(“CheckBox”+i).checkThisBox(0,true);
    }
    else
    {
    for(var i = 1; i <=2; i++)
      this.getField(“CheckBox”+i).checkThisBox(0,false);
    }

    2) en reprenant l’arborescence en 3) alors tu peux utiliser un scrip comme celui-ci, que tu dupliques sur les CheckBox3 et CheckBox4

    Code:
    if (this.getField(“CheckBox3”).isBoxChecked(0) && this.getField(“CheckBox4”).isBoxChecked(0))
    {
    this.getField(“CheckBox1”).checkThisBox(0,true)
    }
    else
    {
    this.getField(“CheckBox1”).checkThisBox(0,false)
    }

    3) je ne comprends pas ta logique de ne vouloir activer que CheckBox1 et CheckBox2 via un script en CheckBox0 parce que la finalité est d’activer CheckBox3 et CheckBox4.

    Pour moi il suffit d’activer C3 et C4 dans le même script que C1 et C2 soit en C0.

    Enfin une piste pour répondre à ta demande serait d’ajouter en C0 la ligne
    this.getField(“CheckBox1”).setFocus();
    le tout en dupliquant le code en C1 aussi bien avec le déclencheur “souris relachée” et le déclencheur “Champ activé”.

    :Smiley01:

    brumbies
    Membre

    Bonjour,

    Le fait que 2 valeurs soient des fractions complique effectivement le script à mettre en place. Il est possible de convertir un nombre en fraction indivisible via javascript. Ce qui est important c’est de savoir si les équivalences sont bien proportionnelles pour toutes les autres valeurs (de DN par exemple) …

    Donc le plus simple pour toi est d’utiliser ton idée 2.
    Pour cela, il suffit de reprendre les codes indiqués dans la réponse précédente et de bien affecter la même valeur d’exportation à chacune des valeurs à associer.
    Je m’explique :
    DN              => Eléments = 8          & valeur d’export = 1     
    Pouces        => Eléments = 1/4        & valeur d’export = 1
    Diametre      => Eléments = 5×10      & valeur d’export = 1
    Diametre ext => Eléments = 13.5      & valeur d’export = 1
    et ainsi de suite…
    Ainsi lorsque l’utilisateur choisira dans le menu déroulant un Elément (par ex), l’ensemble des Eléments ayant la même valeur d’exportation s’afficheront.

    Ce qui te permettra d’avoir un résultat plus esthétique.
    :Smiley01:

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