Donnez vie à vos documents numériques !
 

Formulaire variant en fonction des réponses données. – RÉSOLU

abracadabraPDF Forums PDF – Général Formulaire variant en fonction des réponses données. – RÉSOLU

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #44618
    Antonin TCP
    Membre

    Bonjour,

    Je suis très heureux d’enfin trouver un forum d’entraide en français pour les PDF.

    Je cherche depuis quelques semaines à faire un formulaire pour mon entreprise:

    Je voudrai que les cameramen partant en tournage puissent remplir un formulaire pdf pour y indiquer avec quel matos partent ils, combien de piles…

    Or, dans la liste des caméras ils choisissent quel modèle : A, B ou C.

    Une fois selectionné, j’aimerai qu’une case apparaisse pour y inscrire le numéro de la caméra, comme sur certains sites web.

    J’ai essayé sur Open Office, mais je n’ai vraiment pas les compétences pour.

    Maintenant je me met sur Adobe Acrobat XI en espérant que ce soit plus accessible.

    Merci beaucoup et bonne journée.

Affichage de 25 réponses de 1 à 25 (sur un total de 59)
  • Auteur
    Réponses
  • #55426
    Stubiana
    Membre

    :joker:

    Je ne m’y connais pas du tout en script OpenOffice, mais je pense qu’il serait beaucoup, beaucoup plus simple de faire ça avec Adobe Acrobat (si tu le possède) et dans ce cas là je pourrais t’aider  :Smiley01:

    Cordialement

    #55427
    Antonin TCP
    Membre

    Je suis très très preneur, j’ai justement décidé de me mettre dessus  :Smiley08:

    #55428
    jsamica
    Membre

    Bienvenu à toi Antonin,
    Effectivement pour cela il te faut Adobe Acrobat pour que tu puisses créer/modifier des PDF.

    Il sera à ce moment là possible de réaliser cette fonctionnalité.

    :bonjour:

    #55429
    Antonin TCP
    Membre

    Je l’ai justement et je débute dessus :)

    #55430
    Stubiana
    Membre

    Avec Acrobat, c’est très simple.

    Clic droit sur ta liste > Propriétés > Action > Le déclencheur sera « Souris enfoncée » et l’action « Afficher/Masquer un champ » > Ajouter > Tu choisis le champ qui va contenir le numéro de la caméra et tu coche Afficher  :Smiley01:

    Pour que ton champ soit par défaut caché avant que le caméraman clique sur la zone de liste, Clic droit sur le champ > Propriétés > Général > Tu remplaces « Visible à l’écran » par « Invisible à l’écran »

    N’hésite pas si tu as besoin de plus de renseignements

    Cordialement  :bonjour:

    #55431
    Antonin TCP
    Membre

    Merci beaucoup Stubiana,

    Par contre je ne trouve pas la liste dont tu parles. Lorsque je demande à créer un nouveau formulaire, adobe acrobate m’envoie vers Forms Central, c’est dessus que ça se passe ou vous utilisez autre chose ?

    merci encore !

    #55432
    Stubiana
    Membre

    Or, dans la liste des caméras ils choisissent quel modèle : A, B ou C.

    C’est de cette liste que je parle, donc je suppose que tu ne l’a pas encore créée.

    Je pense que le mieux est de créer ton fichier sous Open Office, en y incluant tout le texte de ton formulaire, et en laissant des espaces à l’emplacement des champs, puis d’exporter ce fichier au format PDF.
    Une fois fait, tu l’ouvre avec Acrobat, tu cliques sur Créer un formulaire, A partir d’un document existant, et Document Actif.

    Lorsque tu aura fait ça, préviens nous qu’on puisse commencer à voir cette histoire de liste.  :Smiley03:

    Cordialement.  :bonjour:

    #55433
    Antonin TCP
    Membre

    J’ai justement déjà fait un formulaire assez proche de ce que je veux sur Acrobat. Mais lorsque je clique droit sur cet élément, je n’ai pas propriété, mais j’ai: « monter/descendre d’un niveau » « Insérer un élément au dessus » « Insérer un élément au regard » « couper/copier/coller » et « Sélectionner/Sélectionner tout » .

    Merci encore, c’est super !

    #55434
    Antonin TCP
    Membre

    Je viens de comprendre: Forms Central ne permet pas du tout ça. Il faut faire le formulaire sur Acrobat Pro, depuis une base Word, Excel ou autre, afin d’être sûr de le pouvoir !

    Merci beaucoup, si j’ai d’autres difficultés, je peux encore écrire sur ce topic ou j’en créé un autre ?

    Merci encore !

    EDIT: Est il plus pratique que je fasse les bases non interactives sur Photoshop ou Word, en laissant de la place pour les champs à remplir, ou que je fasse la totalité du formulaire sur Adobe Acrobat ? Comment procédez vous ?

    EDIT 2: En sélectionnant « Souris enfoncée » ou autre chose, lorsque je coche puis décoche la case, le nouveau champs apparu reste à l’image. Alors que j’aimerai dans l’idéal, qu’elle disparaisse aussi. (Par exemple si le cadreur s’est trompé de case, qu’il ait coché la mauvaise, la décochant donc ensuite)

    Merci encore et encore

    #55435
    jsamica
    Membre

    Je pense que le plus simple est de créer complétement ton formulaire avec Adobe Acrobat.
    Tu n’as besoin d’aucune autre ressource pour répondre à ton besoin.

    Tu peux intégrer dans javascript dans des champs ou document.

    Fait une recherche sur le forum tu trouveras un grand nombres de sujets correspondant.

    Bon courage.
    :bonjour:

    #55436

    Bonjour,

    Oui, le plus simple est de créer directement avec Adobe Acrobat.

    Faire une recherche sur le forum est la première chose à faire avant de créer un sujet.  :idee:
    http://abracadabrapdf.net/forum/index.php/topic,1000.0.html

    Lionel :alien2:

    #55437
    Antonin TCP
    Membre

    Merci pour vos réponses.

    J’ai cherché pour le problème suivant, et je n’ai pas trouvé chaussure à mon pied :

    Via les déclencheurs que me propose Adobe Acrobat, je n’arrive pas à rendre un champs visible uniquement lorsqu’une « case à cocher » est cochée. Visible et bien entendu éditable (l’idée serait que ce soit un champs de texte ou autre)

    Je ne trouve pas sur google non plus.

    Merci encore

    #55438
    jsamica
    Membre

    Voici un exemple de code js a intégrer sur des boutons boutons radio (type oui, non) :

    Code:
    if (this.getField(« boutonradio »).isBoxChecked(0))
    {this.getField(« champaffiche »).display = display.visible;}
    else
    {this.getField(« champaffiche »).display = display.hidden;}

    En gros quand la case oui est cochée, le champ « champaffiche » est visible sinon il ne l’est pas.

    Tu trouveras plein d’exemples de ce type sur le forum.

    Bonne continuation et bon courage.
    :bonjour:

    #55439
    Antonin TCP
    Membre

    Génial.

    J’arrive enfin à faire apparaitre ou disparaitre en fonction du choix, la fenêtre permettant de choisir le nombre de caméras sélectionnées.

    Je voudrais savoir si il y a un moyen pratique de résumer en une ligne, l’état de plusieurs « getfield« . De façon parfaitement insolente, j’ai tenté ça:

    Code:
    if (event.target.value == « 0 »)
    {
    this.getField(« 3 »).display = display.hidden;
    this.getField(« 4 »).display = display.hidden;
    }
    if (event.target.value == « 1 »)
    {
    this.getField(« 1 »).display = display.visible;
    this.getField(« 2″; »3″; »4″; »5″; »6″; »7″; »8″; »9″; »10″; »11″; »12″; »13″; »14″; »15″; »16″; »17″; »18″; »19″; »20 »).display = display.hidden;
    }

    Mais ça ne fonctionne pas. Dois-je du coup les écrire les un à la suite des autres?

    Au passage, comment puis-je rajouter du texte à côté d’un champs, de manière à qu’il apparaisse en même temps que celui-ci? (Pour nommer la liste par exemple)

    Je précise que je fais mes tout tout tout premier pas avec Javascript et que pour le coup j’essaye de comprendre une logique dont je n’ai pas trop les bases, c’est possible que le code ci-dessus soit une parfaite infamie.

    Merci encore, je vais peut être finir par y arriver grâce à vous.  :priere:

    #55440
    Stubiana
    Membre

    Pour ton problème de getField, si les valeurs se suivent, tu peux utiliser une boucle :

    Remplace :

    Code:
    this.getField(« 2″; »3″; »4″; »5″; »6″; »7″; »8″; »9″; »10″; »11″; »12″; »13″; »14″; »15″; »16″; »17″; »18″; »19″; »20 »).display = display.hidden;

    par

    Code:
    for (var i = 2 ; i{
    this.getField(i).display = hidden;
    }

    Pour rajouter du texte tu peux simplement ajouter un nouveau champ de texte, et le mettre en lecture seule pour que personne ne puisse le modifier  :Smiley03:

    Cordialement  :bonjour:

    #55441
    Antonin TCP
    Membre

    J’ai un problème de syntaxe, mais je n’arrive pas à l’identifier:

    Code:
    if (event.target.value == « 1 »)
    {
    for (var i = 2B ; i{
    this.getField(i).display = hidden;
    }
    for (var i = 1B ; i{
    this.getField(i).display = visible;
    }
    }

    Vous arrivez à l’identifier ?

    #55442
    Stubiana
    Membre

    Oui, cette méthode ne marche qu’avec les nombres, après il y aura d’autres méthodes plus compliqué qui dépendent des noms de tes champs :

    – Si tes noms de champ sont « 1 », « 2 », « 3 », …., une boucle simple fera l’affaire

    – Si tes noms de champs sont un chiffre suivi d’un texte, il faudra concaténer les deux, par exemple :

    Code:
    for (var i = 2 ; i{
    this.getField(i+ »B »).display = hidden;
    }

    – Si ce n’est que du texte… :joker:

    Cordialement  :bonjour:

    #55443
    Antonin TCP
    Membre

    Merci beaucoup pour ton aide Stubiana. Du coup je reste dans la longue liste que j’ai fait, je prend finalement moins de temps à dupliquer à « remplacer par » sur le bloc note de cette manière.

    Aussi, je cherche à rendre les cases invisibles lorsque la liste ne l’est pas non plus. Si par exemple un utilisateur commence à mettre « 15 » sur une liste, puis se rend finalement compte qu’il s’est trompé de catégorie, qu’il l’a décoche, j’aimerai que les cases partent elles aussi. Pour le moment seul la valeur de la liste peut les rendre invisible (Par défaut à zero du coup).

    J’ai tenté ça:

    Code:
    if (this.getField(« ListeMSD »).display = hidden;
    {
    for (var i = 1 ; i{
    this.getField(i+ »B »).display = hidden;
    }
    }

    Mais ça ne fonctionne pas :(

    Tu aurais une piste ? Merci encore beaucoup !

    #55444
    Antonin TCP
    Membre

    Par un autre biais, je tente de mettre à zéro la valeur de la liste si elle est « hidden », mais ça ne fonctionne pas non plus.

    Code:
    if (this.getField(« ListeMSD »).display = hidden);
    {
    this.getField(« ListeMSD »).value == « 0 »}

    C’est passionnant le Javascript !  :Smiley08:

    #55445
    Stubiana
    Membre

    Je ne sais pas si ça peut résoudre le problème mais en tout cas ton code comporte des erreurs de syntaxe :

    – L’opérateur == effectue un test d’égalité, il renvoie un booléen (true ou false) qui indique si le le test est correct ou non (par exemple 0 == 0 renverra true puisque 0 est bien égal à 0, mais 1 == 0 renverra false)

    – L’opérateur = effectue une affectation, c’est-à-dire qu’il donne la valeur à une variable (par exemple après le code a = 0; a vaudra 0)

    Dans ton deuxieme code, tu utilise une affectation dans ton if, donc le programme ne va pas tester si le champ est caché, il va le RENDRE caché.
    De même, ligne d’en dessous, le programme ne va pas mettre la valeur de la liste à 0, il va TESTER si elle est égale à 0, et renverra true ou false.

    Une correction serait donc :

    Code:
    if (this.getField(« ListeMSD »).display == hidden);
    {
    this.getField(« ListeMSD »).value = « 0 »
    }

    Cordialement  :bonjour:

    #55446
    Antonin TCP
    Membre

    Cool, grace à toi je comprend mieux la nuance entre le simple et le double « = » :)

    Malheureusement, ça ne marche toujours pas, alors que ça me semble fonctionnel:

    Code:
    if (this.getField(« ListeMSD »).display == hidden);
    {
    this.getField(« 1B »).display = display.hidden;
    this.getField(« 2B »).display = display.hidden;
    this.getField(« 3B »).display = display.hidden;
    this.getField(« 4B »).display = display.hidden;
    this.getField(« 5B »).display = display.hidden;
    this.getField(« 6B »).display = display.hidden;
    this.getField(« 7B »).display = display.hidden;
    this.getField(« 8B »).display = display.hidden;
    this.getField(« 9B »).display = display.hidden;
    this.getField(« 10B »).display = display.hidden;
    this.getField(« 11B »).display = display.hidden;
    this.getField(« 12B »).display = display.hidden;
    this.getField(« 13B »).display = display.hidden;
    this.getField(« 14B »).display = display.hidden;
    this.getField(« 15B »).display = display.hidden;
    this.getField(« 16B »).display = display.hidden;
    this.getField(« 17B »).display = display.hidden;
    this.getField(« 18B »).display = display.hidden;
    this.getField(« 19B »).display = display.hidden;
    this.getField(« 20B »).display = display.hidden;
    }

    J’ai mis cette action en haut de celle qui détermine le rapport valeur de liste => nombre de case apparente, elle devrait donc être prioritaire non ?

    Je ne comprend pas ce qui cloche.

    Merci encore Stubiana !

    #55447

    Bonjour,

    Je ne comprend pas ce qui cloche.

    :idee: L’ordre dans lesquelles les actions s’effectuent ?

    Lionel :alien2:

    #55448
    Antonin TCP
    Membre

    Salut Lionel,

    Je l’ai pourtant bien mise en première par rapport à l’autre action. Je viens d’essayer de mettre le script dans la même action avec :

    Code:
    if (this.getField(« ListeMSD »).display == hidden )!important;

    Rien ne change.

    J’ai aussi essayé de n’appliquer que cette action, en vain  :Smiley02:

    #55449
    Stubiana
    Membre

    je pense que c’est tout simplement dû à une erreur d’écriture, il faut écrire « display.hidden » et non pas seulement « hidden » dans ton if :Smiley03:

    Cordialement  :bonjour:

    #55450
    Antonin TCP
    Membre

    Non plus malheureusement :(

    Code:
    if (this.getField(« ListeMSD »).display == display.hidden );
    {
    this.getField(« 1B »).display = display.hidden;
    this.getField(« 2B »).display = display.hidden;
    this.getField(« 3B »).display = display.hidden;
    this.getField(« 4B »).display = display.hidden;
    this.getField(« 5B »).display = display.hidden;
    this.getField(« 6B »).display = display.hidden;
    this.getField(« 7B »).display = display.hidden;
    this.getField(« 8B »).display = display.hidden;
    this.getField(« 9B »).display = display.hidden;
    this.getField(« 10B »).display = display.hidden;
    this.getField(« 11B »).display = display.hidden;
    this.getField(« 12B »).display = display.hidden;
    this.getField(« 13B »).display = display.hidden;
    this.getField(« 14B »).display = display.hidden;
    this.getField(« 15B »).display = display.hidden;
    this.getField(« 16B »).display = display.hidden;
    this.getField(« 17B »).display = display.hidden;
    this.getField(« 18B »).display = display.hidden;
    this.getField(« 19B »).display = display.hidden;
    this.getField(« 20B »).display = display.hidden;
    }
Affichage de 25 réponses de 1 à 25 (sur un total de 59)
  • Vous devez être connecté pour répondre à ce sujet.