Donnez vie à vos documents numériques !
 

Remplissage automatique.

abracadabraPDF Forums PDF – Général Remplissage automatique.

  • Créateur
    Sujet
  • #71538
    michel c.
    Participant

    Bonjour, pour avoir un bon suivi de mes classes, j’essaye d’améliorer un document (voir pièce jointe) qui me permettrait en quelques clics de compléter un bilan de chacun de mes élèves.

    Sur la 1ère page, j’aimerais par exemple pour l’élève 1 après avoir fait un choix dans le menu motif.1 puis lorsque je clique sur le bouton Valider.1, une boite de dialogue s’ouvre en me demandant un commentaire éventuel et une fois celui-ci saisi

    • cela mette automatiquement la date du jour dans le champ date1.0.0
    • cela remplisse le champ evenement1.0.0 par le choix fait dans le menu motif1
    • cela saisisse le commentaire dans le champ commentaire1.0.0
    • cela réinitialise le champ motif.1

    Lors d’une autre saisie pour le même élève, cela remplisse la ligne d’en dessous (date1.1.0 ; evenement1.1.0 et commentaire 1.1.0)

    Lorsque la 1ère colonne est pleine, alors cela remplisse les champs date1.0.1 ; evenement1.0.1 et commentaire 1.0.1

    Puis les lignes d’en dessous.

    L’idée est d’avoir un bilan de ce que produit un élève en terme de travail mais aussi un bilan de son comportement.

    Il y a des choses que je sais faire, je vais essayer mais sur ce genre de document, j’ai tendance à avoir des scripts assez lourds qui ralentissent la validation.

    Merci

     

    • Ce sujet a été modifié le il y a 1 année et 7 mois par michel c..
    Attachments:
    You must be logged in to view attached files.
