Donnez vie à vos documents numériques !
 

Listes déroulantes depuis fichiers CSV internes

abracadabraPDF Forums PDF – Général Listes déroulantes depuis fichiers CSV internes

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #45806
    Cln
    Participant

    Bonjour,

    Je me suis basée sur le topic : https://abracadabrapdf.net/forum/index.php/topic,2228.0.html
    pour avoir un formulaire contenant des listes déroulantes issues de fichiers internes au format CSV.

    J’ai essayé d’élaguer le fichier de base : Cerfa-BSD_Final10 (inclus dans le topic cité), mais j’ai beau faire, je n’arrive pas à tomber sur mes pattes.
    Faut savoir que le javascript et moi…..  :siffle:

    Bref, je joins mon essai, et y aurait-il une bonne âme pour me dire ce qui pêche ?

    Merci d’avance.

Affichage de 7 réponses de 1 à 7 (sur un total de 7)
  • Auteur
    Réponses
  • #63435
    Cln
    Participant

    Je ne sais pas si ma demande initiale était bien claire, donc je reformule…

    J’ai besoin d’un formulaire qui embarquerait plusieurs fichiers excel/CSV (pour leur côté modifiables facilement) 

    et sur lequel il y aurait des listes déroulantes, chacune liée avec un des fichiers excel/Csv embarqués.

    À chaque choix fait sur une des listes, il y aurait entre 1 et 3 champs liés.

    J’ai essayé avec l’exemple du Cerfa, mais à chaque fois que je touche au moteur, la liste n’est plus liée ou bien les éléments n’apparaissent plus dans le bon ordre, bref, j’ai besoin de votre aide si précieuse !  :Ooops:

    Je remets ici un exemple avec 2 fichiers et deux listes déroulantes.

    Merci d’avance !

    #63436
    Merlin
    Maître des clés

    Bonjour.

    Pour bien comprendre le fonctionnement des listes d’Alex il faut faire une recherche dans ce forum sur les mots “liste mère fille“.
    Il a tout expliqué mais c’est réparti dans plusieurs sujets.

    Par-contre, si travailler à partir de données CSV c’est juste pour la souplesse des mises à jour il y a aussi cette solution que j’ai découvert très récemment : https://is.gd/Nh82Eq

    L’essentiel de la préparation (astucieuse) des données se fait dans Excel, et ensuite on injecte les données dans la liste déroulante.
    Si cette solution t’intéresse je pourrais t’expliquer comment se passer de l’utilitaire indiqué dans ce tuto et comment injecter les données dans la liste via la Console JavaScript.

    #63437
    Cln
    Participant

    Merci de ta réponse Merlin,

    Pour être honnête, je parcours souvent ce forum qui est une vraie mine d’or, mais comme le javascript est au-delà de mes possibilités intellectuelles, souvent je trouve un exemple tout fait que j’arrive, dans la plupart des cas, à réadapter à mes besoins.

    Dans le fil que je cite, “Récupération données BDD dans un formulaire PDF” quasi tout en bas de la deuxième page, Alex donne un exemple “Cerfa BSD final 10” où se passe les choses qui m’intéressent, mais vu que l’exemple en question contient bien plus que ma recherche, je n’arrive pas à y faire le ménage sans casser tout.

    Je me suis focalisée sur les listes 10 et 11, j’essaye d’ôter le reste, sur le formulaire mais aussi dans les scripts, mais ça ne fonctionne pas.

    J’ai regardé la vidéo, j’avoue pas jusqu’au bout, mais il y a trop de manip en amont sur le fichier CSV interne pour que ça m’intéresse.

    Pour expliquer le but final, on imagine que des fichiers excel existants sont juste réenregistrés au format Csv, qu’ils sont placés comme pièces jointes dans le formulaire, les scripts remplissent une (des) listes déroulantes et il n’y a en plus du combo box qu’un autre champ qui récupère la valeur associée.

    L’utile est que s’il y a changement sur la liste excel originale, on n’ait plus qu’à la retransformer en Csv et de l’échanger comme pièce jointe.

    Le top du top serait d’avoir sur mon exemple “Base Ludo FORM” tout qui marche pour 2 fichiers/pièces jointes, et que je modifierai ensuite, en rajoutant d’autres listes par exemple, car si je ne connais rien au javascript, j’arrive en gros à le lire et à le modifier pour mes propres besoins, le tout étant d’avoir un exemple qui fonctionne….

    Je sais, je demande beaucoup,  :Ooops: mais ma gratitude est infinie !! :bravo:

    #63438
    Merlin
    Maître des clés

    La mine d’or à ciel ouvert est en accès libre et gratuit, mais tu comprendras bien que l’accès à l’autre mine, celle qui contient les grosses pépites, les diamants et qui me fait vivre, ne soit pas accessible dans les mêmes conditions.

    D’autant que ce n’est pas quelque chose de facile à expliquer en quelques lignes sur un forum, il y a dedans des informations un peu disparates mais au final très complètes.

    Cependant, je vais quand même aller contre mon intérêt financier immédiat en te faisant observer que dans ton cas il n’y a que 2 colonnes de données, et que c’est le cas le plus simple puisqu’une liste déroulante gère nativement une “valeur affichée” et une “valeur d’exportation”.

    1- Il faut utiliser un script à l’ouverture du document pour remplir la liste déroulante avec le CSV.
    2- Via un script de validation placé dans la liste déroulante, il faut pousser la “valeur d’exportation” dans le champ texte à chaque changement de sélection de la “valeur affichée” par l’utilisateur.
    3- Et puis c’est tout.

    Vu comme ça, c’est certainement plus simple à mettre en œuvre.
    :Smiley15:

    #63439
    Cln
    Participant

    Ok, je comprends….
    Je vais essayer !

    #63440
    Merlin
    Maître des clés

    2.

    this.getField(“CHAMPTEXTE“).value = event.value;

    :Smiley15:

    #63441
    Cln
    Participant

    Voilà, j’ai été plus doucement, et je pense avoir trouvé….
    J’ai eu un peu de mal lorsque j’ai voulu ajouter une troisième liste, mais à force, ça a fini par payer !

    Le Yi-King dit bien “La persévérance est avantageuse”  :bonjour:

    Merci Merlin, Alex et les autres, en tout cas, et je n’ai pas fini de vous vénérer…..  :joker:

    Je joins mon exemple, du coup…

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