Donnez vie à vos documents numériques !
 

Mise en forme conditionnelle (couleur) de plusieurs champs

abracadabraPDF Forums PDF – Général Mise en forme conditionnelle (couleur) de plusieurs champs

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #46428
    Prop0f0L
    Participant

    Bonjour, tout d’abord merci pour l’existence de ce forum qui m’a déjà beaucoup appris  :extra:

    J’utilise Adobe Acrobat Pro, et je cherche à écrire un script qui, lorsqu’on appuie sur un bouton, effectue une mise en forme conditionnelle à de nombreux champs sur mon document.

    Je m’explique :
    j’ai 256 champ de formulaire sous forme de liste déroulante avec comme choix “0”, “1”, “2” et “3”. Chaque champ est nommé respectivement “quantité1”, “quantité2”, “quantité3″…. “quantité256”.
    J’aimerai que l’aspect des champs contenant “0” et “3”, ne soit pas modifié, et que ceux contenant “1” ou “2” aient une couleur de fond jaune pâle.

    J’ai déjà bricolé ce code (peut-être farfelu mais qui fonctionne :doute: ) permettant d’appliquer cela, mais à un seul champ :

    f = this.getField(“quantité1”);
    var mf = this.getField(“quantité1”) ;
    if (mf.value > 0 && mf.value < 3)
    f.fillColor = [“RGB”, 1, 0.92, 0.65] ;
    else {
    f.fillColor = [“T”] ;
    }

    Comment faire pour qu’en à peine quelques lignes, le code comprenne que je fais référence à tous les champs nommés “quantité(chiffre)” afin que les 256 champs soient traités ?
    Merci beaucoup pour votre aide :jerisjaune:

    Bonne journée,

    Yohan

Affichage de 7 réponses de 1 à 7 (sur un total de 7)
  • Auteur
    Réponses
  • #68189
    bebarth
    Maître des clés

    bonjour,
    A part te dire que nom des champs ne doivent pas contenir de caractères accentués, c’était presque ça !

    Code:
    for (var i=1; i<=256; i++) {
        var mf = this.getField(“quantité”+i) ;
        if (mf.value > 0 && mf.value < 3) f.fillColor = ["RGB", 1, 0.92, 0.65] ;
        else f.fillColor = [“T”] ;
    }

    @+
    :bonjour:

    #68190
    Prop0f0L
    Participant

    Merci beaucoup pour votre réponse rapide !
    Vous venez de participer à la création d’un document qui va grandement faciliter le travail des infirmiers prenant en charge des patients Covid d’un service de réanimation.
    Alors merci de la part de toute l’équipe !  :bravo: :bonjour:

    #68191
    bebarth
    Maître des clés

    …et si je peux encore aider, ce sera avec plaisir.N’hésite pas à me demander.
    @+
    :bonjour:

    #68192
    Prop0f0L
    Participant

    Merci .. Alors si ce n’est pas abuser de votre aide, j’ai encore une demande  :priere:

    Ce serait pour un bouton “réinitialiser le formulaire”, j’ai vu qu’il n’y avait pas besoin de script car il existe la commande menu, mais j’aimerait une boite de dialogue demandant si “oui” ou “non” on souhaite vraiment réinitialiser le formulaire.

    Mais peut être dois-je créer un autre fil ?  :Smiley08:

    #68193
    bebarth
    Maître des clés

    A mettre en script d’action souris relâchée de ton bouton :

    Code:
    var resultatBouton=app.alert({
        cMsg: “Voulez-vous vraiment réinitialiser ce document ?”,
        cTitle: “Réinitialiser le formulaire”,
        nIcon: 2,
        nType: 2
    });
    if (resultatBouton==4) this.resetForm();

    @+
    :bonjour:

    #68194
    Prop0f0L
    Participant

    Bonjour Bebarth  :jerisjaune:

    Je reviens vers toi car le script que tu m’as confié ne fonctionne pas  :doute:
    Je n’ai aucun message d’erreur quand je valide le script, mais la mise en forme conditionnelle ne s’applique pas …
    J’ai bien vérifié que les noms des champs correspondent, et c’est bien le cas. Au passage je les ai renommés “nombre”.
    Ce qui me donne :

    for (var i=1; i<=256; i++) {    var mf = this.getField(“nombre”+i) ;    if (mf.value > 0 && mf.value < 3) f.fillColor = ["RGB", 1, 0.92, 0.65] ;    else f.fillColor = ["T"] ;}

    En revanche, avec la méthode “un part un” (sans variable), ça fonctionne…
    Une idée pour m’éclairer s’il te plait ?  :priere:
    Merci !

    #68195
    bebarth
    Maître des clés

    bonjour,
    Il y avait effectivement une erreur, il ne faut pas écrire f.fillColor, mais mf.fillColor (2 fois).
    Donc :

    Code:
    for (var i=1; i<=256; i++) {
        var mf = this.getField(“nombre”+i) ;
        if (mf.value > 0 && mf.value < 3) mf.fillColor = ["RGB", 1, 0.92, 0.65] ;
        else mf.fillColor = [“T”] ;
    }

    @+
    :bonjour:

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