Toutes mes réponses sur les forums
-
AuteurRéponses
-
michel c.
ParticipantMerci, je viens de tester et effectivement, le script est beaucoup plus rapide !
michel c.
ParticipantJ’ai fait ça, je ne sais pas si c’est ce que tu souhaitais.
Attachments:
You must be logged in to view attached files.michel c.
ParticipantJe viens de réussir comme un grand.
var x1 = this.mouseX;
var y1 = this.mouseY;
var x2 = x1+45;
var y2 = y1+18;
this.getField("info."+P2).rect = [x1, y1, x2, y2];
this.getField("info."+P2).display = display.visible;
-
Cette réponse a été modifiée le il y a 3 semaines et 6 jours par
michel c..
Attachments:
You must be logged in to view attached files.michel c.
ParticipantMerci, je vais faire comme ça.
Est il possible que le champ en question s’affiche à l’endroit ou se trouve le pointeur de la souris?
En pièce jointe mon fichier
Merci
Attachments:
You must be logged in to view attached files.michel c.
ParticipantMerci beaucoup, j’ai pu faire ce que je voulais et j’ai gagné beaucoup de temps …
michel c.
ParticipantEffectivement, le 1er indice (a) des noms de boutons LinkT.a.b n’est pas le même sur chaque page.
michel c.
ParticipantEn tout cas, c’est déjà super. Ça me fait gagner un temps fou.
Merci beaucoup
michel c.
ParticipantMerci beaucoup, c’est impec !
michel c.
ParticipantNon, mon script n’est pas bon, je viens de mettre ça en fonction et j’ai modifié les scripts ainsi mais ça ne fonctionne pas…
Je ne vois pas ou ça coince…
function addLink(a) {
var nomBoutons=[];
for (var k=0; k<10; k++) nomBoutons.push(this.getField("LinkT."+a+"."+k).buttonGetCaption());
for (var k=0; k<10; k++) {
if (this.getField("LinkT."+a+"."+k).buttonGetCaption()=="...") break;
}
if (k==10) app.alert("Tous les boutons renvoient à une URL.",3);
//
var bDialogue={
initialize: function(bDialogue) {
this.cbInit=true;
bDialogue.enable({url0: true});
this.loadDefaults(bDialogue);
},
loadDefaults: function(bDialogue) {
bDialogue.load({
cb00: false,
rd00: true,
url0: "http://www.",
});
bDialogue.insertEntryInList({"menu":{"- Indices -": 0}});
bDialogue.insertSeparatorEntryInList("menu");
for (var i=0; i<10; i++) {
if (i!=k) var par=-1;
else var par=1;
eval("bDialogue.insertEntryInList({\"menu\":{\""+i+"\": "+(par*(i+1))+"}});");
}
},
cb00: function(bDialogue) {
this.cbInit=!this.cbInit;
bDialogue.enable({init: this.cbInit});
},
quelBtRd: function (oRslt) {
for (var i=0; i<=1; i++) {
if (oRslt["rd0"+i]) {
switch (i) {
case 0:
resBtRd="Non";
break;
case 1:
resBtRd="Oui";
}
}
};
return resBtRd;
},
validate: function(bDialogue) {
var oRslt=bDialogue.store();
var elements=bDialogue.store()["menu"];
for (var i in elements) {
if (elements>0) indice=i;
}
if (indice=="- Indices -") {
app.alert("Veuillez sélectionner l'indice d'un champ;.",3);
return false;
} else {
initialiser=oRslt["cb00"];
if (initialiser) {
texteBouton="...";
texteURL="";
return true;
} else {
texteBouton=oRslt["nmbt"];
var testOK0=true;
if (!/^(\w|\W)+( (\w|\W)+)*$/.test(texteBouton)) var testOK0=false;
if (!testOK0) app.alert("Veuillez indiquer un nom pour le bouton.",3);
var testOK1=true;
texteURL=oRslt["url0"];
if (!/^(https?:\/\/)?([\w-]+(\.[\w-]+)+)(:\d+)?(\/[^\s]*)?$/i.test(texteURL)) var testOK1=false;
if (!testOK1) app.alert("Veuillez renseigner une URL correcte.",3);
cAc=this.quelBtRd(oRslt);
if (nomBoutons[indice]!="...") {
if (cAc=="Non") {
app.alert("Le bouton d'indice \""+indice+"\" est déjà renseigné.",3);
return false;
} else {
var reponse=app.alert("Le bouton d'indice \""+indice+"\" est déjà renseigné.\rSouhaitez-vous réellement le modifier ?",3,2);
if (reponse==3) return false;
}
}
var testOK=testOK0 && testOK1;
return testOK;
}
}
},
description: {
name: "Bouton vers URL",
first_tab: "cb00",
elements: [
{
type: "cluster", //
elements: [
{
type: "static_text",
name: "Indice du bouton",
font: "dialog",
bold: true,
},
{
type: "popup",
item_id: "menu",
alignment: "align_fill",
//width: 150,
},
{
type: "check_box",
alignment: "align_center",
item_id: "cb00",
name: " Réinitialiser le bouton",
},
{
type: "gap",
height: 5
},
{
type: "cluster",
item_id: "init",
elements: [
{
type: "static_text",
name: "Texte pour le bouton",
font: "dialog",
bold: true,
},
{
type: "edit_text",
item_id: "nmbt",
alignment: "align_fill",
},
{
type: "gap",
height: 5
},
{
type: "static_text",
name: "URL à atteindre",
font: "dialog",
bold: true,
},
{
type: "edit_text",
item_id: "url0",
alignment: "align_fill",
},
{
type: "gap",
height: 5
},
{
type: "static_text",
name: "Modifier le bouton si renseigné ?",
font: "dialog",
bold: true,
},
{
type: "view",
alignment: "align_center",
align_children: "align_row",
elements: [
{
type: "radio",
group_id: "gr00",
item_id: "rd00",
name: " Non",
},
{
type: "radio",
group_id: "gr00",
item_id: "rd01",
name: " Oui",
},
]
},
]
},
{
type: "gap",
height: 5
},
{
type: "ok_cancel",
},
]
},
]
}
};
if("ok"==app.execDialog(bDialogue)){
if (initialiser) {
this.getField("LinkT.1."+indice).setAction("MouseUp","//");
this.getField("LinkT.1."+indice).buttonSetCaption("...");
this.getField("LinkT.1."+indice).fillColor=color.ltGray;
} else {
this.getField("LinkT.1."+indice).setAction("MouseUp","app.launchURL(\""+texteURL+"\");");
this.getField("LinkT.1."+indice).buttonSetCaption(texteBouton);
this.getField("LinkT.1."+indice).fillColor=color.green;
}
}
}
Attachments:
You must be logged in to view attached files.michel c.
ParticipantMerci mille fois, c’est super, ça fonctionne à merveille.
Je n’ai pas pdf expert mais pdf Xchange editor mais le premier fichier ne fonctionnait pas.
Je viens de faire une modif pour avoir plusieurs boutons qui ajoutent des liens sur des boutons ayant un premier indice différent.
J’ai l’impression que ça fonctionne bien
-
Cette réponse a été modifiée le il y a 1 mois par
michel c..
Attachments:
You must be logged in to view attached files.michel c.
ParticipantNon, je cherche encore, c’est plus complexe que je ne le pensais.
J’en suis à la phase ou je cherche des scripts sur le net et j’essaye de les décortiquer pour savoir comment les adapter.
Attachments:
You must be logged in to view attached files.michel c.
ParticipantSuper, merci. D’ici là je vais chercher pour voir si j’y arrive.
michel c.
ParticipantJe pense que j’ai réussi.
J’aimerais aussi pouvoir me passer des champs LaT.1 et NoLieT.1 et pouvoir saisir ces informations dans la même boite de dialogue que celle demandant le nom à afficher au bouton.
Je n’arrive pas à savoir comment faire pour avoir tout ceci dans la même boite de dialogue…
Merci
Attachments:
You must be logged in to view attached files.michel c.
ParticipantMerci beaucoup, je voulais savoir s’il était possible dans le cas ou une Url est déjà affectée à un bouton que la boite de dialogue demande si on veut écraser l’Url existante ou annuler?
Je vais commencer à réfléchir à ça. J’espère trouver avant la fin du week-end
michel c.
ParticipantMerci beaucoup, ça fonctionne très bien. J’aimerais savoir si on peut :
- lorsqu’on clique sur Ajouter le lien, avoir une boite de dialogue demandant le texte qui apparaîtra sur le bouton?
- Avoir les éléments de liste déroulante soient générés en fonction du dernier indice (b) des champs LinkT.a.b
- Avoir un message d’alerte si il y a déjà un lien associé au bouton pour éviter qu’il soit écrasé par erreur
Merci
Attachments:
You must be logged in to view attached files.michel c.
ParticipantMerci, ça fonctionne avec PDF XChange editor
michel c.
ParticipantJe viens de tester ceci, je pense que je ne suis pas loin…
var i = event.target.name.substr(6);
var j = this.getField("NoLien."+i).value;
var lien = this.getField("LaC."+i).value;
//ajouter le code permettant d'ouvrir le lien dont l'adresse
//est contenue dans le champ : this.getField("Links."+i+"."+j).value
this.getField("Links."+i+"."+j).setAction("MouseDown", app.launchURL(lien));
this.getField("LaC."+i).value == "";
Pour l’instant ça ne marche pas …
Attachments:
You must be logged in to view attached files.michel c.
ParticipantMerci mais je me suis mal exprimé et en plus le fichier joint n’a pas été lié.
En fait, je voudrais que lorsque je saisis un lien dans le champ Lien.i et que je sélectionne le numéro de lien dans le champ NoLien.i ; alors le lien saisi soit ajouté à une action souris basse sur le lien Links.i.j (ou j est la valeur d’export du champ NoLien.i)
Merci
Attachments:
You must be logged in to view attached files.michel c.
ParticipantMerci beaucoup…!
Tu m’as fait gagner de précieuses minutes qui auraient été très chiantes…
michel c.
ParticipantChez moi ça ne fonctionne pas, ça affichait la valeur précédemment sélectionnée dans le tableau.
J’ai fait une petite modif en ajoutant un bouton valider sous la liste déroulant (j’ai également remplacé le “ç” de perçage par un “c” dans le nom de champ).
Sinon, tu compte faire évoluer le formulaire pour que ça calcule les différents diamètres, hauteur de filet… ?
-
Cette réponse a été modifiée le il y a 1 mois et 2 semaines par
michel c..
Attachments:
You must be logged in to view attached files.michel c.
ParticipantMerci pour ce retour. Sur smartphone j’aurais besoin de feuilles de calculs assez simple mais nécessitant parfois de lignes de code.
Par exemple pour calculer des cotes en menuiserie (un de mes hobbies).
Pour l’instant ça passe avec du pdf mais parfois je tâtonne et je remplace des bouts de codes par d’autres jusqu’à ce que ça marche.
Et je me demandais si pour des applications simples qui tournent uniquement en local c’était complexe ou pas.
Sinon apparemment pour dart, si j’ai bien compris, en sortie on peut faire des appli pour Android et iPhone.
michel c.
ParticipantMerci beaucoup.
Et par miracle, y aurait-il une solution pour mettre un code différent dans chaque champ.
Par exemple un code qui serait :
this.getField(“Vol.INDICE”).value = this.getField(“JSerie.INDICE”).value * this.getField(“JReps.INDICE”).value * this.getField(“JCharge.INDICE”).value;
Que l’indice 0 soit mis en script de calcul du champ Vol.0
l’indice 1 soit mis en script de calcul du champ Vol.1 et ainsi de suite…
?
Le code précédent ne fonctionne pas sur smartphone…
J’ai testé pas mal de codes différents mais seul celui-ci semble fonctionner sous android.
Merci
michel c.
ParticipantBonsoir, j’ai essayé rapidement eZ pdf Reader et aucun script ne fonctionne alors qu’ils fonctionnaient avec adobe acrobat sous android.
Il y a peut être une option de sécurité à activer ou à désactiver…
Je regarderais plus en détail demain.
Merci
michel c.
ParticipantJe viens d’adapter un script trouvé sur le net.
ça fonctionne sous windows mais pas sous android :
var date = util.printd("yyyy.mm.dd", new Date());
var newFileName = date + "-nomdefichier.pdf";
// récuperer le chemin où se trouve actuellement le fichier
var filePath = this.path.replace(this.documentFileName, "");
// créer le nouveau chemin complet
var newFullFilePath = filePath + newFileName;
try {
this.saveAs(newFullFilePath);
} catch (e) {
app.alert("Erreur, l'enregistrement suivant est impossible : " + newFullFilePath);
}
michel c.
ParticipantJ’ai essayé ceci en action de frappe :
this.event.value = event.commitKey;
, mais les valeurs renvoyées sont 2 pour les touches enter et return et 1 pour les clics de souris…-
Cette réponse a été modifiée le il y a 1 mois et 2 semaines par
michel c..
-
Cette réponse a été modifiée le il y a 1 mois et 2 semaines par
michel c..
Attachments:
You must be logged in to view attached files.michel c.
ParticipantOui, je ne suis pas trop familier avec l’anglais, mais si je comprend bien, le mystère n’est pas éclairci…
Y-a-t-il un code qui permettrait d’afficher dans un champ la valeur correspondant à la touche qui a été pressée ?
-
Cette réponse a été modifiée le il y a 1 mois et 2 semaines par
michel c..
michel c.
ParticipantEffectivement, je n’avais pas répondu …
J’avais certainement cherché l’explication sans trouver de réponse. D’ailleurs je n’en trouve toujours pas….
Concernant ce code j’ai du le trouver sur un forum anglophone certainement.
michel c.
ParticipantJe vais faire avec …
@Merlin : Pour le paramètre nIcon, je vais m’en occuper, c’est le genre de truc que je vois à la fin.Merci pour tout !
michel c.
ParticipantSinon tu peux faire ça.
Est ce que c’est ce que tu voulais faire ?
Attachments:
You must be logged in to view attached files.michel c.
ParticipantPourtant avec ce fichier, ça fonctionne (il vient d’un ancien fil de discussion, d’ou mon
event.commitKey = 13
)Par contre si je met en action de format la ligne : if (event.commitKey = 13) Verif(); dans le champ Result pour le fichier sur les réductions de fractions, si la réponse saisie est bonne et que j’appuie sur la touche entrée, le message Bravo apparait dans la boite de dialogue, mais ça enchaine ensuite sur l’apparition de la boite de dialogue indiquant que la réponse saisie est incorrecte…
Attachments:
You must be logged in to view attached files.michel c.
ParticipantMerci beaucoup, je vais me pencher là dessus.
Concernant les scripts de documents, ils se trouvent dans l’onglet formulaires puis Document
Les scripts des différents champs et boutons se trouvent sur le volet de droite après avoir fait un clic droit puis propriété sur le champ voulu.
Il y a plusieurs rubriques pour ces scripts : Action ; valeur de format ; validation de la valeur et calcul de la valeur.
Avec la version gratuite du logiciel, je ne sais pas s’il est possible de modifier ces scripts par contre
Attachments:
You must be logged in to view attached files.michel c.
ParticipantCe n’est pas ce qu’a fait BB dans sa proposition ?
if (event.commitKey==2) Verif();
michel c.
ParticipantLa touche entrée ne marche pas. L’expression régulière marche nickel.
Je n’ai pas d’erreur à la console.
michel c.
ParticipantMerci beaucoup, ça fonctionne parfaitement avec adobe reader DC mais pas avec pdf XChange editor…
J’aimerais biens des commentaires pour les lignes 3 ; 4 ; 5 ; 8 et 9
Merci
michel c.
ParticipantRe-bonjour, toujours dans ce même script, pour gagner du temps, je voudrais que les élèves puissent valider par la touche entrée pour ne pas avoir à cliquer sur le bouton alors qu’ils ont les mains sur le clavier.
J’ai donc tenté de mettre en script sur le champ Result le code suivant :
if (event.commitKey = 13) Verif();
Mais ça fout vraiment le bazar
Je pense que c’est dû au fait qu’au moment ou j’appuie sur la touche entrée, la valeur ne ce champ est considérée comme non remplie…
Merci
michel c.
ParticipantBonjour, ça me fait penser à un truc, il serait possible d’avoir un script type feuille de style dans lequel on pourrait définir les couleurs, taille de police, type de police … en fonction du nom d’un champ…
ça me faciliterai la tâche pour mes cours…
michel c.
ParticipantÇa fonctionne à merveille, merci beaucoup !
Il ne me reste plus qu’à corriger les bugs, notamment revoir les modes de calculs des meilleurs scores.
Pour ceux que ça intéresse, le dernier fichier : LIEN
michel c.
Participantmichel c.
ParticipantBonjour, j’avais apporté des modifs au document mais je m’étais emmêlé les pinceaux. Voici une autre version avec moins de problèmes…
En gros, lors de la génération du numérateur et du dénominateur de façon aléatoire (script de document : hasard)
- j’aimerais ne pas avoir le dénominateur = au numérateur
- j’aimerais avoir une fraction qui est simplifiable, car trop souvent il n’y a rien à faire d’autre que de recopier la fraction.
Merci
michel c.
ParticipantJe n’utilise jamais chat GPT mais si j’ai un peu de temps je vais voir s’il est capable de sortir une liste exhaustive des duos et trios de lettres de ce type.
Je vais déjà commencer à réfléchir à un prompt…
28 février 2025 à 15:58 en réponse à : Générer des nombres se trouvant dans une table commune #75529michel c.
ParticipantJ’ai repris un script de BB pour générer 2 nombres aléatoires compris entre une valeur min et une valeur max.
Ce sont les valeurs qui apparaissent dans les champs Var.1.3 et Var.2.3
J’aimerais maintenant que ces valeurs générées aléatoirement le soient uniquement si elles ont un facteur commun….
Merci
-
Cette réponse a été modifiée le il y a 2 mois par
michel c..
michel c.
ParticipantSinon j’ai testé la version non censurée avec des élèves ce matin et ça s’avère terriblement efficace. En moins d’une heure, ils ont tous sans exception retenu les 3 formules, il faut encore un peu d’entrainement à certains pour extraire la longueur recherchée de l’équation mais ça sera vite réglé aussi.
Ce qui m’impressionne c’est leur persévérance lorsqu’ils travaillent sur ce type de formulaire. ça m’encourage à en faire davantage.
Je tenais à vous remercier car sans vous je ne serais jamais arrivé à faire ce que j’avais en tête.
En pièce jointe, une version fonctionnelle non censurée.
Ce n’est pas encore la version définitive, je vais retravailler les textes d’aide, peaufiner la mise en page, aplatir les traits et concocter une petite vidéo tuto.
-
Cette réponse a été modifiée le il y a 2 mois par
michel c..
-
Cette réponse a été modifiée le il y a 2 mois par
michel c..
-
Cette réponse a été modifiée le il y a 2 mois par
michel c..
Attachments:
You must be logged in to view attached files.michel c.
ParticipantJ’avais fait une recherche avec les duos et trios de lettres sur les plaques d’immatriculation. Le site sur lequel je suis tombé n’a pas fourni une liste exhaustive apparemment.
Au vu des nombreux exemples que tu donnes, je crois que je vais suivre ton conseil, sans quoi ça va être d’avoir une liste des duos et trios de lettres à bannir…
michel c.
ParticipantSinon et c’est peut être beaucoup plus simple, exclure les lettres P, N, O, R et W des lettres générées.
En faisant ça je n’aurait je pense aucun duo ou trio de lettres qui pose problème…
michel c.
ParticipantEn fait je me suis embarqué dans un truc qui me dépasse un peu.
J’essaye d’adapter 2 scripts que BB m’avait concocté pour un autre document mais j’avoue que je m’y perd un peu.
En gros, j’aimerais que lorsque je clique sur générer les questions sur la page2 du document :
- chaque ligne du champ entreeListe soit propulsée comme élément des listes Q.a.b (la valeur a sera prise dans le champ NQuest)
- que chaque champ Q.a.b ait comme action en “souris entre” : fillDropdown();
- que chaque champ Q.a.b ait comme “action de frappe” : if (!event.willCommit) {selection();}
- l’entrée 2 des champs Q.a.b soit propulsée comme valeur du champs R.a.1 (car l’entrée 1 est le symbole -)
- l’entrée 3 des champs Q.a.b soit propulsée comme valeur du champs R.a.2 et ainsi de suite
- Que soient retirées des entrées des listes Q.a.b les éléments déjà sélectionnés
- Le script qu’avait fait BB et que j’essaye d’adapter propulse dans les listes des valeurs différentes des éléments affichés mais je n’ai plus besoin de ça ici.
- Je n’ai plus besoin non plus d’avoir le tri des éléments ni le comptage des éléments dans les champs groupe.a.b
- Je n’ai plus besoin non plus des champs Group.a
En fait dans ce document, les élèves s’y perdent car ils ne savent plus quelles pièces ils ont déjà saisie…
J’essaye donc tant bien que mal à adapter ces scripts mais j’avoue que ça me donne du fil à retordre car je suis loin de maitriser chaque ligne de code…
Ce document comporte beaucoup de scripts, mais il n’y a que 2 scripts concernés : celui affecté au bouton generateur et le script de document Init
J’ai déjà apporté des modifications aux script initiaux avec plus ou moins de succès…
-
Cette réponse a été modifiée le il y a 2 mois par
michel c..
-
Cette réponse a été modifiée le il y a 2 mois par
michel c..
Attachments:
You must be logged in to view attached files.michel c.
ParticipantJ’ai placé le script dans generLettres, le script s’exécute mais les lettres ne changent pas…
Attachments:
You must be logged in to view attached files.michel c.
ParticipantConcrètement ça veut dire que :
- si la variable pointA == “P” alors les variables pointB et pointC doivent être différentes de S et de C
- si pointB == “P” alors pointC doit être différente de S et de C
- si (pointA == “F”|| pointA == “R”) alors les variables pointB et pointC doivent être différentes de N
- si (pointB == “F”|| pointB == “R”) alors la variables pointC doit être différente de N
……
-
Cette réponse a été modifiée le il y a 2 mois par
michel c..
michel c.
ParticipantOk, merci
Par contre, je rebondit sur ce sujet mais il n’est pas possible d’ajouter un script affectée à une action à plusieurs champs en même temps?
J’aimerais affecter le code : fillDropdown(); à 80 listes déroulantes et je suis obligé de le faire manuellement…
Merci
michel c.
ParticipantEn fait, ça peut être gênant surtout pour le champ Question.1.1 dont la valeur est la suivante par exemple pour le cas 1
var debutEnnonce = "Dans le triangle rectangle ci-contre, quelle formule utiliser pour calculer la longueur "
var milieuEnnonce = ", sachant que "
this.getField("Question.1.1").value = debutEnnonce +pointA+pointB+ milieuEnnonce + SymbAngle+" = "+angle+"° et "+pointA+pointC+" = "+donnee+" mm ?";
Comme les variables pointA ; pointB et pointC ont comme valeur des lettres prises aléatoirement, alors les permutations sont possibles je pense
par contre dans tous les cas, les couples de lettres cités dans le champ Question.1.1 ne peuvent être que
- pointA+pointB
- pointA+pointC
- pointB+pointC
michel c.
ParticipantÇà ne vient pas de là. c’est difficile de savoir d’où vient l’erreur, je n’ai pas de console sur le logiciel adobe…
Je l’ai fait tester par des élèves qui m’ont permis de corriger quelques erreurs sur mon fichier…
Il fonctionne très bien sur PDF XChange editor, sauf pour les duos ou trios de lettres interdites qui s’affichent quand même.
Attachments:
You must be logged in to view attached files.michel c.
ParticipantJe viens de trouver comme un grand :
var f = this.getField(“Dropdown.0”);
var a = f.currentValueIndices;
event.value = f.getItemAt(a, false);michel c.
ParticipantJe pense que c’est dans le script ChoixCas. Je viens de le modifier en mettant du texte en unicode. Je vais installer adobe en rentrant pour voir si ça vient de là. Si c’est ça, je finirai de modifier ce script en y mettant de l’unicode partout ou il faut.
Attachments:
You must be logged in to view attached files.michel c.
ParticipantC’est curieux, avec pdf XChange editor, je n’ai pas d’erreur à la console et les lettres sont bel et bien générées…
Je vais essayer de me pencher là dessus.
michel c.
ParticipantJe viens de m’apercevoir que ça m’a quand même généré le couple de lettre PQ malgré la ligne qui est censée l’exclure…
Attachments:
You must be logged in to view attached files.michel c.
ParticipantMerci, c’est parfait !
J’avais besoin de ce script pour finaliser un quiz interactif avec des questions et des données qui changent chaque fois que l’utilisateur recommence.
Le voici en pièce jointe si jamais vous avez besoin de revoir votre trigonométrie…
Il me reste à vérifier s’ils reste des bugs ou des anomalies.
Merci encore, je suis très content d’arriver au bout, ça fait plusieurs mois que je suis sur ce document.
Attachments:
You must be logged in to view attached files.michel c.
ParticipantBonjour Je ne suis pas certain d’avoir tout compris mais a priori à partir du moment où on affecte une valeur (lettre) aléatoire à pointA, pointB et pointC on se fiche pas mal de la valeur de “points” puisqu’elle n’y change rien. Ce qui nous donnerait :
function generateRandomLetter() {
var randomValue = Math.random();
var randomCode = 65 + Math.floor(randomValue * 26);
return String.fromCharCode(randomCode);
}
var pointA = generateRandomLetter();
var pointB = generateRandomLetter();
var pointC = generateRandomLetter();
console.println(pointA + pointB + pointC);
On pourrait ensuite détecter les paires interdites mais dis moi d’abord si ça convient.Oui, c’est exactement ça, il faudrait juste éviter que la même lettre se retrouve plusieurs fois dans le trio et éviter les paires ou trios interdits.
michel c.
ParticipantJe voulais dire plutôt : j’aimerais que soient affectées un trio de 3 lettres de l’alphabet à 3 variables (pointA, pointB et pointC)
Et non un couple de 3 lettres…
michel c.
ParticipantMerci beaucoup !
michel c.
ParticipantMerci beaucoup !
michel c.
ParticipantBonjour, j’ai testé en apportant une petite modif, et je ne comprend pas quel problème vous soulevez…
Attachments:
You must be logged in to view attached files.michel c.
ParticipantC’est incroyable, je ne savais pas que c’était possible de faire ça !
Un grand merci et bravo !
michel c.
ParticipantC’est exactement ce qu’il me faut. A part l’erreur à l’ouverture c’est parfait.
Il y a aussi un souci sur l’affichage des groupes sur le tableau de la page 2 lors du clic sur vérifier mais j’ai une idée pour remédier à cela.
michel c.
ParticipantOui, ce serait parfait, je ne savais pas que c’était possible.
michel c.
ParticipantMerci beaucoup, c’est exactement ce que je voulais.
Je souhaiterais également lors du clic sur le bouton vérifier (qui est sur la 2ème) page avoir un message d’alerte si un élève a été oublié et un autre si un élève a été positionné 2 fois dans le tableau.
Je ne vois pas du tout comment je pourrais m’y prendre pour cela…
Merci
michel c.
ParticipantJe n’osait pas le demander…C’est magique. Tu as même fait en sorte de ne pas re-créer les champs R.a.b s’ils sont déjà présents…
Je n’ai plus qu’à intégrer ça au menu admin. Mais ça je sais faire.
Un grand merci, ça va me faire gagner un temps précieux.
michel c.
ParticipantMerci !
ça marche parfaitement
michel c.
ParticipantJ’ai régulièrement des messages qui sont supprimés par le site. Peut-être que les liens vers mon site internet ne sont pas acceptés… Je passe par mon site pour poster des fichiers trop lourds. S’il faut passer par un hébergeur, par lequel dois-je passer?
Merci
michel c.
ParticipantSinon pour résumer, lorsque je crée mes listes déroulantes Q.a.b (celles que les élèves vont utiliser pour saisir leurs réponses) je dois créer ensuite des listes R.a.b contenant les réponses exactes. Je copie colle les champs Q.a.b et je les renommais ensuite une à une en R.a.b
Lorsque je passe par le fichier renommer_champs_v01.pdf,
les listes sont renommées convenablement mais lorsque je copie-colle les champs R.a.b dans mon exercice interactif, le script de vérification qui compare les valeurs des champs Q.a.b avec R.a.b détecte toutes les réponses comme fausses alors que leurs valeurs sont les mêmes…
Attachments:
You must be logged in to view attached files.michel c.
ParticipantC’est curieux, j’ai essayé 2 fois de poster une réponse mais elle n’apparaît pas…A la 3ème tentative, j’ai ce message :
Erreur : réponse identique détectée ; il semble que vous l’ayez déjà dit.
Mais je ne vois pas ma réponse sur le forum.
Sinon, la voici en pièce jointe dans un pdf…
Attachments:
You must be logged in to view attached files.michel c.
ParticipantJ’ai un autre souci….
Je compte me servir de ce fichier pour pouvoir créer plus rapidement des cours ou exercices “interactifs”
Grosso modo, j’ai des champs que les élèves doivent remplir. Ces champs sont les champs Q.a.b
Lorsque l’élève clique sur vérifier, la valeur de ces champs sont comparées à des champs R.a.b Si les valeurs sont identiques, alors la réponse est validée.
Jusqu’à présent, lorsque je crée mon document, je crée les champs Q.a.b puis je les copie et je renomme leurs copies une à une Q.a.b sera renommé en R.a.b
L’avantage de ce fichier est d’importer les champs Q.a.b et de les renommer en R.a.b en un seul clic.
Cela fonctionne très bien lorsque les champs sont de type texte, mais lorsqu’il s’agit de menus déroulants, quand je place les fichiers crées par le script, les réponses ne sont plus valides même lorsque les mêmes items ont été choisis pour les champs Q.a.b et R.a.b
J’espère que ce n’est pas trop confus.
Attachments:
You must be logged in to view attached files.michel c.
ParticipantMerci, effectivement ton script (test-6_BB.pdf) fonctionne bien mieux, je vais partir de cette base. Avec l’ancien, si les champs étaient de type liste déroulante, ils devenaient des champs textes après exécution du script.
Merci beaucoup.
J’essayerai demain de faire la petite modif que je souhaite
michel c.
ParticipantJ’ai parfaitement compris. Mon code fonctionne parfaitement pour l’ajout des nouveaux champs. Par contre, je ne sais pas ou placer le code pour retirer les anciens…
J’ai testé en dehors des boucles try/catch mais ça ne fonctionne pas.
J’en ai profité pour optimiser un peu le script.
Il y a un truc que je souhaiterais faire également :
Si l’option P1 est sélectionnée et que la partie 1 du champ P1 = Q, je souhaiterais que les nouveaux champs crées soient placés au dessus des anciens (hauteur augmentée de la hauteur du champ) mais je ne sais pas si c’est faisable…
Merci
Attachments:
You must be logged in to view attached files.michel c.
ParticipantNon en fait ça ne marche toujours pas même lorsque je sélectionne P1
michel c.
ParticipantMerci pour la réponse.
Pour palier à ce problème, j’ai déclaré 2 variables pour les valeurs des champs Name.3.1 et Name.3.2
Le problème est résolu pour la modification de la partie 1 mais ça ne change rien lorsque je séléctionne P2…
function Renommer_c() {
//récuperer les noms de tous les champs
for (var i=0; i<this.numFields; i++) {
var nomChamp=this.getNthFieldName(i);
//déclarer les variables
var aN = this.getField("Name.3.1").value;
var nN = this.getField("Name.3.2").value
var CaR = this.getField("nom_champ").value;
var Menu = this.getField("Menu").value;
//décomposer les noms de champs en 3 parties séparées par les points : P1 ; P2 et P3
var b = nomChamp.split(".");
var P1 = (b[0]);
var P2 = (b[1]);
var P3 = (b[2]);
//Si l'on désire modifier la partie 1 et que la partie 1 correspond à l'entrée saisie dans le champ Name.3.1
if (Menu == 1 && aN == P1) {
//déclarer la variable P1new (nouveau nom pour la partie 1)
var P1new = nN;
try{
//récupérer les paramètres des champs à renommer
var ts=this.getField(P1+"."+P2+"."+P3).textSize;
var tf=this.getField(P1+"."+P2+"."+P3).textFont;
var rct=this.getField(P1+"."+P2+"."+P3).rect;
var pg=this.getField(P1+"."+P2+"."+P3).page;
//créer des nouveaux champs P1new.P2.P3
var f=this.addField(P1new+"."+P2+"."+P3,"text",pg,rct);
//app.alert("Champ ajouté : "+P1new+"."+P2+"."+P3);
f.textSize=ts;
f.textFont=tf;
//interrompre le code si erreur
}catch(e){break}
//supprimer les anciens champs P1.P2.P3
this.removeField(P1+"."+P2+"."+P3)
//app.alert("Champ retiré : "+P1+"."+P2+"."+P3);
}
//Si l'on désire modifier la partie 2 et que la partie 2 correspond à l'entrée saisie dans le champ Name.3.1 et que la partie 1 correspond à la variable CaR
if (Menu == 2 && aN == P2 && CaR == P1) {
//déclarer la variable P2new (nouveau nom pour la partie 2)
var P2new = nN;
try{
//récupérer les paramètres des champs à renommer
var ts=this.getField(P1+"."+P2+"."+P3).textSize;
var tf=this.getField(P1+"."+P2+"."+P3).textFont;
var rct=this.getField(P1+"."+P2+"."+P3).rect;
var pg=this.getField(P1+"."+P2+"."+P3).page;
//créer des nouveaux champs P1.P2new.P3
var f=this.addField(P1+"."+P2new+"."+P3,"text",pg,rct);
//app.alert("Champ ajouté : "+P1+"."+P2new+"."+P3);
f.textSize=ts;
f.textFont=tf;
}catch(e){break}
//interrompre le code si erreur
//supprimer les anciens champs P1.P2.P3
this.removeField(P1+"."+P2+"."+P3)
//app.alert("Champ retiré : "+P1+"."+P2+"."+P3);
}
}
}
Attachments:
You must be logged in to view attached files.michel c.
ParticipantÉtrange le fonctionnement de ce script :
Lorsque je souhaite renommer la partie 1, il va fonctionner uniquement pour les 2nds indices (P3) ayant des valeurs paires.
Lorsque je souhaite renommer la partie 2 ; même chose, ça fonctionne que pour les 2nds indices ayant des valeurs paires….
michel c.
ParticipantBonjour, je viens de commenter mon code :
function Renommer_c() {
//récuperer les noms de tous les champs
for (var i=0; i<this.numFields; i++) {
var nomChamp=this.getNthFieldName(i);
//déclarer la variable CaR (Champs à renommer)
var CaR = this.getField("nom_champ").value;
//décomposer les noms de champs en 3 parties séparées par les points : P1 ; P2 et P3
var b = nomChamp.split(".");
var P1 = (b[0]);
var P2 = (b[1]);
var P3 = (b[2]);
//Si l'on désire modifier la partie 1 et que la partie 1 correspond à l'entrée saisie dans le champ Name.3.1
if (this.getField("Menu").value == 1 && this.getField("Name.3.1").value == P1) {
//déclarer la variable P1new (nouveau nom pour la partie 1)
var P1new = this.getField("Name.3.2").value;
try{
//récupérer les paramètres des champs à renommer
var ts=this.getField(P1+"."+P2+"."+P3).textSize;
var tf=this.getField(P1+"."+P2+"."+P3).textFont;
var rct=this.getField(P1+"."+P2+"."+P3).rect;
var pg=this.getField(P1+"."+P2+"."+P3).page;
//créer des nouveaux champs P1new.P2.P3
var f=this.addField(P1new+"."+P2+"."+P3,"text",pg,rct);
f.textSize=ts;
f.textFont=tf;
//interrompre le code si erreur
}catch(e){break}
//supprimer les anciens champs P1.P2.P3
this.removeField(P1+"."+P2+"."+P3)
app.alert("Fait");
}
//Si l'on désire modifier la partie 2 et que la partie 2 correspond à l'entrée saisie dans le champ Name.3.1 et que la partie 1 correspond à la variable CaR
if (this.getField("Menu").value == 2 && this.getField("Name.3.1").value == P2 && CaR == P1) {
//déclarer la variable P2new (nouveau nom pour la partie 2)
var P2new = this.getField("Name.3.2").value;
try{
//récupérer les paramètres des champs à renommer
var ts=this.getField(P1+"."+P2+"."+P3).textSize;
var tf=this.getField(P1+"."+P2+"."+P3).textFont;
var rct=this.getField(P1+"."+P2+"."+P3).rect;
var pg=this.getField(P1+"."+P2+"."+P3).page;
//créer des nouveaux champs P1.P2new.P3
var f=this.addField(P1+"."+P2new+"."+P3,"text",pg,rct);
f.textSize=ts;
f.textFont=tf;
}catch(e){break}
//interrompre le code si erreur
//supprimer les anciens champs P1.P2.P3
this.removeField(P1+"."+P2+"."+P3)
}
}
}
Attachments:
You must be logged in to view attached files.michel c.
ParticipantIl y a un truc que je ne comprend pas. Mon script fonctionne mais il y a toujours un champ qui n’est pas renommé…
Attachments:
You must be logged in to view attached files.michel c.
ParticipantJ’y suis arrivé pour la modification de la partie 1 du nom de champ (P1.P2.P3)
Par contre mon script ne fonctionne pas quand je souhaite “modifier” la partie 2 P2. J’ai une erreur à la ligne 28…
Merci
Attachments:
You must be logged in to view attached files.michel c.
ParticipantJe vais regarder si j’ai cette fonctionnalité dans pdf XChange. Mais si elle est cachée, alors elle est bien cachée…
Merci en tout cas. Je vais continuer à bosser sur ce script je ne suis pas très loin d’y arriver je pense.
michel c.
ParticipantJe viens d’essayer le fichier proposé par BB mais ça ne fonctionne pas, j’ai une erreur à la ligne 12…
Attachments:
You must be logged in to view attached files.michel c.
ParticipantJe viens de tester pour modifier la première partie ou la 2ème au choix. Mais ça ne fonctionne toujours pas…
Attachments:
You must be logged in to view attached files.michel c.
ParticipantBon j’avance à tâtons, ça marche très partiellement…
Attachments:
You must be logged in to view attached files.michel c.
ParticipantJe viens de retrouver le logiciel, il s’agit de Pdf Studio. Je viens de tester le renommage séquentiel mais ça ne me fait pas gagner de temps.
Je voulais renommer 30 champs : “Q.7.1” à “Q.7.30” qui se seraient appelés : “R.7.1″ à R.7.30”.
Et je voulais que ce soit fait respectivement pour chaque champ (que le Q.7.1 devienne R.7.1 et ainsi de suite)
Cependant le renommage a été fait dans le désordre.
Je suis donc à la recherche d’un outil ou d’une astuce pour y arriver.
En gros si je décompose le nom de champ en 3 parties (nom ; indice1 ; indice2), j’aimerais qu’en spécifiant ou en sélectionnant le nom du champ je puisse modifier l’indice 1 et que les indices 2 soient inchangés.
Si je comprend bien, l’astuce serait de récupérer les propriétés de chaque champ, de créer des nouveaux champs avec les mêmes propriétés mais des noms différents puis d’effacer les champs d’origine.
Je perdrais je pense au passage les actions liés à ces champs. Mais ça ce n’est pas grave, les champs que je souhaite “renommer” ne seront pas des champs ayant des scripts.
Merci
-
Cette réponse a été modifiée le il y a 4 mois et 3 semaines par
michel c..
michel c.
ParticipantJe viens de tester un truc à partir d’un script trouvé sur le net mais rien ne se passe. Je cherche encore…
Attachments:
You must be logged in to view attached files.michel c.
ParticipantC’est sur libre office writer et non calc pardon.
Il suffit d’insérer une zone de liste et dans les propriété, on peut aligner à gauche, au centre et à droite.
Pour finir il suffit d’exporter en pdf.
-
Cette réponse a été modifiée le il y a 4 mois et 4 semaines par
michel c..
Attachments:
You must be logged in to view attached files.michel c.
ParticipantMerci pour cette solution
michel c.
ParticipantMerci beaucoup. J’ai réussi pour cette condition.
Par contre je n’ai pas réussi pour la suivante :
if (nomChamp.indexOf("Aide.")==0) {
if (this.getField(nomChamp).type=="text" || nomChamp.indexOf("_af_image")>0) this.getField(nomChamp).readonly=true;
else this.getField(nomChamp).readonly=false;
}
Ici, je voudrais que pour les champs Aide, les champs de type bouton qui ne sont pas des images soient en readonly = false et que les champs de type texte ainsi que les images en readonly = true
Merci
michel c.
ParticipantMerci
michel c.
ParticipantBonjour, je n’ai absolument pas les compétences en javascript pour y arriver. Je me demandais si quelque chose de ce genre existait.
Je cherche également des solutions intermédiaires comme passer par un autre logiciel dans lequel je pourrais faire mes dessins puis les copier / coller.
Mais ou chaque élément peut être déplacé et modifié.
J’y arrive avec inkscape mais sans pouvoir changer la couleur ni l’épaisseur des traits après avoir copié/collé
Ps : très impressionnant la montre
-
Cette réponse a été modifiée le il y a 6 mois et 2 semaines par
michel c..
michel c.
ParticipantMerci, je me suis servi de ton code pour me faire un document qui me sera utile.
Attachments:
You must be logged in to view attached files.michel c.
ParticipantBonjour, je veux uniquement modifier les caractères accentués.
Je ne savais pas du tout que l’on pouvait faire ça via la console….
Merci
michel c.
ParticipantUne question en passant : pour coder cette phrase ainsi :
"Voulez vous vraiment supprimer le contenu de tous les champs de
donn\u00E9es et revenir \u00E0 l'\u00E9tat initial du document
?\n\nCette action ne pourra pas \u00EAtre annul\u00E9e.\nSi besoin
utilisez : menu Fichier : R\u00E9tablir"
tu as un outil ou un lien qui te permet de faire ça rapidement ou tu connais par coeur l’unicode pour les caractères é ê ; à … et tu glisse ces codes au milieu des mots?
Jusqu’à présent je mettais toute la phrase en unicode mais c’est plus compréhensible comme ça en relisant la phrase.
michel c.
ParticipantMerci !
michel c.
ParticipantPour mon 2ème souci, j’ai trouvé une façon détournée de résoudre ce problème.
Obliger l’utilisateur à cliquer sur démarrer pour faire apparaître la première partie :
Tant que l’utilisateur ne clique pas sur le bouton, Aucune question ne s’affiche…
S’il clique sur le bouton, une réinitialisation s’opère avec de nouvelles variables.
Par contre j’ai un autre souci, en cliquant sur ce bouton la boite de dialogue s’affiche pour demander confirmation.
J’aimerais que si l’utilisateur répond Non, l’exécution du script s’arrête
if (cResponse != "Oui") {app.alert("Opération annulée.");
<strong>commande pour stopper l'exécution du script</strong>
}
Merci
-
Cette réponse a été modifiée le il y a 6 mois et 2 semaines par
michel c..
Attachments:
You must be logged in to view attached files.michel c.
ParticipantMerci, je ne savais pas pour else if
michel c.
ParticipantMerci pour les réponses.
@BB : J’ai modifié mon script Default ainsifunction Default() {
for (var i=0; i<this.numFields; i++) {
var nomChamp=this.getNthFieldName(i);
//console.println(i+" - nomChamp : "+nomChamp+" - "+(this.getField(nomChamp).page+1)+" - "+this.getField(nomChamp).type);
if (nomChamp.indexOf("R.")==0) {
if (this.getField(nomChamp).type=="text") this.getField(nomChamp).defaultValue=this.getField(nomChamp).value;
if ((this.getField(nomChamp).type=="checkbox" || this.getField(nomChamp).type=="radiobutton")) this.getField(nomChamp).defaultValue=this.getField(nomChamp).value;
}
if (nomChamp.indexOf("Q.")==0) {
if (this.getField(nomChamp).type=="text") {this.getField(nomChamp).value="";}
if ((this.getField(nomChamp).type=="checkbox" || this.getField(nomChamp).type=="radiobutton")) this.getField(nomChamp).value="Off";
if (this.getField(nomChamp).type=="combobox") {this.getField(nomChamp).value=this.getField(nomChamp).getItemAt(0,false);}
}
if (nomChamp.indexOf("Titre.")==0) {this.getField(nomChamp).defaultValue=this.getField(nomChamp).value;}
if (nomChamp.indexOf("TQ.")==0) {this.getField(nomChamp).defaultValue=this.getField(nomChamp).value;}
if (nomChamp.indexOf("Question.")==0) {this.getField(nomChamp).defaultValue=this.getField(nomChamp).value;}
if (nomChamp.indexOf("Aide." && this.getField(nomChamp).type=="text")==0) {this.getField(nomChamp).defaultValue=this.getField(nomChamp).value;}
if (nomChamp.indexOf("TL.")==0 && this.getField(nomChamp).type=="text") {this.getField(nomChamp).defaultValue="";}
if (nomChamp.indexOf("Menu.")==0) {
this.getField("Menu.3").fillColor=color.green;
this.getField("Menu.4").fillColor=color.green;
if (this.getField(nomChamp).type=="text") this.getField(nomChamp).defaultValue=this.getField(nomChamp).value;
if ((this.getField(nomChamp).type=="checkbox" || this.getField(nomChamp).type=="radiobutton")) this.getField(nomChamp).value="Off";
}
}}
Dans la 1ère condition (ligne 7 à 10) et pour la dernière (ligne 25 à 30) je ne sais pas comment écrire : si le champ est de type combobox alors la valeur par defaut sera la valeur sélectionnée dans la combobox.
Pour le reste, je crois avoir compris ce qui pose problème, je pense que ça fonctionne. Le fichier est en pj
@ Merlin :
J’ai renomé la fonction random → hasard
J’ai crée un formulaire avec uniquement ces 2 scripts pour que ce ne soit pas pollué par d’autres scripts de mon pdf qui en contient énormément et j’ai toujours le même problème :
cela fonctionne quand j’appele la fonction via le script du bouton démarrer
mais ça ne fonctionne plus quand j’apelle la fonction par la commande aleatoir(); (bouton Aleatoir)
Fichier (aleatoir) en piece jointe
Attachments:
You must be logged in to view attached files.michel c.
ParticipantJ’ai corrigé mon script Default mais ça ne fonctionne toujours pas.
J’ai crée un un bouton qui appele simplement la fonction aleatoir et ça ne fonctionne pas non plus.
Lorsque le code :
for (var i=1; i<=30; i++) {
try {
random (i);
} catch(e) {
this.getField("Var."+i+".3").value="";
}
}
est affecté au bouton, ça fonctionne (Bouton Demarrer) mais lorsque ce même code est en action de document, et que j’appele cette fonction ça ne marche plus (bouton aleatoir)
Merci
Attachments:
You must be logged in to view attached files. -
Cette réponse a été modifiée le il y a 3 semaines et 6 jours par
-
AuteurRéponses