Mise en forme conditionnelle (couleur) de plusieurs champs  (Lu 148 fois) Partager ce sujet Imprimer

1 B


Yohan  22 octobre 2020 : 00:56

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

IP archivée


bebarth  22 octobre 2020 : 07:41

bonjour,
A part te dire que nom des champs ne doivent pas contenir de caractères accentués, c'était presque ça !
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:

IP archivée


Yohan  22 octobre 2020 : 12:58

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:

IP archivée


bebarth  22 octobre 2020 : 13:35

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

IP archivée


Yohan  22 octobre 2020 : 13:53

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:

IP archivée


bebarth  22 octobre 2020 : 14:22

A mettre en script d'action souris relâchée de ton bouton :
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:

IP archivée


Yohan  25 octobre 2020 : 00:32

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 !

IP archivée


bebarth  25 octobre 2020 : 06:54

bonjour,
Il y avait effectivement une erreur, il ne faut pas écrire f.fillColor, mais mf.fillColor (2 fois).
Donc :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:

IP archivée