Donnez vie à vos documents numériques !
 

michel c.

Toutes mes réponses sur les forums

Affichage de 99 réponses de 100 à 198 (sur un total de 422)
  • Auteur
    Réponses
  • en réponse à : Position des champs #74360
    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.
    en réponse à : Position des champs #74357
    michel c.
    Participant

    Bonjour, 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.
    en réponse à : Position des champs #74353
    michel c.
    Participant

    L’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..
    en réponse à : Position des champs #74351
    michel c.
    Participant

    Si c’est plus simple, intervertir les positions et caractéristiques des champs Q.a.b et R.a.b

    en réponse à : Exécution de fonction par bouton #74342
    michel c.
    Participant

    Ca 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 Lien

     

    Bonjour, 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.
    en réponse à : Centrage automatique d’un champ #74341
    michel c.
    Participant

    Oui, tout fonctionne super bien .

    en réponse à : Centrage automatique d’un champ #74339
    michel c.
    Participant

    Bonjour, ça marche parfaitement ! Merci

     

    en réponse à : Centrage automatique d’un champ #74333
    michel c.
    Participant

    J’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.
    en réponse à : Centrage automatique d’un champ #74330
    michel c.
    Participant

    Bonjour, 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.
    en réponse à : Condition sur 1ère ligne #74325
    michel c.
    Participant

    Parfait comme toujours !

    Merci beaucoup

    en réponse à : Condition sur 1ère ligne #74321
    michel c.
    Participant

    Oui, 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));
    }

    en réponse à : Condition sur 1ère ligne #74318
    michel c.
    Participant

    Bonjour, 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.
    en réponse à : Exécution de fonction par bouton #74306
    michel c.
    Participant

    Ca 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

     

    Lien

    • Cette réponse a été modifiée le il y a 7 mois par michel c..
    en réponse à : Exécution de fonction par bouton #74302
    michel c.
    Participant

    Ca sera mieux avec le fichier :

     

    Lien

    en réponse à : Exécution de fonction par bouton #74301
    michel c.
    Participant

    J’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…

    en réponse à : Exécution de fonction par bouton #74296
    michel c.
    Participant

    Merci ! ça marche. C’est top

    • Cette réponse a été modifiée le il y a 7 mois par michel c..
    • Cette réponse a été modifiée le il y a 7 mois par michel c..
    • Cette réponse a été modifiée le il y a 7 mois par michel c..
    Attachments:
    You must be logged in to view attached files.
    en réponse à : Exécution de fonction par bouton #74294
    michel c.
    Participant

    Bonjour, 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

    en réponse à : Exécution de fonction par bouton #74284
    michel c.
    Participant

    Bon, en tout cas j’ai un formulaire qui fonctionne en grande partie grâce à vous. Merci beaucoup

    en réponse à : Exécution de fonction par bouton #74263
    michel c.
    Participant

    Et 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.
    en réponse à : Exécution de fonction par bouton #74261
    michel c.
    Participant

    Bonsoir. 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.
    en réponse à : Exécution de fonction par bouton #74256
    michel c.
    Participant

    J’avais oublié un champ… Aide.1.1 c’est résolu !

    en réponse à : Exécution de fonction par bouton #74253
    michel c.
    Participant

    J’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.
    en réponse à : Exécution de fonction par bouton #74248
    michel c.
    Participant

    J’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.
    en réponse à : Exécution de fonction par bouton #74240
    michel c.
    Participant

    J’ai trouvé !

    en réponse à : Exécution de fonction par bouton #74232
    michel c.
    Participant

    Merci 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.
    en réponse à : Exécution de fonction par bouton #74228
    michel c.
    Participant

    Bonjour 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

    en réponse à : Exécution de fonction par bouton #74224
    michel c.
    Participant

    Merci beaucoup, je pense toucher au but !

    Je cherche d’éventuels bugs que je n’aurai pas vu mais ça commence à prendre forme.

     

    • 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.
    en réponse à : Exécution de fonction par bouton #74219
    michel c.
    Participant

    Une 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

     

    en réponse à : Exécution de fonction par bouton #74218
    michel c.
    Participant

    Je viens de trouver ! Certains champs contenaient encore le code Default(); en action de validation et/ou calcul.

    en réponse à : Exécution de fonction par bouton #74216
    michel c.
    Participant

    J’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.
    en réponse à : Exécution de fonction par bouton #74214
    michel c.
    Participant

    Bonjour, 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

     

    en réponse à : Exécution de fonction par bouton #74207
    michel c.
    Participant

    Effectivement, 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…

    Erreur

    • Cette réponse a été modifiée le il y a 7 mois et 3 semaines par michel c..
    en réponse à : Exécution de fonction par bouton #74202
    michel c.
    Participant

    Bonjour, ç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.
    en réponse à : Exécution de fonction par bouton #74197
    michel c.
    Participant

    Merci, 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.
    en réponse à : Exécution de fonction par bouton #74191
    michel c.
    Participant

    Bonjour 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.
    en réponse à : Exécution de fonction par bouton #74179
    michel c.
    Participant

    Bonjour, 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.
    en réponse à : Champ texte grisé #74020
    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.
    en réponse à : Propriété d’un champ #73973
    michel c.
    Participant

    Bonjour 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

    en réponse à : Propriété d’un champ #73969
    michel c.
    Participant

    Je 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.
    en réponse à : Propriété d’un champ #73967
    michel c.
    Participant

    Merci, 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.

    en réponse à : Propriété d’un champ #73962
    michel c.
    Participant

    Merci 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.
    en réponse à : Propriété d’un champ #73957
    michel c.
    Participant

    Merci 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.
    en réponse à : Propriété d’un champ #73951
    michel c.
    Participant

    Merci 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

    en réponse à : Propriété d’un champ #73946
    michel c.
    Participant

    Super, 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..
    en réponse à : Propriété d’un champ #73943
    michel c.
    Participant

    Je 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..
    en réponse à : Propriété d’un champ #73937
    michel c.
    Participant

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

    en réponse à : Propriété d’un champ #73926
    michel c.
    Participant

    Si 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.
    en réponse à : Propriété d’un champ #73920
    michel c.
    Participant

    Je vais chercher de mon côté, l’algorithme commence à  s’organiser dans ma tête.

    Je remet ici la pièce jointe, je viens de faire une petite modif sur le fichier.

    • 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.
    en réponse à : Propriété d’un champ #73917
    michel c.
    Participant

    Sinon, 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.

     

    en réponse à : Propriété d’un champ #73914
    michel c.
    Participant

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

    en réponse à : Propriété d’un champ #73897
    michel c.
    Participant

    Merci, 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.
    en réponse à : Propriété d’un champ #73865
    michel c.
    Participant

    J’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.
    en réponse à : Propriété d’un champ #73861
    michel c.
    Participant

    De 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.
    en réponse à : Propriété d’un champ #73851
    michel c.
    Participant

    Je 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

     

    en réponse à : Propriété d’un champ #73848
    michel c.
    Participant

    Bonjour, 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

    en réponse à : Propriété d’un champ #73839
    michel c.
    Participant

    Merci, je cherche une autre solution.

    en réponse à : Carcatère présent dans une chaine #73836
    michel c.
    Participant

    Merci beaucoup, ça fonctionne. Plus que quelques bugs à corriger et ce formulaire sera opérationnel.

    en réponse à : Carcatère présent dans une chaine #73814
    michel c.
    Participant

    Merci, 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

    Le fichier

    en réponse à : Formule trigonométrie #73800
    michel c.
    Participant

    C’est cela que tu veux faire ?

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Condition sur premier caractère #73779
    michel c.
    Participant

    J’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..
    en réponse à : Condition sur premier caractère #73778
    michel c.
    Participant

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

    en réponse à : Condition sur premier caractère #73768
    michel c.
    Participant

    Ça a l’air de marcher. Merci beaucoup

    en réponse à : Calcul IMC #73767
    michel c.
    Participant

    J’ai été devancé. Bon réveillon à tous.

    en réponse à : Calcul IMC #73758
    michel c.
    Participant

    Voila 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.
    en réponse à : Affichage aléatoire #73737
    michel c.
    Participant

    Je 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.
    en réponse à : Affichage aléatoire #73733
    michel c.
    Participant

    Merci 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.
    en réponse à : Affichage aléatoire #73729
    michel c.
    Participant

    Pour 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.
    en réponse à : Affichage aléatoire #73727
    michel c.
    Participant

    Merci 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.
    en réponse à : Affichage aléatoire #73719
    michel c.
    Participant

    Merci, 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..
    en réponse à : Affichage aléatoire #73710
    michel c.
    Participant

    Merci, 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.
    en réponse à : Décomposition en facteurs premiers #73702
    michel c.
    Participant

    Merci

    en réponse à : Copier presse papier #73638
    michel c.
    Participant

    OK merci.

    en réponse à : Réduction fraction #73588
    michel c.
    Participant

    C’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)

    Lien

    en réponse à : Boucle while #73585
    michel c.
    Participant

    Merci, 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 ?

    • 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..
    en réponse à : Réduction fraction #73580
    michel c.
    Participant

    J’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.
    en réponse à : Réduction fraction #73577
    michel c.
    Participant

    J’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.
    en réponse à : Réduction fraction #73575
    michel c.
    Participant

    Bonjour, 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.
    en réponse à : Raccourcir une condition #73572
    michel c.
    Participant

    Merci pour toutes ces infos

    en réponse à : Raccourcir une condition #73569
    michel c.
    Participant

    Merci 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 ?

    en réponse à : Raccourcir une condition #73556
    michel c.
    Participant

    La 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.
    en réponse à : Raccourcir une condition #73546
    michel c.
    Participant

    Bonjour, 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

    Equations

    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

    • 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..
    en réponse à : Raccourcir une condition #73539
    michel c.
    Participant

    Oui, ça a marché.

    Merci

    en réponse à : Raccourcir une condition #73536
    michel c.
    Participant

    Finalement, 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.
    en réponse à : Envoi d’un formulaire à l’aide d’un bouton #73514
    michel c.
    Participant

    Je pense qu’il y a une faute de frappe, ou bien une scie que je ne connais pas (scie à anneaux)…

    en réponse à : Nombre aléatoire compris entre 2 valeurs #73432
    michel c.
    Participant

    Super. merci beaucoup

    en réponse à : Nombre aléatoire compris entre 2 valeurs #73424
    michel c.
    Participant

    Merci, ç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.
    en réponse à : Raccourcir une condition #73414
    michel c.
    Participant

    Merci beaucoup, ça fonctionne. par contre j’ai du remplacer .valueAsString par .value

    en réponse à : Nombre aléatoire sous condition #73400
    michel c.
    Participant

    Merci beaucoup, j’aurais du y penser…

    en réponse à : Nombre aléatoire sous condition #73396
    michel c.
    Participant

    Merci mais ça n’a pas l’air de fonctionner.

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Effacer les commentaires #73378
    michel c.
    Participant

    Merci

    en réponse à : Effacer les commentaires #73374
    michel c.
    Participant

    Par 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

     

    en réponse à : Effacer les commentaires #73368
    michel c.
    Participant

    Merci, 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.
    en réponse à : Effacer les commentaires #73361
    michel c.
    Participant

    Merci. Et en quoi ça consiste, y a-t-il un code que l’on peut mettre dans un script ?

    en réponse à : Remplissage automatique champs #73267
    michel c.
    Participant

    Bonjour, 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.

    en réponse à : Remplissage automatique champs #73264
    michel c.
    Participant

    Bonjour, 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.
    en réponse à : Remplissage automatique champs #73262
    michel c.
    Participant

    Merci

    en réponse à : Code pour calculer heures, minutes, secondes #73086
    michel c.
    Participant

    Merci, 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

    en réponse à : Code pour calculer heures, minutes, secondes #73081
    michel c.
    Participant

    Ce 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.
    en réponse à : Code pour calculer heures, minutes, secondes #73073
    michel c.
    Participant

    Bonjour, 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.
Affichage de 99 réponses de 100 à 198 (sur un total de 422)