Toutes mes réponses sur les forums
-
AuteurRéponses
-
michel c.Participant
Merci pour la proposition.Je viens de le faire pour la question 3 (sous le cartouche) et ça fonctionne.
J’imaginais un seul bouton pour remplacer tous les champs d’un groupe de questions : par exemple un bouton qui afficherait toutes les réponses R.3.b pour la question 3
J’ai essayé de mettre cela en place mais je dois avoir un souci dans mon code, ça ne fonctionne pas.
Après si c’est possible de ne pas avoir à mettre en place tous les champs cAc.a.b et de n’avoir qu’une seule case pour chaque groupe de question (une case pour tous les champs R.1.n ; une autre case pour tous les champs R.2.n….)
L’idée c’est d’avoir un seul fichier dans lequel il y a la question et le corrigé intégré. Ça m’éviterai d’envoyer via le réseau le corrigé pour les élèves qui étaient absents lors d’une séance. Je prendrais le contrôle de leur pc, je saisirais le code admin et en cochant la case, ils auraient le corrigé.
Parfois j’ai des cours ou exercices qui font une quinzaine de pages et je dois alors fournir à l’élève qui a raté une séance le corrigé pour les 3 premières pages et le reste du document non corrigé, ce qui est assez long (surtout si je dois le faire pour plusieurs élèves qui n’ont pas été absents pendant les mêmes périodes). En cochant les paragraphes pour lesquels je veux afficher la correction me ferait gagner un temps fou.
En tout cas, grâce à toi, je me rapproche de cet objectif.
Il y a aussi 2 points que j’aimerais améliorer :
- dans le cas ou plusieurs réponses sont acceptées (dans le champ R.a.b avec le séparateur | entre chaque réponse acceptable), j’aimerais que dans ce cas précis, seule la chaine de caractère se trouvant avant le 1er séparateur s’affiche. J’ai conscience que cela risque de poser un problème car en décochant la case, alors le champ R.a.b ayant été tronqué des autres réponses acceptées, celles-ci ne seront pas rétablies…
- J’aimerais également que la taille de la police du champ R.a.b soit remplacée par celle du champ Q.a.b lorsque la case est cochée.
Merci
- Cette réponse a été modifiée le il y a 6 mois et 3 semaines par michel c..
- Cette réponse a été modifiée le il y a 6 mois et 3 semaines par michel c..
Attachments:
You must be logged in to view attached files.michel c.ParticipantBonjour, effectivement je n’avais pas encore placé le symbole de disposition des vues dans le cartouche. Il y est dans le document en pièce jointe.
J’ai testé, ça correspond à ce que je voudrais faire mais lorsque je place plusieurs cases à cocher (par exemple ici pour les questions 3.4 et 3.7) ça fonctionne bien lorsque l’une ou l’autre est cochée mais ça ne fonctionne plus lorsque les 2 sont cochées.
Je me demandais si c’était jouable d’avoir une seule case à cocher pour tout le document ou si c’est plus simple une case à cocher par chapitre (une pour tous les champs commençant par Q.1 une autre pour tous les champs commençant par Q.2…)
Merci
Attachments:
You must be logged in to view attached files.michel c.ParticipantL’idée est bonne mais les champs questions sont des listes deroulantes ou des champs textes. Les champs réponses eux sont toujours des champs texte. Et puis je me disait qu’en changeant les positions, il y aurait moins de chances que cela impacte le fonctionnement des autres scripts de ce document qui est déjà une usine à gaz…
- Cette réponse a été modifiée le il y a 6 mois et 3 semaines par michel c..
michel c.ParticipantSi c’est plus simple, intervertir les positions et caractéristiques des champs Q.a.b et R.a.b
michel c.ParticipantCa fonctionne . J’ai du modifier la ligne de code proposée pour cela.
var RegExTest=new RegExp("^"+this.getField("R."+n+"."+a).value.replace(/[.*+?^${}()/\[\]\\]/g,"\\$&")+"$");
Le caractère | ne doit pas être échappé pour que cela marche. Merci beaucoup LienBonjour, j’ai parlé trop vite, cette ligne de code génère une erreur si la réponse attendue est un nombre ; voici le message d’erreur :
Doc:Open:22: TypeError: this.getField(...).value.replace is not a function
Dans l’exemple la réponse attendue à la question 2.2 est 123. Dans ce cas si je clique sur vérifier j’ai ce message d’erreur.
Par contre s’il y a 2 réponses acceptables (si je saisis 123|124 dans le champ R.2.2) alors lorsque je clique sur vérifier je n’ai aucun message d’erreur…
Attachments:
You must be logged in to view attached files.michel c.ParticipantOui, tout fonctionne super bien .
michel c.ParticipantBonjour, ça marche parfaitement ! Merci
michel c.ParticipantJ’ai réussi en modifiant la ligne 41 :
else nmChamp=nomListe;
J’ai mis ceci à la place :
else nmChamp=i;
Là le script fonctionne, mais mal :
S’il y a plusieurs champs, lors de la 2ème, 3ème… demande de centrage, ce sera toujours le champ de la 1ère demande de centrage (1ère exécution du script) qui sera effectuée.
De plus, la largeur du champ se trouve modifiée pendant l’opération.
Attachments:
You must be logged in to view attached files.michel c.ParticipantBonjour, je viens de tester et j’ai eu 2 erreurs :
Field:Mouse Up:36: ReferenceError: valeurListe is not defined
Pour celle-ci j’ai modifié la ligne 32 :
valeurListe=listeChamps;
Que j’ai transformée comme ceci :
var valeurListe=listeChamps;
L’autre erreur :
Field:Mouse Up:41: ReferenceError: nomListe is not defined
Pour celle-ci j’ai modifié la ligne 33 :
nomListe=i;
comme ceci :var nomListe=i;
Et maintenant je n’ai plus d’erreur à la console mais la boite de dialogue m’envoie le message :
le champ "undefined" n'existe pas
Enfin ça marche si je donne au champ que je veux centrer le nom “undefined” ….
Je cherche…
- Cette réponse a été modifiée le il y a 6 mois et 3 semaines par michel c..
Attachments:
You must be logged in to view attached files.michel c.ParticipantParfait comme toujours !
Merci beaucoup
michel c.ParticipantOui, j’avais pensé à cette solution qui est bien meilleure mais me paraissait plus difficile pour moi.
J’utilise ce script :
var Quest = this.getField("NoQuest").value;
for (var i = 1; i < 41; i++) {
this.getField("Q."+Quest+"."+i).setItems(this.getField("entreesListe").value.split(/[\r\n]+/g));
}
michel c.ParticipantBonjour, j’ai essayé, cela ne fonctionne pas mais je n’ai peut être pas été assez clair dans ma formulation.
L’utilisateur doit compléter le champ entreesListe pour générer les listes déroulantes.
Cependant je voudrais forcer l’utilisateur à inscrire le caractère ? et uniquement celui-ci sur la 1ère ligne.
Le message d’alerte doit apparaître si cette condition n’est pas respectée
Attachments:
You must be logged in to view attached files.michel c.ParticipantCa fonctionne . J’ai du modifier la ligne de code proposée pour cela.
var RegExTest=new RegExp("^"+this.getField("R."+n+"."+a).value.replace(/[.*+?^${}()/\[\]\\]/g,"\\$&")+"$");
Le caractère | ne doit pas être échappé pour que cela marche.
Merci beaucoup
- Cette réponse a été modifiée le il y a 7 mois par michel c..
michel c.ParticipantJ’ai parlé un peu vite, j’ai fait un quiz pour tester un peu ça et je ne comprend pas pourquoi j’ai 6 erreurs à la page 4… Aucune erreur à la console pourtant…
michel c.Participantmichel c.ParticipantBonjour, je ne sais pas si j’aurais du ouvrir un autre fil pour cette question vu que ce document fonctionne bien maintenant.
Je pensais à améliorer un bout de code dans ce document :
Pour vérifier qu’une réponse est bonne, la ligne de code est la suivante :
if (this.getField("Q."+n+"."+a).value == this.getField("R."+n+"."+a).value)
Ici la valeur saisie dans le champ Q.n.a doit être identique à celle du champ R.n.a
Imaginons que je souhaite que plusieurs réponses soient acceptées. serait il possible que dans le champ R.n.a toutes les réponses acceptables soient séparées par exemple par ### (exemple si on demande la saisie du mot clé ; comme celui-ci a 2 orthographes : clé ou clef), j’aimerais qu’en mettant
clé###clef
dans le champ R.n.a, si l’utilisateur saisit clé ou clef dans le champ Q.n.a sa réponse soit considérée comme bonne (dans l’exemple, il y a 2 réponses acceptables mais dans mon idée il pourrait aussi y en avoir plus.Comment modifier cette ligne :
if (this.getField("Q."+n+"."+a).value == this.getField("R."+n+"."+a).value)
pour faire cela ?Si c’est faisable bien sur.
Merci
michel c.ParticipantBon, en tout cas j’ai un formulaire qui fonctionne en grande partie grâce à vous. Merci beaucoup
michel c.ParticipantEt curieusement avec cette erreur ça fonctionne (je viens d’ailleurs de m’apercevoir que j’avais oublié certains champs pour les valeurs par défaut)
Je sais que parfois je me complique la vie dans certains scripts. C’est du à une mauvaise maitrise du langage : souvent grâce à vous j’implémente des bouts de scripts voire des scripts complets dans mes documents. J’essaye parfois de modifier certains d’entre eux pour arriver à mes fins en me faisant une idée fausse de la signification du code.
Voici l’interprétation que je me fais du script Default :
//boucle entre la variable i=0 et i<nombre de champs
for (var i=0; i<this.numFields; i++) {
//déclaration de la variable nomchamp qui prend pour valeur le nom de chaque champs du formulaire
var nomChamp=this.getNthFieldName(i);
//si la première occurence d'un champ est "Q."
if (nomChamp.indexOf("Q.")==0) {
//alors les champs dont les noms commencent par "Q." ne seront pas en lecture seule
this.getField("Q.").readonly=false;
//de plus, si ces champs sont de type texte alors leur valeur par défaut ser ""
if (this.getField(nomChamp).type=="text") {this.getField(nomChamp).defaultValue="";}
// sinon l'item 0 mettre l'item 0 comme valeur pour les champs qui ne sont pas de type texte
else {this.getField(nomChamp).value=this.getField(nomChamp).getItemAt(0,false);}
}
//si la première occurence d'un champ est "R." alors la valeurs de chacun de ces champs deviendra la valeur par défaut
if (nomChamp.indexOf("R.")==0) {this.getField(nomChamp).defaultValue=this.getField(nomChamp).value;}
- Cette réponse a été modifiée le il y a 7 mois et 2 semaines par michel c..
- Cette réponse a été modifiée le il y a 7 mois et 2 semaines par michel c..
- Cette réponse a été modifiée le il y a 7 mois et 2 semaines par michel c..
- Cette réponse a été modifiée le il y a 7 mois et 2 semaines par michel c..
Attachments:
You must be logged in to view attached files.michel c.ParticipantBonsoir. Je pense avoir compris ce que tu dit et effectivement ça me parait logique.
Par contre j’ai modifié le script Defaut comme ceci :
function Default() {
for (var i=0; i<this.numFields; i++) {var nomChamp=this.getNthFieldName(i);}
if (nomChamp=="Q.") {this.getField(nomChamp).readonly=false;
if (this.getField(nomChamp).type=="text") {this.getField(nomChamp).defaultValue="";}
else {this.getField(nomChamp).value=this.getField(nomChamp).getItemAt(0,false);}
}
if (nomChamp=="R.") {this.getField(nomChamp).defaultValue=this.getField(nomChamp).value;}
}
Et là ça ne fonctionne plus. Lorsque je modifie par exemple le champ R.1.1 et que je clique sur le bouton pour appliquer les valeurs par défaut, la valeur par défaut de ce champ reste inchangée.
Attachments:
You must be logged in to view attached files.michel c.ParticipantJ’avais oublié un champ… Aide.1.1 c’est résolu !
michel c.ParticipantJ’ai trouvé quel script est en cause : c’est le script Default : lorsque je le supprime, les listes déroulantes ne sont plus initialisées à l’ouverture.
Reste à savoir pourquoi il s’exécute à l’ouverture.
Certains champs avaient encore la ligne de code Default(); en action de format. J’ai veillé à supprimer cette action sur les champs concernés…. Il y a un truc qui m’échappe
- Cette réponse a été modifiée le il y a 7 mois et 2 semaines par michel c..
Attachments:
You must be logged in to view attached files.michel c.ParticipantJ’utilise la fonction verifier pour qu’à chaque question, l’élève puisse savoir s’il a fait tout juste et passer à la question suivante ou s’il a fait des erreurs et dans ce cas, il doit modifier ses réponses.
Auparavant j’avais une vérification spécifique pour la dernière question ou en plus de cela, une boite de dialogue s’ouvrait pour signaler à l’élève s’il a fait ou non trop d’erreurs par rapport aux objectifs définis par le prof. (pour éviter que l’élève teste toutes les réponses une à une bêtement).
Grâce à votre aide, j’ai une seule fonction verifier pour toutes les questions. Je compare l’indice du bouton verifier avec le nombre de boutons verifier (qui correspond à l’indice le plus élevé car les indices commencent à 1 et sont tous consécutifs).
var nCompt = 0;
for (var i = 0 ; i < this.numFields ; i++) {
var oChamp = this.getField(this.getNthFieldName(i));
if ((oChamp.type == "button") && (/Verifier./.test(oChamp.name))) {nCompt = nCompt + 1;}
}
var DerVer = nCompt-1;
......................
...................
if (n == DerVer) {
var errMax = this.getField("Menu.7").value;
var ErrCom = this.getField("Erreurs").value;
if (errMax<=ErrCom) {app.alert({cMsg:"Vous avez fait " + ErrCom + " erreur(s). Il fallait faire moins de " + errMax + " erreur(s)."
+"\r"+ " Recommencez le questionnaire", nIcon:2});}
if (errMax>ErrCom) {app.alert({cMsg:"Bravo, vous avez réussi en faisant moins de " + errMax + " erreur(s).", nIcon:2});}
ça fonctionne à merveille
Je dois encore vérifier les éventuels bugs que je n’aurais pas vus…
Il y en a un qui me donne du fil à retordre : à la fermeture du document les champs “Q.” (et qui sont des listes déroulantes) se mettent en position 1 et je ne comprend pas pourquoi.
C’est regrettable car un élève qui n’a pas le temps de terminer en classe devra recommencer depuis le début l’exercice.
J’avais essayé de pallier à ce problème en ajoutant cette ligne :
this.getField("Q.").readonly=true;
en script avant la fermeture et avant la sauvegarde du document mais ça ne fonctionne pas…
- Cette réponse a été modifiée le il y a 7 mois et 2 semaines par michel c..
- Cette réponse a été modifiée le il y a 7 mois et 2 semaines par michel c..
Attachments:
You must be logged in to view attached files.michel c.ParticipantJ’ai trouvé !
michel c.ParticipantMerci beaucoup.
Il y a un bug que je ne comprend pas :
Quand je répond aux questions, pour l’avant dernière bien que mettant la bonne réponse, je dois m’y prendre en 2 fois pour que cette réponse soit validée.
Au 1er essai, le menu déroulant se remet en position 1 lorsque je clique sur valider.
Je n’ai pas ce problème pour les autres questions
Voici les bonnes réponses pour tester :
- question 1.1 → Rep 3
- question 1.2 → B
- question 2.1 → Rep 1
- question 2.2 → 45
Merci
- Cette réponse a été modifiée le il y a 7 mois et 2 semaines par michel c..
Attachments:
You must be logged in to view attached files.michel c.ParticipantBonjour afin d’apporter une enième modif, j’ai un petit bout de code qui me manque :
J’ai n boutons qui se nomment Verifier.1 ; verifier.2……verifier.n le nombre n peuf varier en fonction du type d’exercice que je mettrais en place.
J’aimerais lancer une fonction (qui s’appele VerifFinale) pour la valeur de n maximale (le dernier bouton verifier de mon document).
Quel code me permettrait de lancer cette fonction?
Merci
michel c.Participantmichel c.ParticipantUne question : j’aimerais proposer 3 choix de couleurs par liste déroulante (les valeurs d’export seront red, blue et green)
Dans mon script, pour l’affichage des mauvaises réponses en couleur j’ai mis ces lignes :
var colorErr = this.getField(“Menu.11”).value;
this.getField(“Q.”+n+”.”+a).fillColor=color.colorErr;
Mais ça n’a pas l’air de fonctionner.
Merci
michel c.ParticipantJe viens de trouver ! Certains champs contenaient encore le code Default(); en action de validation et/ou calcul.
michel c.ParticipantJ’ai réussi grâce à vous à corriger certains bugs (j’avais mal lu la réponse de BB du 8 mai 2024 à 19:09)
J’ai un autre souci (j’espère que c’est le dernier) : mes menus déroulants se remettent sur le 1er item tout le temps (alors que je voudrais que ce soit le cas uniquement si je clique sur Raz ou sur Default).
J’ai passé mes scripts en revue et je ne vois pas trop ou ça cloche. J’ai désactivé pour voir le code
this.getField(nomChamp).value=this.getField(nomChamp).getItemAt(0,false);
à la ligne 8 du script Default pour voir mais le problème n’est pas là…Attachments:
You must be logged in to view attached files.michel c.ParticipantBonjour, j’ai peut être une idée mais j’ai besoin d’un bout de code.
J’ai des champs qui se nomment par exemple “Question.a.b” pour lesquels les nombres a et b sont compris entre 1 et un nombre qui varient en fonction du document.
Le nombre a détermine le nombre de question dans le document et le nombre b le nombre de “sous-question” pour chacune d’entre elles.
Comment faire pour extraire ces nombres dans 2 variables.
Par exemple si
- à la question 1 j’ai 2 champs qui se nomment”Question.1.0″ et “Question.1.1”
- à la 2ème j’ai 3 champs qui se nomment”Question.2.0″ ; “Question.2.1” et “Question.2.2”
- à la 3ème j’ai 3 champs qui se nomment”Question.3.0″ ; “Question.3.1” et “Question.3.2”
il faudrait que je puisse faire
- une boucle for pour la question 1 ou la variable b est comprise entre 0 et 1
- une boucle for pour la question 2 ou la variable b est comprise entre 0 et 2
- une boucle for pour la question 3 ou la variable b est comprise entre 0 et 2
Le nombre de boucles dépendra de la variable a qui détermine le nombre de questions
Merci
michel c.ParticipantEffectivement, je viens de vérifier avec adobe Acrobat DC et ça fonctionne.
ça ne fonctionne pas avec PDF XChange editor (logiciel pour lequel nous avons la licence…)
Je vais essayer de voir s’il existe un autre moyen d’arriver à mes fins…
- Cette réponse a été modifiée le il y a 7 mois et 3 semaines par michel c..
michel c.ParticipantBonjour, ça ne fonctionne pas. Aucun message d’erreur sur la console mais rien ne se passe.
Attachments:
You must be logged in to view attached files.michel c.ParticipantMerci, je viens de faire ces modifications. Maintenant j’ai un souci avec ma fonction Raz.
En gros, je souhaite
• que tous les champs “R.” soient cachés
• que tous les autres champs et boutons dont le 1er indice est supérieur à 1 soient cachés aussi
• que la couleur de fond de tous les champs “Q.” soit transparent
Voici mon script :
function Raz() {
for (var i=0; i<this.numFields; i++) {
var nomChamp=this.getNthFieldName(i);
this.getField("Erreurs").value = 0;
this.getField("Menu.5").value = 0;
if (nomChamp.indexOf("TQ.")==0) {this.getField("TQ.").display=display.hidden;}
if (nomChamp.indexOf("Question.")==0) {this.getField("Question.").display=display.hidden;
this.getField("Question").fillColor=color.transparent;}
if (nomChamp.indexOf("Aide.")==0) {this.getField("Aide.").display=display.hidden;}
if (nomChamp.indexOf("Verifier.")==0) {this.getField("Verifier.").display=display.hidden;}
if (nomChamp.indexOf("Recommencer.")==0) {this.getField("Recommencer.").display=display.hidden;}
if (nomChamp.indexOf("R.")==0) {this.getField("R.").display=display.hidden;}
if (nomChamp.indexOf("TQ.1")==0) {this.getField("TQ.1").display=display.visible;}
if (nomChamp.indexOf("Question.1")==0) {this.getField("Question.1").display=display.visible;}
if (nomChamp.indexOf("Aide.1")==0) {this.getField("Aide.1").display=display.visible;}
if (nomChamp.indexOf("Verifier.1")==0) {this.getField("Verifier.1").display=display.visible;}
if (nomChamp.indexOf("Recommencer.1")==0) {this.getField("Recommencer.1").display=display.visible;}
}
}
Je ne comprend pas trop pourquoi ça ne fonctionne pas…
- Cette réponse a été modifiée le il y a 7 mois et 3 semaines par michel c..
Attachments:
You must be logged in to view attached files.michel c.ParticipantBonjour et merci, ça fonctionne. Pour exclure certains boutons et champs de la fonction EditReps j’ai modifié le script comme ceci :
for (var i=0; i<this.numFields; i++) { var nomChamp=this.getNthFieldName(i); if (this.getField("Menu.5").value!="Off") { this.getField("R.").display=display.visible; if (nomChamp.indexOf("Q.")!=0) {this.getField(nomChamp).readonly=false;} } else { this.getField(nomChamp).readonly=true; if (nomChamp.substring(0, 4)=="Menu") {this.getField("Menu.").readonly=false;} if (nomChamp.substring(0, 1)=="Q") {this.getField("Q.").readonly=false;} if (nomChamp.substring(0, 1)=="R") {this.getField("R.").display=display.hidden;} } }}
Je ne sais pas si c’est la meilleure méthode mais ça marche.
Sinon je me rend compte que j’ai un souci en cliquant sur Raz : s’il n’y a aucune annotation sur le document, la console renvoie l’erreur :
Doc:Open:6: TypeError: annots is null
Ce que je ne comprend pas d’ailleurs car dans la fonction EffAnnots il y a cette ligne :
if (this.getAnnots != null)
qui devrait éviter ce message d’erreur.- Cette réponse a été modifiée le il y a 7 mois et 3 semaines par michel c..
Attachments:
You must be logged in to view attached files.michel c.ParticipantBonjour, je viens d’essayer mais ça ne fonctionne pas. Je n’ai aucune erreur à la console mais les scripts font rien…
Attachments:
You must be logged in to view attached files.michel c.ParticipantVoila, 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 10 mois et 2 semaines 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 10 mois et 3 semaines 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 10 mois et 3 semaines 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 10 mois et 3 semaines par michel c..
- Cette réponse a été modifiée le il y a 10 mois et 3 semaines par michel c..
- Cette réponse a été modifiée le il y a 10 mois et 3 semaines 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 10 mois et 3 semaines par michel c..
- Cette réponse a été modifiée le il y a 10 mois et 3 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 11 mois et 3 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.
michel c.ParticipantÇa a l’air de marcher. Merci beaucoup
michel c.ParticipantJ’ai été devancé. Bon réveillon à tous.
michel c.ParticipantVoila le script :
var m = this.getField("masse").value;
var t = this.getField("taille").value;
var imc = m/(t*t);
this.getField("imc").value = imc;
Attachments:
You must be logged in to view attached files.michel c.ParticipantJe viens de constater qu’il y a encore des doublons pour les réponses sous forme de liste. De plus lors de la création de la liste par ordre alphanumérique, est il possible d’avoir le 10 après le 9 et non entre le 1 et le 2 ou c’est trop complexe?
Merci
Attachments:
You must be logged in to view attached files.michel c.ParticipantMerci beaucoup, c’est nickel. Je suis en train d’apporter quelques améliorations, mais j’ai déjà une très bonne base grâce à toi.
Peux tu m’expliquer les quelques lignes qui permettent d’afficher une question aléatoirement mais avec une plus grande fréquence pour les réponses erronées.
var aleatoire=Math.floor(Math.random()*nb);
var laQuestion="-";
while (reponses[aleatoire][1]>moyenne || laQuestion=="-") {
var aleatoire=Math.floor(Math.random()*nb);
var laQuestion=lesReponses[aleatoire][0];
var laReponse=lesReponses[aleatoire][1];
}
Je voudrais savoir ce qui se passe si l’utilisateur ne répond pas et affiche une nouvelle question. Est ce que la question qu’il a sautée reviendra plus fréquemment également.
Merci
- Cette réponse a été modifiée le il y a 1 année par michel c..
- Cette réponse a été modifiée le il y a 1 année par michel c..
Attachments:
You must be logged in to view attached files.michel c.ParticipantPour les réponses de type champ texte, je crois avoir réussi en modifiant le script du bouton valider.
Par contre, lorsque l’on répond par la liste déroulante, cela ne marche pas, les valeurs exportées dans la liste ne sont pas les bonnes et je ne sais pas pourquoi.
Attachments:
You must be logged in to view attached files.michel c.ParticipantMerci pour cette version, je n’y serais pas arrivé tout seul.
J’ai modifié le document pour permettre 2 types de réponses : Champ texte ou liste déroulante
et dans chaque cas, un problème survient :
Pour la liste de réponse, est il possible d’éliminer les doublons dans la liste de réponse et de classer les éléments de la liste par ordre alphanumérique ?
Pour les réponses type Champ Texte, comme la vérification est en action de frappe, si la réponse saisie contient plusieurs caractères, cela va afficher le message d’erreur dès la frappe du 1er caractère.
Dernier souci, j’ai remarqué que lorsque je génère les questions, cela fonctionne seulement si je sauvegarde, ferme puis ouvre le document.
J’essaye de trouver des solutions pour les 2 premiers problèmes. Pour le dernier, je ne pense pas y arriver.
Merci
Attachments:
You must be logged in to view attached files.michel c.ParticipantMerci, j’ai un message d’erreur à la console lors du clic demarrer : à la ligne 15 :
Field:Mouse Up:15: TypeError: reponses[aleatoire] is undefined
Je ne comprend pas pourquoi d’ailleurs, la variable aleatoire est déclarée à la ligne 13
Je cherche comment y remedier
- Cette réponse a été modifiée le il y a 1 année par michel c..
michel c.ParticipantMerci, j’ai essayé de modifier ce que tu propose pour que les questions/réponses soient éditables dans un champ texte (question et réponse sont séparées par un “/”).
Mais je n’arrive pas à faire apparaître aléatoirement la question ni à avoir les valeurs exportées dans les réponses.
Attachments:
You must be logged in to view attached files.michel c.ParticipantMerci
michel c.ParticipantOK merci.
michel c.ParticipantC’est curieux, ça marche dans ton fichier mais quand j’intègre ce script dans mon fichier d’origine ça ne fonctionne pas)
Il faut cliquer sur démarrer, cela génère une équation
Ensuite on clique sur vérification 1 (Je n’ai pas intégré de vérification intermédiaire donc peu importe ce que l’on a saisi)
L’aide 4 affiche la décomposition en facteur de nombres premiers
J’ai intégré la modification que tu proposes sur le bouton vérification 2b
Par exemple si j’ai comme décomposition :
Décomposition du numérateur : -2 x 3 x 5
Décomposition du dénominateur : 5 x 7
et que j’inscris comme réponse 6/-7
NB : j’ai rajouté un affichage sur la console pour comparer ma réponse avec celle qui est exacte →
console.println("RepUser="+RepUser+" ; Reponse="+Reponse)
Quand je clique sur vérification 2b (là ou se trouve le script) :
Cela m’indique que mon résultat est faux (Console → RepUser=6/-7 ; Reponse=-6/7)
Si j’inscris alors -6/7
Cela m’indique aussi que mon résultat est faux alors que ma réponse est la même que la réponse attendue (Console → RepUser=-6/7 ; Reponse=-6/7)
michel c.ParticipantMerci, 2 questions cependant : pourquoi appelle-t-on 2 fois la fonction ?
nbAleatoires();
while (b*f-e*c<=0 || a*f-c*d<=0) nbAleatoires();
En créant une fonction on peut se passer de déclarer les variables avec la valeur 0 ?
michel c.ParticipantJ’ai trouvé ceci comme solution, je ne sais pas si c’est très académique mais ça a l’air de marcher.
function simplify(str) {
var result="";
var data=str.split("/");
var numOne=Number(data[0]);
var numTwo=Number(data[1]);
for (var i=Math.max(numOne,numTwo); i>1; i--) {
if (numOne%i==0 && numTwo%i==0) {
numOne/=i;
numTwo/=i;}
}
if (numTwo===1) result=numOne.toString();
else result=numOne.toString()+"/"+numTwo.toString();
return result;
}
var Reponse = "";
var Reponse1 = "";
var Reponse2 = "";
var Numerateur = this.getField ("RepEt.2b").value;
var Denominateur = this.getField ("RepEt.1b").value;
if (Numerateur>=0 & Denominateur>=0) {Reponse = simplify (Numerateur+"/"+Denominateur);}
if (Numerateur<0 & Denominateur<0) {Numerateur = Math.abs(Numerateur);Denominateur = Math.abs(Denominateur);
Reponse1 = simplify (Numerateur+"/"+Denominateur);
Reponse2 = "-"+simplify (Numerateur+"/-"+Denominateur);
}
if (Numerateur<0 & Denominateur>=0 | Numerateur>=0 & Denominateur<0) {Numerateur = Math.abs(Numerateur);Denominateur = Math.abs(Denominateur);
Reponse1 = "-"+simplify (Numerateur+"/"+Denominateur);
Reponse2 = simplify (Numerateur+"/-"+Denominateur);
}
var RepUser = (this.getField("RepEt.3").value);
if (RepUser == Reponse | RepUser == Reponse1 | RepUser == Reponse2) {app.alert({cMsg:"Bravo.", nIcon:2});}
if (Reponse != RepUser & Reponse1!= RepUser & Reponse2!= RepUser) {app.alert({cMsg:"La fraction est insufisament simplifiée, ou fausse.", nIcon:2});}
Attachments:
You must be logged in to view attached files.michel c.ParticipantJ’ai essayé ceci mais ça ne fonctionne pas.
var RepUser = this.getField("RepEt.3").valueAsString;
var RepUserSplit = RepUser.split("/");
if (RepUserSplit[0] >=0 && RepUserSplit[1]>=0) var ReponseA = simplify (this.getField ("RepEt.2b"). value+"/"+this.getField ("RepEt.1b"). value);
if (RepUserSplit[0] <0 | RepUserSplit[1]<0) {var ReponseB = simplify ("-"+this.getField ("RepEt.2b"). value+"/"+this.getField ("RepEt.1b"). value);
var ReponseC = simplify (this.getField ("RepEt.2b"). value+"/-"+this.getField ("RepEt.1b"). value);
}
if (ReponseA == RepUser | ReponseB == RepUser | ReponseC == RepUser) {app.alert({cMsg:"Bravo.", nIcon:2});}
if (Reponse != RepUser) {app.alert({cMsg:"La fraction est insufisament simplifiée, ou fausse.", nIcon:2});}
Je cherche encore.
Attachments:
You must be logged in to view attached files.michel c.ParticipantBonjour, je relance ce fil car j’ai des cas de figure qui me posent problème avec les nombres négatifs.
Si la bonne réponse est -1/3 ; il faudrait pouvoir accepter comme réponse 1/-3
J’ai une idée en tête avec une condition if et la création d’une table avec / comme séparateur. Je suis en train d’essayer…
Attachments:
You must be logged in to view attached files.michel c.ParticipantMerci pour toutes ces infos
michel c.ParticipantMerci beaucoup, tout a l’air de fonctionner ! et j’aurais appris encore des trucs.
Juste pour avoir plus de détails :
replace(/\s+/g,””) On supprime tous les espaces. → quelle est le rôle de /, celui de \s celui de +/g…
Sinon, je ne comprend pas encore bien les tables. Si l’on avait 2*45×8×9 comme valeur saisie dans le champs RepUser2, cette ligne de code :
var RepUser2=this.getField(“RepUser2″).valueAsString.replace(/\s+/g,””).replace(/[x]/,”*”).split(“*”);
Transformerait la variable RepUser2 en table qui serait composée de 4 éléments que l’on pourrait rappeler ainsi :
→ RepUser2[0]
→ RepUser2[1]
→ RepUser2[2]
→ RepUser2[3]
C’est bien ça ?
michel c.ParticipantLa variable diff est affectée de la valeur du champ Menu.5 ; il s’agit du niveau de difficulté, qui va modifier le type d’équation généré.
lorsque diff == 6, l’équation peut avoir 2 types :
- c/(ax+b) =d ; quand la variable OpAl == 1 (dans le script équation)
- c/(ax-b) =d ; quand la variable OpAl == 2 (dans le script équation)
- la variable OpAl peut prendre la valeur 1 ou 2 de façon aléatoire et les variables a, b, c et d sont générées aléatoirement également.
Mon problème c’est que les scripts (affectés aux champs num et den) qui permettent la décomposition des nombres en produit de facteurs premiers font bugger le programme lorsque le numérateur ou le dénominateur sont = 0.
Je voudrais donc éviter la valeur 0 pour le numérateur et le dénominateur lorsque les variables a, b, c et d sont générées.
Concrètement,
- quand OpAl ==1, ma solution de l’équation est x=(c-bd)/ad donc dans ce cas, il ne faut pas que c-b*d =0
- quand OpAl ==2, ma solution de l’équation est x=(c+bd)/ad donc dans ce cas, il ne faut pas que c+b*d =0
D’ou ce code :
if (OpAl == 1) {var OP = "+";
while (c-b*d == 0) {
var a=Math.round(Math.random()*7)+2;
var b=Math.round(Math.random()*9)+1;
var c=Math.round(Math.random()*8)+1;
var d=Math.round(Math.random()*9)+1;
}
this.getField("NB.1").value = a;
this.getField("NB.2").value = b;
this.getField("NB.3").value = c;
this.getField("NB.4").value = d;
this.getField("help.0").value = "→ Multiplier l'équation par ("+a+VarEq+"+"+b+") dans un premier temps.";
console.println("→ Multiplier l'équation par ("+a+VarEq+"+"+b+") dans un premier temps.");}
if (OpAl == 2) {var OP = "-";
while (c+b*d == 0) {
var a=Math.round(Math.random()*7)+2;
var b=Math.round(Math.random()*9)+1;
var c=Math.round(Math.random()*8)+1;
var d=Math.round(Math.random()*9)+1;
}
this.getField("NB.1").value = a;
this.getField("NB.2").value = b;
this.getField("NB.3").value = c;
this.getField("NB.4").value = d;
Qui me permettrait pensais-je d’éviter ces valeurs lors de la génération des variables aléatoires, mais lorsque je teste, j’ai ce message d’erreur : La valeur entrée ne correspond pas au format du champ.
J’ai essayé de mettre uniquement mon problème dans ce fichier (je pense que ça vient de là).
- Cette réponse a été modifiée le il y a 1 année et 1 mois par michel c..
- Cette réponse a été modifiée le il y a 1 année et 1 mois par michel c..
- Cette réponse a été modifiée le il y a 1 année et 1 mois par michel c..
Attachments:
You must be logged in to view attached files.michel c.ParticipantBonjour, pas testé cette dernière version mais la précédente marchait bien il me semble (j’y ai apporté quelques modifs pour l’adapter à ce que je souhaitais).
Je met le fichier en pj (attention, c’est une usine à gaz comme à mon habitude)
Le script est affecté au bouton vérifier de gauche (le 1er) pour le niveau de difficulté 5 → if (diff ==5)
Sinon, je reconnais que je ne comprend pas cette ligne :
var RepUser2=this.getField("RepUser2").valueAsString.replace(/\s+/g,"").replace(/[x]/,"*").split("*");
Et celle-ci :
if (RepUser2.length==2 && ((vC2==RepUser2[0] &&
vC3==RepUser2[1]) || (vC2==RepUser2[1] && vC3==RepUser2[0])))
OK++;
Merci
J’ai un autre souci avec ce fichier, pour le niveau de difficulté 6 et le script de document equation.
Si je remplace la condition if (diff ==6 ) par ce bout de script
if (diff == 6) {
this.getField("et.1").value = "Etape 1 : indiquer la valeur de "+VarEq+" sous forme de fraction sans la réduire pour l'instant.";
//declaration de l'équation aléatoirement
var OpAl=Math.round(Math.random()*1)+1;
this.getField("OP").value = OpAl;
//declaration aléatoire de l'opérateur après terme x & affichage de l'équation
//++++++++++++++
if (OpAl == 1) {var OP = "+";
while (c-b*d == 0) {
var a=Math.round(Math.random()*7)+2;
var b=Math.round(Math.random()*9)+1;
var c=Math.round(Math.random()*8)+1;
var d=Math.round(Math.random()*9)+1;
}
this.getField("NB.1").value = a;
this.getField("NB.2").value = b;
this.getField("NB.3").value = c;
this.getField("NB.4").value = d;
this.getField("help.0").value = "→ Multiplier l'équation par ("+a+VarEq+"+"+b+") dans un premier temps.";
console.println("→ Multiplier l'équation par ("+a+VarEq+"+"+b+") dans un premier temps.");}
if (OpAl == 2) {var OP = "-";
while (c+b*d == 0) {
var a=Math.round(Math.random()*7)+2;
var b=Math.round(Math.random()*9)+1;
var c=Math.round(Math.random()*8)+1;
var d=Math.round(Math.random()*9)+1;
}
this.getField("NB.1").value = a;
this.getField("NB.2").value = b;
this.getField("NB.3").value = c;
this.getField("NB.4").value = d;
this.getField("help.0").value = "→ Multiplier l'équation par ("+a+VarEq+"-"+b+") dans un premier temps.";
console.println("→ Multiplier l'équation par ("+a+VarEq+"+"+b+") dans un premier temps.");}
this.getField("eqET0").value = c+"/("+a+VarEq+OP+b+") = "+d;
this.getField("help.1").value = "→ Diviser l'équation par "+d+" puis isoler "+VarEq;
this.getField("RepEt.1").readonly = false;
this.getField("RepEt.2").readonly = false;
this.getField("eqET0").display = display.visible;
this.getField("RepEt.1").display = display.visible;
this.getField("RepEt.2").display = display.visible;
this.getField("verif.0").display = display.visible;
}
Cela me génère une erreur : La valeur entrée ne correspond pas au format du champ.
Merci
michel c.ParticipantOui, ça a marché.
Merci
michel c.ParticipantFinalement, je ne comprend pas pourquoi ça ne marche plus. En fait toutes les réponses sont validées, exactes ou pas ….
Attachments:
You must be logged in to view attached files.michel c.ParticipantJe pense qu’il y a une faute de frappe, ou bien une scie que je ne connais pas (scie à anneaux)…
michel c.ParticipantSuper. merci beaucoup
michel c.ParticipantMerci, ça fonctionne pour générer des nombres aléatoirement mais certains sortent de la plage min max
Attachments:
You must be logged in to view attached files.michel c.ParticipantMerci beaucoup, ça fonctionne. par contre j’ai du remplacer .valueAsString par .value
michel c.ParticipantMerci beaucoup, j’aurais du y penser…
michel c.ParticipantMerci mais ça n’a pas l’air de fonctionner.
Attachments:
You must be logged in to view attached files.michel c.ParticipantMerci
michel c.ParticipantPar contre, juste une question, comment empêcher l’apparition du message d’erreur sur la console lorsqu’il n’y a aucune annotation à supprimer ? Par exemple si l’utilisateur clique 2 fois sur le bouton par mégarde.
Merci
Doc:Open:3: TypeError: annots is null
michel c.ParticipantMerci, je crois avoir trouvé la liste des différents types d’annotations à cette page.
Je viens de faire un essai, ça fonctionne !
- Cette réponse a été modifiée le il y a 1 année et 2 mois par michel c..
- Cette réponse a été modifiée le il y a 1 année et 2 mois par michel c..
- Cette réponse a été modifiée le il y a 1 année et 2 mois par michel c..
Attachments:
You must be logged in to view attached files.michel c.ParticipantMerci. Et en quoi ça consiste, y a-t-il un code que l’on peut mettre dans un script ?
michel c.ParticipantBonjour, j’ai modifié les champs pour que cela fonctionne avec mes numéros mais je ne comprend pas pourquoi lorsque je coche une case le numéro qui apparait n’est pas le bon. Merci
Arf, je viens de comprendre. ça marche du coup.
michel c.ParticipantBonjour, j’ai modifié les champs pour que cela fonctionne avec mes numéros mais je ne comprend pas pourquoi lorsque je coche une case le numéro qui apparait n’est pas le bon.
Merci
- Cette réponse a été modifiée le il y a 1 année et 3 mois par michel c..
Attachments:
You must be logged in to view attached files.michel c.ParticipantMerci
michel c.ParticipantMerci, je viens de refaire complètement mon document. Il n’y a plus de champs end.0 (voir pièce jointe du message précédent).
Je n’arrive pas à faire ce que je veux avec un champ de saisie unique pour le temps.
J’ai donc crée 3 champs pour cette saisie : heures minutes et secondes.
ça marche bien sauf une erreur d’arrondi (voir message précédent)
Merci
michel c.ParticipantCe que je veux faire c’est la même chose que dans la pièce jointe sauf que pour la saisie du temps, au lieu de saisir le nombre d’heures dans un champ (H.+i), le nombre de minutes dans un autre (M.+i) et le nombre de secondes dans un 3ème (S.+i), j’aimerais tout saisir dans un seul sous la forme H:MM:ss
Par contre j’ai une erreur de calcul (là c’est des maths).
Je ne comprend pas pourquoi pour l’exemple que j’ai mis sur 2000m de distance avec un temps de 4min20s, l’allure moyenne aux 500m est de 1min 4s et 10 centièmes alors que si je la calcule, j’ai 1min et 5s.
Calculs :
4min 20s = 260 secondes
Allure moyenne aux 500m :
nombre de minutes : partie entière de (260 * (500/2000*60))
nombre de secondes : partie entière de (60*partie décimale de (260 * (500/2000*60)))
nombre de centièmes de secondes : 10*partie décimale de (60*partie décimale de (260 * (500/2000*60)))
Est ce moi qui m’embrouille dans mes formules?
Merci
PS : Les 5 colonnes de droites me servent pour les calculs intermédiaires, pour ne pas avoir des lignes de calcul à rallonge dans mon code. Si je pouvais je ne les mettrait pas. Sinon, je leur affichage sera non visible.
- Cette réponse a été modifiée le il y a 1 année et 5 mois par michel c..
- Cette réponse a été modifiée le il y a 1 année et 5 mois par michel c..
Attachments:
You must be logged in to view attached files.michel c.ParticipantBonjour, effectivement, ça ne pouvait pas marcher.
Je viens de créer un script de document permettant de calculler l’allure moyenne sur 500m qui se présente ainsi :
function allure() {
event.value= "";
for (var a=1 ; a<14 ; a++) {var somme=Time2Num("mm:ss", 500*(this.getField("end.0").value))/this.getField("dist."+a).value;
HM_Format()
}}
Mais cela ne fonctionne toujours pas. J’ai essayé de comprendre la fonction Time2Num que j’ai trouvée sur ce forum et que j’essaye d’adapter mais j’avoue que je ne comprend pas tout.
Je pense que je pourrais arriver à mes fins si je saisissais les heures minutes secondes dans 3 champs séparés mais ça ne sera pas très pratique.
Merci
Attachments:
You must be logged in to view attached files. -
AuteurRéponses