Toutes mes réponses sur les forums
-
AuteurRéponses
-
micka92Membre
Merci à vous pour votre aide. :bonjour: C’est vraiment “surprenant” que l’on ne puisse pas mieux protéger nos “créations”. Alors oui, le mot de passe d’ouverture permet de mieux bloquer le piratage, mais ce n’est pas concevable pour les supports que je crée de demander un mot de passe à chaque ouverture. Il y a trop d’interlocuteurs différents.
micka92MembreBonjour bebarth et merci pour tout. C’est très intéressant. Cela me permettra effectivement de brouiller les pistes pour des novices, même si bien souvent le “vol” de mes documents se fait simplement pour modifier le logo et le nom de l’entreprise, tout en gardant l’intelligence que j’y ai mise.
micka92MembreBonjour,
J’ai fait le test et effectivement, n’importe quel mot de passe de restrictions d’utilisateurs se fait sauter, même très complexes. C’est dingue ! Le mot de passe d’ouverture du fichier le protège bien contre ces sites, mais ce n’est pas possible dans mon cas. Les formulaires sont renseignés plusieurs fois par jour, transmis à des clients, collègues etc, et il n’est donc pas concevable d’y mettre un mot de passe d’ouverture. :oh:
micka92MembreBonsoir Merlin,
Je veux principalement protéger mes scripts. En effet, dans le cadre de mon travail, je me suis fait voler un long travail de plusieurs mois par des entreprises concurrentes. A l’avenir, j’aimerais pouvoir protéger, si possible, mes scripts. Qu’on me vole le modèle, tant pis, mais pas l’intelligence mise dans les formulaires.
micka92MembreDans mon script réel, il n’y a pas de redondance avec “numero”. C’était juste pour mon exemple. Et j’ai également supprimé les caractères spéciaux dans mon message pour voir si cela changeait quelque chose.
micka92MembreSavez-vous s’il est possible d’écrire le code ci-après d’une autre manière ? En effet, celui-ci fonctionne bien sur PC mais pas sur tablette (PDF Expert). Je sais qu’il existe une section dédiée à la mobilité mais comme elle est peu utilisée… Mon but est simplement de savoir si ce script peut être codé différemment. Sinon, j’en déduirai que la fonction n’est pas supportée sur PDF Expert.
Code:var Numero=app.response({
cQuestion: “Indiquez ici le numero souhaite.”,
cTitle: “Numero souhaite”,
cLabel: “Numero souhaite :”,
cDefault: “”,
});this.getField(“numero”).value=Numero;
micka92MembreMerci à vous deux pour votre aide précieuse ! :bonjour:
micka92MembreA force d’abnégation et avec une tête un tant soit peu reposée, j’ai trouvé la solution à mon problème :
Code:for (var i = 0; i < this.numFields; i++)
{
var f = this.getNthFieldName(i);
if ((f.substring(0,7) == “facture”))
{this.getField(f).readonly = false;}
}micka92MembreUn génie ce Merlin je vous dis, un gééénie ! :bravo:
Mille mercis, comme d’habitude, tu es très serviable, compétent, et réactif ! :bonjour:
micka92MembreMerci bebarth ! Toujours au top comme d’habitude ! :bonjour:
micka92MembreMerci à vous deux.
micka92Membrebonjour,
…et tu ne peux vraiment pas partager un semblant de fichier qu’on pourrait étudier pour mieux comprendre ? parce que je pense déjà avoir répondu à ça !!!
@+
:bonjour:En gros, j’aimerais remplacer ma partie du script où je déclare ma table par quelques lignes qui iraient chercher les valeurs dans le champ c_liste.
micka92Membrebonsoir,Comment est généré le script et comment est-il lancé ??? Si la table est uniquement dans le script et qu’elle n’est pas affichée dans un champ, il n’est pas possible de la récupérer. Pour des raison de sécurité il n’est pas possible de modifier un script via un autre script. Par contre, on peut supprimer un script et en re-créer un autre !
Je ne sais pas si cela répond à ta question…
@+
:bonjour:Le script est lancé à l’ouverture du fichier. Mon but serait de la remplacer par quelques lignes qui iraient chercher les valeurs dans un champ. En fait, sur ma précédente demande, j’ai bien compris le concept de découper des chaînes grâce au saut à la ligne, puis sur chaque chaîne de récupérer des valeurs grâce à la fonction split. Là en gros, je pense que le principe est le même, sauf que ma table ListeVoiture a ses variables qui s’appellent “marque”, “modele” et “vente”. En gros, j’essaie de récupérer avec une boucle les valeurs 0, 1 et 2 de mon champ texte, pour qu’elles prennent place dans les valeurs précitées.
micka92MembreBonsoir,
Je vais essayer d’être clair. Toute la partie récupération des données dans une liste déroulante, affichage des valeurs correspondantes dans des champs texte et tout est déjà géré.
Le seul point que j’aimerais améliorer, est le fait que mon tableau de valeurs est actuellement déclaré dans mon script en dur, donc non modifiable par le commun des mortels :
Code:ListeVoiture[0]={marque:”RENAULT”,modele:”Clio”,vente:1500};
ListeVoiture[1]={marque:”PEUGEOT”,modele:”208″,vente:500};
ListeVoiture[2]={marque:”CITROEN”,modele:”C3″,vente:800};
ListeVoiture[3]={marque:”TOYOTA”,modele:”Yaris”,vente:150};
ListeVoiture[4]={marque:”MAZDA”,modele:”2″,vente:80};Je me demandais simplement s’il était possible de remplacer cette partie du script, par quelques lignes qui iraient chercher les données dans un champ texte de la forme :
RENAULT|Clio|1500
PEUGEOT|208|500
CITROEN|C3|800
TOYOTA|Yaris|150
MAZDA|2|80En gros, il faudrait que je puisse récréer mon tableau de valeurs ListeVoiture, mais d’après un champ texte. Ainsi, si la liste évolue, elle peut être mise à jour via un simple copier-coller, par un quelconque utilisateur, sans avoir à rentrer dans le code.
Pour des raisons de confidentialité, je ne peux pas malheureusement pas déposer de fichier ici.
Désolé pour les incompréhensions. :Smiley11:
Bon, j’ai dû manquer de clarté ! :jerisjaune:
micka92MembreBonsoir,
Je vais essayer d’être clair. Toute la partie récupération des données dans une liste déroulante, affichage des valeurs correspondantes dans des champs texte et tout est déjà géré.
Le seul point que j’aimerais améliorer, est le fait que mon tableau de valeurs est actuellement déclaré dans mon script en dur, donc non modifiable par le commun des mortels :
Code:ListeVoiture[0]={marque:”RENAULT”,modele:”Clio”,vente:1500};
ListeVoiture[1]={marque:”PEUGEOT”,modele:”208″,vente:500};
ListeVoiture[2]={marque:”CITROEN”,modele:”C3″,vente:800};
ListeVoiture[3]={marque:”TOYOTA”,modele:”Yaris”,vente:150};
ListeVoiture[4]={marque:”MAZDA”,modele:”2″,vente:80};Je me demandais simplement s’il était possible de remplacer cette partie du script, par quelques lignes qui iraient chercher les données dans un champ texte de la forme :
RENAULT|Clio|1500
PEUGEOT|208|500
CITROEN|C3|800
TOYOTA|Yaris|150
MAZDA|2|80En gros, il faudrait que je puisse récréer mon tableau de valeurs ListeVoiture, mais d’après un champ texte. Ainsi, si la liste évolue, elle peut être mise à jour via un simple copier-coller, par un quelconque utilisateur, sans avoir à rentrer dans le code.
Pour des raisons de confidentialité, je ne peux pas malheureusement pas déposer de fichier ici.
Désolé pour les incompréhensions. :Smiley11:
micka92MembreJ’ai essayé de remplacer mon script :
Code:ListeVoiture[0]={marque:”RENAULT”,modele:”Clio”,vente:1500};
ListeVoiture[1]={marque:”PEUGEOT”,modele:”208″,vente:500};
ListeVoiture[2]={marque:”CITROEN”,modele:”C3″,vente:800};
ListeVoiture[3]={marque:”TOYOTA”,modele:”Yaris”,vente:150};
ListeVoiture[4]={marque:”MAZDA”,modele:”2″,vente:80};par
Code:var lesValeurs = this.getField(“Liste”).value;
var laChaine = lesValeurs.split(“u000D”);
for (var i=0; i{
var laValeur=laChaine.split(“|”);
ListeVoiture={marque:laChaine.laValeur[0],modele:laChaine.laValeur[1],vente:laChaine.laValeur[2]}
}Mais ça ne fonctionne pas.
micka92Membrebonsoir,
Il y avait plusieurs façons d’envisager le problème. Celle que j’utilise est certainement la plus simple :Code:var lesValeurs=this.getField(“listeOriginale”).value;
var laChaine=lesValeurs.split(“u000D”);
var Resultat=””;
for (var i=0; ivar laLigne=laChaine;
var n1=laLigne.indexOf(“[“);
var n2=laLigne.indexOf(“]={marque:””);
var n3=laLigne.indexOf(“”,modele:””);
var n4=laLigne.indexOf(“”,vente:””);
var Indice=laLigne.slice(n1+1,n2);
var Marque=laLigne.slice(n2+11,n3);
var Modele=laLigne.slice(n3+10,n4);
var Vente=laLigne.slice(n4+9,laLigne.length-2);
var Resultat=Resultat+Indice+”|”+Marque+”|”+Modele+”|”+Vente;
if (i!=laChaine.length-1) var Resultat=Resultat+”u000D”;
}
this.getField(“listeFinale”).value=Resultat;Je te laisse étudier ce script et si tu ne le comprends pas, tu demandes !
Dans le fichier joint je t’ai mis l’action dans un bouton qui affiche le résulat si le champ est vide ou qui vide le champ s’il y a déjà un résultat…
Je ne sais pas comment tu veux déclencher le script.
@+
:bonjour:Super bebarth, ton script va déjà beaucoup m’aider pour retranscrire mon morceau de script qui fait une centaine de lignes vers le format que je veux, et pour plus tard aussi. :bravo:
Par contre, du coup, comment est-ce que je peux récupérer ces données Valeur1|Valeur2|Valeur3 pour qu’elles prennent la place de ListeVoiture={marque,modele,vente} ? En gros, j’aimerais supprimer ma partie fixe de mon script, pour qu’il vienne plutôt récupérer les valeurs dans un champ texte Valeur1|Valeur2|Valeur3. Plutôt que de créer un tableau de valeur en dur dans mon script, donc non modifiable par les utilisateurs, j’aimerais pouvoir leur donner la possibilité d’initialiser eux-mêmes leur propre tableau de valeur, simplement en renseignant un champ sous la forme Valeur1|Valeur2|Valeur3 (Désolé si je ne m’exprime pas bien… :priere: )
micka92Membrebonsoir,
A mettre en script d’action champ désactivé :Code:var lesValeurs = this.event.target.value;
var laChaine = lesValeurs.split(“u000D”);
eval(laChaine[laChaine.length-1]);
this.getField(“Marque”).value=ListeVoiture.marque;
this.getField(“Modele”).value=ListeVoiture.modele;
this.getField(“Vente”).value=ListeVoiture.vente;Par contre, pour les valeurs “vente” il y a un soucis… il doit y avoir soit 2 guillemets, soit aucun. Comme ce sont des nombre je n’en ai mis aucun dans le fichier.
Si tu récupères les données avec un seul guillemet, il faudrait écrire quelques lignes pour le supprimer !
@+
:bonjour:Merci bebarth et Merlin, grâce à vous, mon formulaire touche presque à sa fin.
Il n’y a vraiment que ma partie script que j’aimerais rendre personnalisable que je n’arrive à pas mettre en oeuvre. Il est en dur sous la forme :
Code:ListeVoiture[0]={marque:”RENAULT”,modele:”Clio”,vente:”1500};
ListeVoiture[1]={marque:”PEUGEOT”,modele:”208″,vente:”500};
ListeVoiture[2]={marque:”CITROEN”,modele:”C3″,vente:”800};
ListeVoiture[3]={marque:”TOYOTA”,modele:”Yaris”,vente:”150};
ListeVoiture[4]={marque:”MAZDA”,modele:”2″,vente:”80};La liste s’initialise à l’ouverture du PDF, les valeurs marque alimentent une liste déroulante, et les valeurs modèles et ventes des champs textes
J’aimerais mettre dans un champ texte les variables comme ci-après :
0|RENAULT|Clio|1500
1|PEUGEOT|208|500
2|CITROEN|C3|800
3|TOYOTA|Yaris|150
4|MAZDA|2|80Et donc remplacer mon script en dur par un code qui viendrait récupérer les variables dans ce champ texte tant qu’il y a des lignes plutôt que de les avoir en dur dans mon script.
micka92MembreDu coup, j’ai ptet mal compris.
Je déclare ma variable grâce à mon champ texte contenant mon de script ? Mais ensuite, comment je code pour qu’elle s’exécute ?
micka92Membrebonjour,
Tes questions sont certainement très claires dans ta tête, mais personnellement je ne vois pas quel est ton problème… le fichier Doc 1.pdf que tu as partagé me parait correct et je ne vois pas pourquoi tu as besoin que la valeur d’exportation soit identique à la valeur sélectionnée. Si tu as besoin de cette valeur, tu peux la récupérer comme tu l’as justement fait dans ton champ “Fournisseur”.
En ce qui concerne ta dernière demande, c’est plus simple :Code:// Liste en souris enfoncée
this.getField(“Liste”).clearItems();
var lesValeurs = this.getField(“champTexte”).value;
var laChaine = lesValeurs.split(“u000D”);
for (var i=0; ivar laValeur=laChaine.split(“|”);
this.getField(“Liste”).insertItemAt(laValeur[0],laValeur[0],i);
}// Nom
var indice =this.getField(“Liste”).currentValueIndices;
var laValeur=laChaine[indice].split(“|”);
this.event.target.value=laValeur[0];// Prenom
this.event.target.value=laValeur[1];// Age
this.event.target.value=laValeur[2];@+
:bonjour:Merci pour le retour. Oui, effectivement, cela me semble clair dans ma tête, mais c’est difficile à exprimer.
En fait, j’ai besoin que mes valeurs d’exportation soient identiques aux valeurs des éléments de mes listes déroulantes car derrière, il y a tout un process qui travaille d’après ces valeurs, et le nom des champs. Et ces process ne peuvent pas être modifiés. Voilà pourquoi.
micka92MembreBonjour.
Oui.
En JavaScript c’est le dernier qui a parlé qui a raison.
Du coup, il suffit de re-déclarer la variable ListeVoiture à la suite du script existant et le tour est joué.
:Smiley15:Du coup,
Code:var ListeVoiture = this.getField(“script”).value;?
micka92MembreDu coup, comment écrire un script pour qu’à partir de ma liste déroulante, je peux afficher une donnée dans un champ texte ?
Mon champ de données :
Nom1|Prénom1|Age1
Nom2|Prénom2|Age2Ma liste déroulante s’incrémente grâce au script de bebarth, mais avec en valeur élément et valeur d’exportation Nom1, Nom2…
Je ne sais pas comment écrire un script pour récupérer sur un champ texte la valeur Prénomx ou Agex en fonction du choix de ma liste déroulante. J’ai bien compris le script qui découpe le champ de données ligne par ligne, puis dans chaque ligne par chaque séparateur | mais je n’arrive pas à mettre la donnée souhaitée dans un champ texte directement depuis le champ de données, et non depuis la valeur d’exportation de la liste déroulante proposée par bebarth.
micka92Membre…et ça ne te serait pas possible de mettre tes données dans un fichier attaché ?
@+
:bonjour:Non pas possible car utilisé sur des tablettes.
micka92Membrebonjour,
Désolé, mais je ne comprends plus bien ce que tu veux faire exactement !
Les valeurs d’exportations de ta liste alimentent ton champ “Valeur” donc elles ne peuvent pas correspondre aux valeurs de la liste.
Il faut peut-être traiter le problème différemment si c’est ça.
@+
:bonjour:Je m’explique : quand je crée une simple liste déroulante, avec des valeurs Fournisseur1, Fournisseur2, Fournisseur3 etc, je mets également ces données comme valeurs d’exportation (cf. PJ).
Dans ta macro, tu mets en valeur d’exportation toutes mes données séparées par les #. Du coup, si je dois traiter un export de données plus tard, je verrai apparaître Adresse1#CP1#VILLE1… et non Fournisseur1.
micka92MembreGrâce à notre ami bebarth, j’ai ENFIN réussi à produire ce que je voulais (cf. ci-joint).
Bon, le seul “problème”, c’est que je n’ai pas réussi à modifier les scripts pour ne pas avoir à travailler depuis les valeurs d’exportation de ma liste déroulante. Je m’explique, le script affiche ma chaîne de caractères avant “|” en valeur élément de ma liste déroulante, et la chaîne de caractères complète après “|” s’incrémente en valeur d’exportation. Du coup, tous les autres scripts récupère les données depuis la valeur d’exportation. C’est super, et cela fonctionne, mais il m’aurait fallu avoir pour valeur d’exportation la valeur élément (exemple : Fournisseur1/Fournisseur1). Mais n’arrivant pas à modifier le script en conséquence, j’ai abandonné l’idée.
Néanmoins, je reste preneur d’une solution…
-
AuteurRéponses