Toutes mes réponses sur les forums
-
AuteurRéponses
-
michel c.Participant
Voila, je ne sais pas si c’est ce que tu voulais.
Attachments:
You must be logged in to view attached files.michel c.ParticipantBonjour et merci pour la proposition.
J’ai testé et ce script en le mettant en script de document pour les champs question et les champs réponse.
Curieusement il fonctionne pour les champs réponse mais ne fonctionne pas pour les champs question (sans que la console ne renvoie d’erreur).
Pour l’indice i placé devant question, c’est lié au script que tu m’as proposé il y a quelques jours (reglageChamps) que j’ai dupliqué pour qu’il y ait un script par page.
Pour la numérotation des champs, je trouvais plus simple comme ça plutôt qu’avoir 2 indices en fin de nom de champ
Merci
michel c.ParticipantJe viens de réussir :
function CoulQ() {
var Coul=this.getField("Menu.3").value;
if (Coul=="Aucune") {this.getField("question.").fillColor = color.transparent;
for (var i=2 ; i<6 ; i++) {this.getField(i+"question.").fillColor = color.transparent;}
}
else if (Coul=="Jaune") {this.getField("question.").fillColor = color.yellow;
for (var i=2 ; i<6 ; i++) {this.getField(i+"question.").fillColor = color.yellow;}
}
else if (Coul=="Vert") {this.getField("question.").fillColor = color.green;
for (var i=2 ; i<6 ; i++) {this.getField(i+"question.").fillColor = color.green;}
}
else if (Coul=="Bleu") {this.getField("question.").fillColor = color.blue;
for (var i=2 ; i<6 ; i++) {this.getField(i+"question.").fillColor = color.blue;}
}
else if (Coul=="Rouge") {this.getField("question.").fillColor = color.red;
for (var i=2 ; i<6 ; i++) {this.getField(i+"question.").fillColor = color.red;}
}
}
Attachments:
You must be logged in to view attached files.michel c.ParticipantMerci, j’avais pensé à faire cela mais je craignais que cela interfère avec un autre script (que BB m’a proposé dans son post du 6 février 2024 à 17:51) qui permet de spécifier la hauteur d’un champ par une liste déroulante et de décaler les positions des champs qui sont en dessous.
Comme ce script ne fonctionne me semble-t-il que sur une page, j’ai dupliqué ce script de document pour qu’il n’y en ait qu’un par page.
Mais je vais quand même essayer ça demain.
michel c.ParticipantMerci pour la réponse, je viens de tester mais j’ai toujours la même erreur dans ce script. Cela concerne les conditions je pense :
else if (Coul==”Bleu”) {
for (var i=0; i<this.numFields; i++) {
if (this.getNthFieldName(i).indexOf(“question.”)==0) {this.getField(“question.”+i).fillColor = color.blue;}
}
}L’erreur renvoyée :
Doc:Open:25: TypeError: this.getField(...) is null
Un problème je pense sur la numérotation des champs avec la variable i qui doit fournir une valeur hors n° de mes champs
question.
Merci
- Cette réponse a été modifiée le il y a 2 mois par michel c..
Attachments:
You must be logged in to view attached files.michel c.ParticipantMerci pour la réponse. Je viens essayer de mettre en application cela mais j’ai une erreur (dans le script de document CoulQ) : ce script devrait me permettre de choisir la couleur des champs question sur la 1ère page.
function CoulQ() {
var Coul=this.getField(“Menu.3″).value;
if (Coul==”Aucune”) {
for (var i=0; i<this.numFields; i++) {
if (this.getNthFieldName(i).indexOf(“question.”)==0) {this.getField(“question.”+i).fillColor = color.transparent;}
}
}if (Coul==”Jaune”) {
for (var i=0; i<this.numFields; i++) {
if (this.getNthFieldName(i).indexOf(“question.”)==0) {this.getField(“question.”+i).fillColor = color.yellow;}
}
}if (Coul==”Vert”) {
for (var i=0; i<this.numFields; i++) {
if (this.getNthFieldName(i).indexOf(“question.”)==0) {this.getField(“question.”+i).fillColor = color.green;}
}
}if (Coul==”Bleu”) {
for (var i=0; i<this.numFields; i++) {
if (this.getNthFieldName(i).indexOf(“question.”)==0) {this.getField(“question.”+i).fillColor = color.blue;}
}
}if (Coul==”Rouge”) {
for (var i=0; i<this.numFields; i++) {
if (this.getNthFieldName(i).indexOf(“question.”)==0) {this.getField(“question.”+i).fillColor = color.red;}
}
}}
Attachments:
You must be logged in to view attached files.michel c.ParticipantMerci beaucoup.
Encore une petite question : comment modifier cette ligne :
for (var i=0; i<this.numFields; i++) { // numFields = Nombre de champs dans le document
Pour obtenir le nombre de champs dont le préfixe (les 3 premiers caractères) serait par exemple “ABC”
Merci
michel c.ParticipantSuper, merci beaucoup.
Je suis en train de me faire un document avec des petits bouts de codes comme celui-ci qui me bloquent souvent.
Je m’aperçois que je reste cantonné à ce que je maîtrise et du coup je progresse peu.
Dans cette ligne, je ne comprend pas bien la condition:
if (this.getNthFieldName(i).indexOf("question.")==0) indMax++;
On incrémente la valeur indMax si …. et je ne comprend pas la suite….
- Cette réponse a été modifiée le il y a 2 mois et 1 semaine par michel c..
michel c.ParticipantJe vais apporter une modification à ce document (la modif ne concerne pas le script que tu propose mais un autre que je vais faire pour apporter une fonctionnalité supplémentaire) et il y a un truc que je n’arrive pas à faire.
Dans le document il y a les champs nommés question.0 à question.9 et la même chose pour les champs réponses.
Mais il pourrait y avoir plus ou moins de champs.
J’aimerais faire une boucle for mais avant j’aimerais intégrer dans une variable l’indice le plus élevé de ces champs.
for (var a=0 ; a<=indMax ; a++) ….
Comment faire pour avoir l’indice max?
J’espère que ma question est assez claire?
Merci
- Cette réponse a été modifiée le il y a 2 mois et 1 semaine par michel c..
michel c.ParticipantJe vais étudier ce script, j’ai fais beaucoup de recherches sur la fonction Rect pour apprendre comment spécifier les dimensions d’un champ sans comprendre pour le moment.
Je vais revenir poster quelques questions une fois que j’aurais cherché déjà à comprendre par moi-même.
En tout cas merci beaucoup pour ce script, tu n’imagines pas le temps que cela va me faire gagner pour l’édition de mes documents.
michel c.ParticipantSi les champs du dessus on trop de lignes, ceux du bas sont supprimés.
C’est pour me permettre de gagner du temps lors de la mise en page de documents qui sont standards. Supprimer des champs est rapide, par contre positionner en y des champs, les dimensionner pour optimiser l’espace entre les champs est assez long.
J’ai déjà réussi à faire en sorte de mettre un champ en monoligne ou multiligne en fonction du nombre de lignes spécifié dans la liste déroulante en vis à vis.
Demain j’essayerai de dimensionner les champs en fonction du nombre de ligne spécifié dans la liste déroulante.
- Cette réponse a été modifiée le il y a 2 mois et 1 semaine par michel c..
- Cette réponse a été modifiée le il y a 2 mois et 1 semaine par michel c..
- Cette réponse a été modifiée le il y a 2 mois et 1 semaine par michel c..
Attachments:
You must be logged in to view attached files.michel c.Participantmichel c.ParticipantSinon, j’ai une autre solution pour arriver à mes fins c’est de mettre en vis à vis de chaque champ texte une liste déroulante dans laquelle je spécifierais le nombre de lignes que je veux dans mon champ. Si ça ne rentre pas, je met une ligne supplémentaire.
L’idée c’est de créer un fichier de base qui me permet de créer plus rapidement un document avec question (champ jaune) et réponse en dessous (champ vert)
Pour arriver à coder cette partie, j’ai besoin de connaître le bout de code qui permet d’indiquer si c’est mono-ligne ou multi-ligne et le bout de code pour donner la hauteur de ligne.
Je vais chercher un peu mais je pense y arriver.
Ensuite la partie plus complexe sera de décaler automatiquement les champs en dessous en fonction de la hauteur du champ au dessus. Mais je verrai ça dans un 2ème temps. Je pense qu’en connaissant le bout de code permettant d’indiquer la position en y d’un champ j’y arriverai aussi.
michel c.ParticipantOui, je me demandais si ça pouvais marcher à partir d’un bouton en désactivant le code permettant de créer une nouvelle page.
Concernant le boulot que tu as fait, je rejoins Merlin, même si je n’arrive pas à me rendre compte de la difficulté. Il y a tant de choses que je ne maitrise pas dans ce code….
michel c.ParticipantMerci, j’ai testé, il y a une erreur à la ligne 23 :
Field:Mouse Up:23: ReferenceError: ajoutPage is not defined
J’ai essayé de remplacer
ajoutPage(p, aRect[2], aRect[1]);
par :this.newPage(p, aRect[2], aRect[1]);
J’ai ensuite une erreur à la ligne 33 :
Field:Mouse Up:33: TypeError: f is null
Et là, je ne comprend pas car la variable f est bien déclarée à la ligne 27.
Attachments:
You must be logged in to view attached files.michel c.ParticipantJ’ai placé ce script en script de document au départ, dans une fonction que j’ai appelé Redim et que j’appelle via un bouton par la commande Redim(); et ça ne fonctionne pas.
Sinon, je peux exécuter des scripts lors d’actions :
- Avant la fermeture du document
- Avant la sauvegarde du document
- Avant l’impression
- Après l’impression
Je viens d’essayer de le placer avant la sauvegarde et j’ai un message d’erreur lors de la sauvegarde : Doc:WillSave:44: TypeError: f is null
Le logiciel que j’utilise est PDF XChange editor plus
- Cette réponse a été modifiée le il y a 2 mois et 2 semaines par michel c..
- Cette réponse a été modifiée le il y a 2 mois et 2 semaines par michel c..
Attachments:
You must be logged in to view attached files.michel c.ParticipantDe mon coté, le script fonctionne depuis la console, mais je n’arrive pas à le faire tourner à partir d’un bouton.
Erreur :
Doc:Open:46: TypeError: f is null
Attachments:
You must be logged in to view attached files.michel c.ParticipantJe ne suis pas sous adobe et je n’ai pas encore trouvé comment ouvrir les fichiers attachés?
Est il possible d’exécuter ce script grâce à un bouton?
Merci
michel c.ParticipantBonjour, de mon côté lorsque j’exécute ce script depuis la console, j’ai une erreur :
Console:Exec:21: TypeError: lesMots.replace is not a function
michel c.ParticipantMerci, je cherche une autre solution.
michel c.ParticipantMerci beaucoup, ça fonctionne. Plus que quelques bugs à corriger et ce formulaire sera opérationnel.
michel c.ParticipantMerci, j’avais essayé avec indexOf et j’avais une erreur. Et là aussi j’ai une erreur : “Doc:Open:7: ReferenceError: str is not defined”
Je cherche plusieurs manières pour y arriver mais rien ne marche ….
La partie du code en question est dans le script de document show2 ; entre les lignes 5 et 16
J’avoue que je sèche un peu là….Je sais que le code est bon. Mais il y a un bug ou un truc qui ne fonctionne pas : peut être parce qu’un chrono tourne en même temps… (Je précise : Je ne suis pas sous adobe mais sous pdf change Editor). Sous adobe, j’ai le même problème.
Merci
michel c.ParticipantC’est cela que tu veux faire ?
Attachments:
You must be logged in to view attached files.michel c.ParticipantJ’ai réussi en modifiant la fin des scripts se trouvant affectés aux champs num et den :
if (this.getField("numOk").value <0) {var Numerat="-"+decomposition(this.getField("numOk").value).toString().replace(/[,]/g," x ");}
if (this.getField("numOk").value >0) {var Numerat=decomposition(this.getField("numOk").value).toString().replace(/[,]/g," x ");}
if (Numerat.length == 1) {this.getField("num").value = "1 × "+Numerat;}
if (Numerat.length != 1) {this.getField("num").value = Numerat;}
et
if (this.getField("denOk").value <0) {var Denom="-"+decomposition(this.getField("denOk").value).toString().replace(/[,]/g," x ");}
if (this.getField("denOk").value >0) {var Denom=decomposition(this.getField("denOk").value).toString().replace(/[,]/g," x ");}
if (Denom.length == 1) {this.getField("den").value = "1 × "+Denom;}
if (Denom.length != 1) {this.getField("den").value = Denom;}
Ainsi s’il n’y a qu’un seul caractère la valeur du champ sera affectée du préfixe “1 × ”
Et ça marche
- Cette réponse a été modifiée le il y a 3 mois et 2 semaines par michel c..
michel c.ParticipantEn fait, ça ne fonctionne pas quand les champs num et den ne comportent qu’un seul caractère.
Je suis en train de chercher une solution.
-
AuteurRéponses