Affichage de 14 réponses de 1 à 14 (sur un total de 14)
  • Auteur
    Réponses
  • #71541
    bebarth
    Maître des clés

    bonjour,
    Voici, je te laisse étudier…
    https://we.tl/t-j2iIATXTHI

    @+
    😎

    • Cette réponse a été modifiée le il y a 1 année et 7 mois par bebarth.
    #71546
    michel c.
    Participant

    Super, merci beaucoup. Pas sur que j’y sois arrivé tout seul. Sinon, j’aurais mis beaucoup plus de temps pour un résultat qui aurait ressemblé à une usine à gaz.

    Il va me falloir du temps pour bien comprendre tout ton script.

    J’ai apporté quelques petites modifs et j’ai constaté que l’alerte quand la fiche est pleine ne fonctionne pas.

    Je vais essayer de trouver pourquoi mais je ne suis pas sur d’y arriver tout de suite…

     

    • Cette réponse a été modifiée le il y a 1 année et 7 mois par michel c..
    Attachments:
    You must be logged in to view attached files.
    #71550
    michel c.
    Participant

    J’ai l’impression que le problème vient du catch(e) {...

    dans la fonction remplissage

    Je ne maitrise pas du tout ça mais je crois comprendre cela sert à gérer une erreur, or je ne suis pas sûr que la boucle for précédente génère une erreur si tous les champs sont remplis.

    J’ai essayé de remplacer cela par une condition mais pour l’instant je n’y arrive pas.

    J’ai inséré if (this.getField("evenement1.31.1").value != "") {
    app.alert("La fiche de l'élève "+leNom+" est pleine.",3);

    à la place juste pour tester avec la fiche bilan de l’élève 1 mais ça ne fonctionne pas.

    Attachments:
    You must be logged in to view attached files.
    #71552
    bebarth
    Maître des clés

    bonjour,
    En fait, il faut provoquer une erreur pour que le message s’affiche. Pour la deuxième boucle il faut donc mettre i<=32 (au lieu de i<32).
    Le mieux aurait été de n’avoir qu’une seule boucle !

    Par contre, je n’avais pas vérifier mais lorsqu’on valide plusieurs fois la fenêtre de réponse s’affiche plusieurs fois ! Je ne vois pas pourquoi… J’essaie de regarder dans la journée.

    @+
    😎

    #71670
    michel c.
    Participant

    Je viens de tester un truc mais qui n’est pas complètement satisfaisant :

    J’ai mis en calcul pour le dernier champ de date (date1.31.1) : celui de l’élève 1 (je ne l’ai pas fait pour tous les élèves) le script suivant

    if (this.event.value != "") {app.alert({cMsg:"Attention, liste pleine. L'entrée ne peut être saisie", nIcon:3});
    this.event.value = "";
    this.getField("evenement1.31.1").value = "";
    this.getField("commentaire1.31.1").value = "";
    }

    Du coup la date ne se remplit pas mais par contre cela n’efface pas les champs evenement1.31.1 et commentaire1.31.1 jouxtant le champ date.

    Je suppose que l’on peut intégrer cela au script remplissage mais je bloque un peu.

    De plus je me demandais si c’était possible de saisir le nombre d’élèves (n) de la classe sur la 1ère page et de ne rendre imprimable que les n pages correspondantes via un bouton imprimer. (Pour éviter d’imprimer des pages non utilisées).

    Merci

    • Cette réponse a été modifiée le il y a 1 année et 6 mois par michel c..
    Attachments:
    You must be logged in to view attached files.
    #71677
    Merlin
    Maître des clés

    Je n’ai pas suivi le développement de ce projet mais une faute m’a sauté aux yeux (attention aux moqueries des élèves) il s’agit du bouton :

    RETOUR ACCUEIL (et non pas Retour Acceuil)

    😉

    #71681
    michel c.
    Participant

    Oups

    #71684
    michel c.
    Participant

    Je viens de tenter de modifier le script remplissage par celui-ci :

    function remplissage(indice){
    var leNom=this.getField(“goto.”+indice).value;
    var leMotif=this.getField(“motif.”+indice).value;
    var laDate=util.printd(“dd/mm/yyyy”,new Date());
    if (leNom!=”” && leMotif!=”-“) {
    var commentaire=app.response({
    cTitle: “COMMENTAIRE”,
    cQuestion: “Commentaire du “+laDate+” pour le motif : \””+leMotif+”\”.”,
    cDefault: “Sans commentaire !”,
    cLabel: “Élève : “+leNom
    });
    if (commentaire!=null) {
    try {
    var OK=0;
    for (var i=0; i<32; i++) {
    if (this.getField(“date”+indice+”.”+i+”.0″).value==””) {
    this.getField(“date”+indice+”.”+i+”.0″).value=laDate;
    this.getField(“evenement”+indice+”.”+i+”.0″).value=leMotif;
    this.getField(“commentaire”+indice+”.”+i+”.0″).value=commentaire;
    OK++;
    break;}
    if (this.getField(“date”+indice+”.”+i+”.0″).value!=””) {
    app.alert({cMsg:”Attention, liste pleine. L’entrée ne peut être saisie”, nIcon:3});
    // this.getField(“date”+indice+”.”+i+”.0″).value=””;
    //this.getField(“evenement”+indice+”.”+i+”.0″).value=””;
    //this.getField(“commentaire”+indice+”.”+i+”.0″).value=””;
    OK++;
    break;}

    }
    if (!OK) {
    for (var i=0; i<32; i++) {
    if (this.getField(“date”+indice+”.”+i+”.1″).value==””) {
    this.getField(“date”+indice+”.”+i+”.1″).value=laDate;
    this.getField(“evenement”+indice+”.”+i+”.1″).value=leMotif;
    this.getField(“commentaire”+indice+”.”+i+”.1″).value=commentaire;
    break;
    }
    }
    }
    } catch(e) {
    app.alert(“La fiche de l’élève “+leNom+” est pleine.”,3);
    }
    };
    }
    }

     

    Mais ça ne fonctionne pas…

    #71687
    bebarth
    Maître des clés

    bonjour,
    Première chose, ça ne sert à rien d’écrire this.event.value (ou autre) car event ne fonctionne qu’avec le document actif (this). Il suffit donc d’écrire event.value.

    Deuxièmement je ne comprend pas bien ce que tu veux faire !
    if (event.value != "")  {app.alert({cMsg:"Attention, liste pleine. L'entrée ne peut être saisie", nIcon:3});
    this.event.value = "";
    this.getField("evenement1.31.1").value = "";
    this.getField("commentaire1.31.1").value = "";
    }
    signifie que si le champ n’est pas vide tu affiches ton message puis tu vide ce champ plus les deux autres ! Ça ne me parait pas trop logique… Tu pourrais n’avoir que le message ou demander si on veut ou pas effacer la ligne…

    Ça ne fonctionne pas, je n’ai pas étudié exactement le pourquoi, mais ça commence à faire une sacrée usine à gaz et il doit certainement y avoir redondance dans l’exécution des scripts.

    @+
    😎

    #71690
    michel c.
    Participant

    J’ai supprimé ce script dans la dernière version (j’avais juste posté le code mais pas le ficher).

    Mais ça a l’air de marcher.

    Attachments:
    You must be logged in to view attached files.
    #71697
    michel c.
    Participant

    Le truc que je ne comprend pas c’est que lorsqu’une fiche est pleine (par exemple celle de l’élève 1), si j’ajoute un évènement à la fiche de l’élève 3 (qui n’est pas pleine), le message qui me sera délivré est “attention, la fiche de l’élève 3 est pleine”….

    Attachments:
    You must be logged in to view attached files.
    #71700
    michel c.
    Participant

    J’avance un peu sur cette usine à gaz.

    J’ai réussi à intégrer l’alerte quand une fiche est pleine. Seul problème : l’alerte s’affiche aussi lorsque l’on complète une autre fiche qui elle ne l’est pas.

    J’ai également essayé d’intégrer une alerte lorsque l’utilisateur ne saisit aucun motif avec cette ligne : if (leMotif==””){app.alert(“Veuillez saisir un motif”,3);}

    Ca fonctionne mal : l’alerte s’affiche aussi  lorsque l’on clique sur annuler ou alors, malgré l’alerte l’événement est saisi sur la fiche avec un motif non rempli (il faudrait que je trouve un moyen de stopper l’exécution du script) et par contre, un truc très bizarre, l’alerte n’apparait pas du tout pour l’élève 2. Pourquoi ???

    Attachments:
    You must be logged in to view attached files.
    #71766
    michel c.
    Participant

    Je pense avoir trouvé.

    #71771
    Merlin
    Maître des clés

    👍

Affichage de 14 réponses de 1 à 14 (sur un total de 14)
  • Vous devez être connecté pour répondre à ce sujet.