abracadabraPDF › Forums › PDF – Général › Copier les données de plusieurs champs texte dans d’autres. – RÉSOLU
- Ce sujet est vide.
-
CréateurSujet
-
6 décembre 2012 à 13:31 #44357adrithParticipant
Bonjour,
Je me lance dans tout ce qui est scripting sous acrobat et je dois dire que votre forum et site m’a été d’une grande aide. Merci bien
En fait, je duplique deux templates (avec spawn) où il y a des champs. Je veux que ce que j’entre dans le template 1 soit copier automatiquement dans les champs du template 2
Exemple :
Je voudrais que le continu des cellules P1.template1.Texte1, P2.template1.Texte1, P3.template1.Texte1, etc… soit copié dans les cellules P7.template2.Texte1, P8.template2.Texte1, P9.template2.Texte1, etc… (il y aura toujours ce facteur +6 pages)C’est presque que comme dans ce topic sauf que je voudrais le faire pour tous les champs “en même temps” :
http://abracadabrapdf.net/forum/index.php?topic=1337.0
Afin que je ne n’aille pas sur chaque champ pour lui indiquer le code.Peut-être quelque chose du genre :
Code:this.getField(“NOM-DU-CHAMP-TEXTE-SOURCE”).value = this.getField(“NOM-DU-CHAMP-TEXTE-CIBLE”).value;J’espère avoir été assez clair.
Merci pour vos réponses. -
CréateurSujet
-
AuteurRéponses
-
10 décembre 2012 à 13:39 #54102adrithParticipant
Bonjour,
Je n’ai pas eu beaucoup de succès.
Si c’est compliqué, peut-être que la copie des valeurs des pages spawned peut se faire lorsque l’utilisateur cliquera sur le bouton envoyer, mais j’ai le même problème quelle serait la syntaxe pour copier le contenu d’une cellule vers une autre ?
Merci.
10 décembre 2012 à 14:21 #54103LionelMembreBonjour,
Il y a des experts de ce style de problème sur le forum. Il faut juste attendre un peu qu’ils passent. :Smiley01:
Patience…
Lionel :alien2:
10 décembre 2012 à 16:35 #54104MerlinMaître des clésBonjour et bienvenue,
– Sais tu que cette façon de générer des pages (spawn) ne fonctionne pas avec Reader version X et antérieures ?
– Pourquoi ce besoin de dupliquer une séquence de 6 pages ?
Est-ce que je comprend bien : l’utilisateur à 6 pages à remplir, et ensuite ces 6 pages sont dupliquées une fois ?:Smiley01:
11 décembre 2012 à 11:45 #54105adrithParticipantBonjour et bienvenue,
– Sais tu que cette façon de générer des pages (spawn) ne fonctionne pas avec Reader version X et antérieures ?
– Pourquoi ce besoin de dupliquer une séquence de 6 pages ?
Est-ce que je comprend bien : l’utilisateur à 6 pages à remplir, et ensuite ces 6 pages sont dupliquées une fois ?:Smiley01:
Bonjour, merci pour vos retours.
– Concernant le spawn et le reader, je dirais oui et non. Effectivement je sais que ça ne fonctionne pas, mais on m’a dit qu’avec un outil adobe (adobe livecycle reader extension), en passant le fichier pdf terminé dans une moulinette, ça le rendait compatible avec un reader 9, j’espère que c’est vrai. Tu ne penses pas ?
– Oui c’est ça, pour être un peu plus complet, il y a une fiche de suivi à remplir avec les informations du client, les informations sont ensuite copier dans le contrat (quelques pages plus bas). Là où ça devient intéressant c’est qu’il peut y avoir plusieurs clients. Donc sur la 1ère page, j’ai une liste déroulante de 1 à 12 que me génère (si je choisi par ex 6), 6 fiches de suivi ET 6 pages dans le contrat plus bas (je passe le fait que le contrat est également en 3 exemplaires :Smiley01:). Ce que j’essaye de faire c’est donc de faire correspondre les champs des 6 fiches de suivi avec les 6 pages de contrat. J’espère que c’est plus clair
Je vais me débrouiller (je pense) pour associer les bonnes pages ensembles mais ce que je ne sais pas encore faire c’est comment remplir les champs à la volée (car ils n’ont pas le même nom) ou bien lorsque l’on clic sur un bouton.Merci
11 décembre 2012 à 12:19 #54106MerlinMaître des clés– Concernant le spawn et le reader, je dirais oui et non. Effectivement je sais que ça ne fonctionne pas, mais on m’a dit qu’avec un outil adobe (adobe livecycle reader extension), en passant le fichier pdf terminé dans une moulinette, ça le rendait compatible avec un reader 9, j’espère que c’est vrai.
Oui, c’est vrai.
Mais avant d’aller plus loin il faut absolument que tu saches que pour LiveCycle Reader Extensions le ticket d’entrée se compte en dollars, avec 4 zéros derrière le 1er chiffre…
Toujours partant ?
:idee:11 décembre 2012 à 13:18 #54107adrithParticipantAh quand même, ils se font pas chier.
Et oui oui toujours partant, car celui qui m’a “commandé” le pdf a acquis le logiciel, mais je n’ai pas encore eu l’occasion de le tester.11 décembre 2012 à 14:20 #54108MerlinMaître des clésA-priori il faut détecter et associer les numéros de page et les noms de champs avec JavaScript, mais c’est hors de mes compétences.
Attendons le passage d’un JediScripteur…
:joker:11 décembre 2012 à 15:10 #54109adrithParticipantOk merci quand même Merlin.
Pour associer les numéros de pages, je pense y arriver, par contre je n’arrive même pas à associer 2 champs texte de pages différentes, est-ce que tu sais m’aider ?
Disons que les 2 pages 1 et 3 ont été générés, et lorsque j’écris dans mon champ nom de la page 1, je voudrais qu’il soit copié en page 3.
J’ai essayé des trucs du genre (ainsi que d’autres choses):Code:getField(“P1.fiche.1_m_nom”).value = getField(“P3.contrat.1_m_nom”).valueAsString;mais sans succès, j’ai essayé de placé ça dans un script du document et même sur ma liste déroulante mais rien n’y fait.
Est-ce que déjà ce code est correct ? Et où dois-je le placer afin d’avoir juste cette copie de champ texte à champ texte ?
Merci de ton aide.11 décembre 2012 à 17:02 #54110MerlinMaître des clésLa bonne syntaxe serait plutôt :
this.getField(“P1.fiche.1_m_nom“).value = this.getField(“P3.fiche.1_m_nom“).value;
Que l’on peut simplifier ainsi puisqu’il n’est pas besoin de préciser le nom du champ source quand c’est lui qui est source de l’évènement, on n’a besoin que du nom de la cible :
this.getField(“P3.fiche.1_m_nom“).value = event.value;
:Smiley01:
12 décembre 2012 à 10:05 #54111adrithParticipantMerci ça fonctionne partiellement bien. Mais j’ai galéré ça ne fonctionnait pas quand je mettais le code dans l’onglet “Action/Exécuter un script javascript” mais par contre ça fonctionne bien quand je met dans “Format/Script de touches personnalisé”.
Pourquoi ? Vous pouvez me dire la différence entre ces 2 options svp ?Ensuite le second code fonctionne mais le 1er, pas de tout. Or j’aimerais bien que le 1er fonctionne également car j’aimerais par exemple le mettre sur un bouton afin que cela copie tout le contenu des champs dans les autres, ça doit être possible non ? Mais je ne peux donc pas utiliser le 2ème code car je ne serais pas sur le champ source.
Un grand merci.
12 décembre 2012 à 10:27 #54112MerlinMaître des clésNi l’un ni l’autre. :geek:
Ce script doit être placé soit en script de validation, soit en script de calcul pour qu’il fonctionne automatiquement.
Ou bien en action “Souris enfoncée” : Exécuter un JavaScript” si àa doit répondre à une action de l’utilisateur.:Smiley15:
12 décembre 2012 à 11:24 #54113adrithParticipantMerci pour l’info. Ça fonctionne donc de plusieurs façons car je te confirme que dans “script de touches personnalisé”, ça fonctionne bien, et en automatique. Mais dans mon cas, ça me fait placer ce code sur chaque champ, et comme j’ai des pages générées à la volée, ça ne va pas être possible.
J’ai testé en plaçant dans “Scripts Javascript du document”, ça m’aurait arrangé mais malheureusement ça ne fonctionne pas.
J’ai aussi testé avec un bouton et ça fonctionne bien. Je vais surement faire comme ça, en fonction de la liste déroulante de ma 1ère page, je vais récupéré le nombre choisi et ainsi je pourrais calculer sur quels pages les champs doivent être copiés. Ça doit marcher.
Merci bien12 décembre 2012 à 11:53 #54114MerlinMaître des clésIl faudrait voir ton doc pour répondre plus précisément.
18 décembre 2012 à 14:56 #54115adrithParticipantBonjour,
Je me sert de ceci pour copier des champs textes dans d’autres champs texte en cliquant sur un bouton.
this.getField(“P1.fiche.1_m_nom“).value = this.getField(“P3.fiche.1_m_nom“).value;
Je ne trouve pas de la même manière pour copier des checkbox. Je voudrais que si une checkbox est cochée, elle soit aussi cochée dans une autre page lorsque je clique sur ce bouton. Savez-vous quel code prendre ?
Merci bien18 décembre 2012 à 16:13 #54116alexParticipantLa ligne de code suivante fera l’affaire:
this.getField(“CaseDestination”).checkThisBox(0, this.getField(“CaseOrigine”).isBoxChecked(0));
Si vous préférez quelque chose de plus pédagogique en deux lignes:
statut=this.getField(“CaseOrigine”).isBoxChecked(0);
this.getField(“CaseDestination”).checkThisBox(0, statut);Nota: on peut écrire un script traitant globalement la recopie de tous les champs d’un template vers un autre.
18 décembre 2012 à 20:46 #54117MerlinMaître des clésNota: on peut écrire un script traitant globalement la recopie de tous les champs d’un template vers un autre.
Si j’ai tout compris à la question ça devrait effectivement faire plaisir à notre ami…
:priere:
:Smiley03:19 décembre 2012 à 22:09 #54118adrithParticipantLa ligne de code suivante fera l’affaire:
this.getField(“CaseDestination”).checkThisBox(0, this.getField(“CaseOrigine”).isBoxChecked(0));
Si vous préférez quelque chose de plus pédagogique en deux lignes:
statut=this.getField(“CaseOrigine”).isBoxChecked(0);
this.getField(“CaseDestination”).checkThisBox(0, statut);Merci bien pour ce code, je le garde sous la main.
Car pour la petite histoire, finalement ce sont des radios que j’ai et non des checkbox. Elles étaient de type ‘coche’ d’où mon erreur sur le coup. Tout fonctionne bien à présent et j’avance :Smiley01: MerciNota: on peut écrire un script traitant globalement la recopie de tous les champs d’un template vers un autre.
Oui ce que j’ai fait c’est finalement la recopie de tous les champs d’un template vers un autre mais uniquement lorsque je clic sur un bouton. Mais est-ce possible à la volée ? Vous en pensez quoi ?
20 décembre 2012 à 08:45 #54119adrithParticipantJ’en profite pour vous demander encore une petite chose.
Sur mon template, j’ai coché par défault un des choix d’une liste de bouton radio.
Mais lorsque que ma page est spawné, la radio n’est pas coché. J’en tenté plein de truc/code mais en vain :Smiley02:
Auriez vous le petit bout de code qui peut faire ça ? En fait dès que ma page sera dupliquée, je lui dirais de coché direct la radio en question.
Merci bien20 décembre 2012 à 08:51 #54120MerlinMaître des clésSalut,
Bouton-radio ou case-à-cocher : le code est le même.
Il te suffit de reprendre celui ci-dessus en modifiant le nom de champ.:Smiley15:
20 décembre 2012 à 09:46 #54121adrithParticipantMerci pour l’info Merlin,
Finalement j’ai réussi avec ce code:
Code:this.getField(“mapage.template.monchamp”).checkThisBox(0,true);21 décembre 2012 à 08:26 #54122adrithParticipantJe reviens avec mes problématiques de pages, comme j’ai mes pages qui sont générées à la volée, pour faire du code ce n’est pas facile.
J’ai justement un problème avec un “case”.
Je tente des choses comme ça mais ça ne passe pas. :Euuuh:Code:case “P/[[:digit:]]/.template.nom”:qui devrait autoriser P1.template.nom, P2.template.nom, …, jusqu’à P9.template.nom
Je cherche surtout à aller jusqu’à 12, donc quelque chose comme ça devrait fonctionner:
Code:case “P/[1-12]/.template.nom”:mais non.
Est-ce que c’est possible ? Quelle serait la syntaxe correcte ?
Merci bien7 janvier 2013 à 14:17 #54123adrithParticipantEst-ce que quelqu’un aurait une réponse à ma question ci-dessus ?
-
AuteurRéponses
- Vous devez être connecté pour répondre à ce sujet.