Liste modifiable sous access

Bonjour,
j'aimerais savoir comment faire pour avoir un formulaire qui pourrait ressembler a ca:
https://www.cjoint.com/?ftohwftHMg

En sachant que l'on peut modifier chacun des textbox mais tout en faisant defiler la premiere ligne voila

merci d'avance
Configuration: Windows XP
Internet Explorer 6.0

22 réponses

Résumé de la discussion

Le besoin exprimé est de concevoir un formulaire similaire à un exemple accessible, comportant des textbox modifiables et un défilement de la première ligne, dans un contexte Windows XP et Internet Explorer 6. Plusieurs échanges proposent d'ajuster le code existant, notamment autour d'une liste modifiable et de la préselection des éléments, afin d'afficher automatiquement la fiche client lorsque la bonne machine est choisie. D'autres interventions contestent la clarté des objectifs et alternent entre remarques techniques et échanges informels, sans aboutir à une solution unique clairement identifiable dans le fil. En cas de progression, l'approche pourrait nécessiter une adaptation au cadre applicatif et à la gestion des événements côté formulaire pour assurer une édition fluide même en défilement.

Bobot (l’IA à votre service)
  1. Modérateur
    Salut,

    c'est sympa, mais tu envoies une base avec un formulaire qu'on ne peut pas ouvrir...
    1. Modérateur
      ça ne change rien, la table sur laquelle est basé ton form n'existe pas...

      fais une copie d'cran de ce que tu souhaites...
      1. Modérateur
        et donc ta question est laquelle ? je n'ai pas pigé la question initiale...
        1. comment peut on faire pour affficher le menu deroulant avec la liste des societes (ca c'est fait) et afficher les info de cette societe, tout en pouvant les modifier
        2. @seblekiller_oupassalut
          les infos de ta societé se trouve dans une autre table?
          si oui tu n'a qu'a mettre un sous formulaire qui se reference sur un formulaire avec les infos de la table société
          et apres avec access tu peut faire un lien entre ton sous formulaire et le formulaire qui l'heberge
          c'est facile avec l'assistant
        3. @fl0Donc en fait c'est pas ca:

          j'ai un formulaire tout simple fait avec l'assistant avec 5 champs et voila

          en bougeant la molette de la souris ou en choisissant avec les fleches, je fais defiler les differentes societe et leur statut (adresse, type de boite etc...) et au lieu d'utiliser la souris ou les fleches, j'aimerais avoir une liste de societe ou on choisi mais ou l'on pourrait quand meme modifier les parametres. Si ce n'est pas claire, je peux reexpliquer
        4. @seblekiller_oupasdi moi si je me plante

          ton formulaire c'est celui de société?
          et tu veut voir toutes les entreprises à la place de la liste deroulante?
        5. @fl01 oui

          2 je veux avoir une liste deroulante de societe que je puisse selectionner et ainsi avoir les autres champs de la societe pour ensuite pouvoir les modifier
      2. OK ce que je voulais faire c'est nul ca marche pas
        voila ce que je ferais
        je ferais une requete sql qui selectionnerais tous les champs de ma table pour lequelle nom societé egale liste
        normalement si tu la lance toute seul ca ne va pas
        mais c'est pas grave
        apres je ferais un formulire avec une zone de liste qui referencerai le nom de tes société
        et je ferais aussi un sous formulaire dans ce formulaire qui aurais tous les champ de la requete
        et sur l'action clic de la liste je metterais le code pour rafraichir le formulaire
        ce qui rafraichirais la requete et le tour est joué
        SI ta pas tous compris procède par etape et tien moi au courant
        1. Modérateur
          Il suffit que le formulaire soit lié à la table dans laquelle on met les données à jour et ça marche tout seul.

          Il faut juste paramétrer la source de la liste pour faire un select ... from la_table...
          1. non justement on peut pas
            j'ai essayer et on peut pas choisir dans la liste
            en tous cas moi ca marchait pas
          2. @fl0j'ai bien regarde ce que vous avez mis et pour blux, ton " select........" il faut le mettre ou? pour que je puisse essaye
          3. Modérateur
            @seblekiller_oupasen principe, on doit le mettre dans le source de la zone de liste, onglet données...

            mais là, je peux pas faire, j'ai un truc urgent à 14h00...
          4. @bluxvas-y tu as mon autorisation pour faire ton truc urgent a plus tard, je vais essayer
          5. @seblekiller_oupasJe ne sais pas si tu y as regarder plus amplement fl0 mais est-ce que tu aurais une autre idee ou pas? merci
        2. De plus, cela ne s'arrete pas la:
          J'ai rajoute un id_client (ref_clontact) en numerotation auto, et je n'arriva pas a faire le lien entre mes 2 tables

          Dans la table formation, j'ai essaye a la fois de metre soit NomContact soit Ref_Contact et je n'y arrive pas.

          Questions: Est-ce que la cle primaire doit toujours etre reliee a une table?Est ce que le fait que ce soit num auto pose pb? et d'ou vient le pb a t on avis?

          Si tu veut des precisions demande moi.
          1. Modérateur
            Quand on 'tire' une relation type 1-n entre deux tables, le côté 1 doit toujours être un champ sans doublon, ce qui n'est pas le cas, vu le message d'erreur. Il n'est pas obligatoire que ce soir une clé primaire.

            Lorsque ce champ est un numéroauto, il ne peut être mis en relation qu'avec un champ de type numérique 'entierlong' côté n de la relation.
            1. OK ca a fonctionne merci bien et pour le probleme d'avant?
              lancer des requetes UPDATE? ca veut dire quoi, et comment aussi
            2. @seblekiller_oupasEn fait c'est bon j'ai fait autrement mais une autre question, si je t'envoie mon bout de base et que je t'explique mon probleme est-ce que tu asd le temps de regarder une petite boulette de ma part ou pas?
            3. Modérateur
              @seblekiller_oupasun formulaire (ou un objet access : zone de liste, de texte...) ne peut être basé que sur une seule 'source' (champ d'une table/requête, autre objet...). Lorsqu'il est basé sur une source type champ d'une table, en modifiant sa valeur, on modifie la valeur de champ dans l'enregistrement courant de la table.

              Lorsque l'on décide d'appliquer le contenu d'une zone à plusieurs champs de diverses tables/objets, il faut donc établir des règles : à quel moment fait-on la mise à jour, quels sont les objets à mettre à jour ?

              Pour ce qui est de répercuter une valeur dans des champs d'une table (ou de plusieurs), il faut lancer une requête qui va mettre à jour les champs de la (ou des) table(s) concernées, cette requête est une requête standard SQL de type UPDATE.

              Il faut donc créer une requête en VBA pour ensuite la lancer, afin qu'elle mette à jour les données voulues.

              Ex :

              mettre à jour le champ 'toto' de la table 'tata' à partir d'une zone nommé 'saisie'

              - créer un bouton qui déclenchera la mise à jour
              - dans ce bouton, mettre le code suivant (sur clic) :
              Dim Req as String
              Req = "UPDATE tata SET toto ='" & saisie.value & "';"
              docmd.runsql(req)
              Et c'est tout !

              Avec une nuance, cependant, c'est que cette requête va remplacer TOUS les champs 'toto' de la table par le contenu de 'saisie', il faudra donc préciser dans la requête à quelle(s) ligne(s) cette modification s'applique, via la clause WHERE...
            4. @bluxBon merci fort bien je mettrais ca plus tard, ce sera une evolution (comme ca je pourrais negocier une prolongation de contrat!!!) mais voila je sais pas si tu as vu mais je crois que mon avant dernier pb c'est le 44! merci pour tes reponses passees et a venir!
          2. https://www.cjoint.com/?fvpvNPowVU

            voila ouvre page d'acceuil et normalement il y a une msgbox qui me parrle d'un pb de SQL si jamais tu as une idee pour resoudre ca ce serait super mega bien
            1. Modérateur
              C'est normal : ton sous-form est basé sur la requête 'requete_entier' qui a deux fois le champ nomcontact : une fois lié à la table 'contacts', une fois lié à la table 'formation' (ce sont les premiers et derniers champs)...

              Lorsque tu ouvres ton form d'accueil, il va voir ce qu'il y a dans toutes les zones, et le contenu de modi3 est une requête positionnée par modi2 (sur changement) qui demande une restriction sur nomcontact dans la requête 'Requete_entier', mais comme 'Requete_entier' possède 2 champs nommés 'nomcontact', access ne sait pas lequel choisir, il faut donc lui préciser en préfixant 'nomcontact' avec le nom de la table : 'contacts' ou 'formation'...

              CQFD !
            2. @bluxdonc j'ai essaye, ca ne marche pas, mais malheureusement je dois y aller donc j'en suis desole mais je te dis a demain et je continuerais a cherche
              bonne soiree
            3. Modérateur
              @bluxdonc j'ai essaye, ca ne marche pas
              t'as essayé quoi ?

              et c'est quoi : "ca ne marche pas" ?

            4. @bluxDonc j'ai essaye d'abord de rajouter le prefixe Contacts dans le code de Modi3, ca ne changait rien a part qu'il apparaissait une imputbox: Contacts.NomContact

              Ensuite, ce que je voulais faire au depart, j'ai remplace dans la requete le fameux NomContact par Ref_Contact pour voir si ca marchait mais resultat, c'est comme au debut, c a d que j'ai une preselection des NomContacts mais pas des machines et meme si je prends le bon numero machine, ca ne m'affiche pas la fiche client
              voila
            5. Modérateur
              @seblekiller_oupasAu temps pour moi, j'avais testé un truc en faisant trop de modifs.

              Le problème vient d'un des noms de champs fils du sous-formulaire : il s'appelle contact et comme le sous-formulaire est basé sur 'requete_entier' qui comprend deux fois ce nom, il faut donc modifier el champ fils pour lui mettre le préfixe de la table auquel on fait référence.
          3. En option j'aimerais savoir s'il est possible de faire un formulaire pour rentrer de nouveau enregistrement de cette maniere et de telle facon que l'on tombe directement sur une page de cette forme( avec tous les champs vides quoi)
            1. Bon j'ai modifie un peu le code de la troisieme liste modifiable et maintenant il ne me manque plus que la preselection car maintenant quand je choisis la bonne machine la fiche client apparait donc au final, il ne me reste que ca;

              En clair je choisis ma societe j'ai ma perselection des contacts et je n'ai pas ma preselection des machines; em revanche maintenant si je choisi la bonne machine dans la liste, la fiche client s'affiche voila
              1. Modérateur
                je croyais que les machines étaient liées aux contacts, eux-mêmes liés aux sociétés ?

                donc : on choisit une société, on choisir un contact (parmi ceux de la société précédente), et ensuite on choisit une machine parmi la liste de celles rattachées au contact sélectionné précédemment...

                Je n'ai pas compris ton interrogation...
              2. @bluxoui c'est exactement ca seulement mon probleme c'est que je n'arrive pas a avoir cette preselection de machine c'est ca en fait le pb
              3. Modérateur
                @seblekiller_oupasvérifier le code mis dans modi2_change pour voir si cela reflète bien le choix que l'on va proposer à la liste modi3, par le biais de modi3.rowsource = ....
              4. @bluxjustement c'est ce qui m'empechait tout a l'heure de faire afficher ma fiche client!!

                Voici mon code:

                Private Sub Modi1_Change()

                Dim StrSql As String
                'MsgBox Modi1.Value
                StrSql = StrSql + "SELECT * FROM Contacts WHERE NomSociete = '" & Modi1.Value & "';"
                Modi2.RowSource = StrSql
                Modi2.Requery
                End Sub

                Private Sub Modi2_Change()
                Dim StrSql As String
                'MsgBox Modi1.Value
                StrSql = StrSql + "SELECT num_machine FROM Requete_entier WHERE NomSociete = '" & Modi1.Value & "' and "
                StrSql = StrSql + " Ref_contact ='" & Modi2.Value & "';"
                Modi3.RowSource = StrSql
                Modi3.Requery
                End Sub

                Private Sub Modi3_Change()

                Me.Form_Requete_entier.Visible = True
                End Sub

                Private Sub Form_Open(Cancel As Integer)
                Me.Form_Requete_entier.Visible = False
                End Sub

                Donc je ne crois pas que ce soit ca!
              5. Modérateur
                @seblekiller_oupasça devrait marcher...

                il ne t'affiche pas la bonne liste ou il ne t'affiche rien du tout dans la liste ?
            2. je suis desole mais la j'ai craque je rentre chez moi mais je suis de ouveau la lundi si tu veux encore des preciions et pour te dire si j'y suis arrive quand meme

              bon week end
              1. salut blux c'est encore moi donc je sais pas si tu es toujours motive pour m'aider mais au cas ou, je t'explique le vrai probleme:
                j'ai donc pour l'instant trois liste deroulantes pour faire afficher ma fiche client (ce que tu m'as aider a faire avant)

                maintenant je voudrais faire sur la meme page, le meme principe, a savoir qu'avec trois liste, ca m'affiche une fiche intervention voila
              2. @bluxcerte c'est pareil mais je n'arrive pas a le modifier et l'exemple que tu m'as envoye ne fonctionne pas quand meme (erreur de programme)
              3. @bluxbin en fait excuse moi je sais pas comment je fais car quand je l'ai ouvert il y avait des bugs et quand je l'ai transfere il a marche super bien donc ????? je suis vraiment pas doue je crois!!!
            3. juste 2 petites precisions:
              est-ce possible de faire afficher les parametres de la societe dans la liste?

              et est-ce possible d'avoir toujours la preselection des listes, en faisant afficher les parametres choisis dans le sous formulaire mais sans ouvrir, au final, la fiche d'intervention (en gros apres mes selections on obtiens la fiche d'intervention avec seulement lews parametres selectionnes?)
              1. Modérateur
                est-ce possible de faire afficher les parametres de la societe dans la liste?
                oui, il suffit de modifier la requête générée dans Chx_Inter et qu'on met en source de Chx_Soc.

                et est-ce possible d'avoir toujours la preselection des listes, en faisant afficher les parametres choisis dans le sous formulaire mais sans ouvrir, au final, la fiche d'intervention (en gros apres mes selections on obtiens la fiche d'intervention avec seulement lews parametres selectionnes?)
                Pas compris : c'est quoi la fiche d'intervention ? ce qui s'affiche dans le sous-form ?
              2. @bluxautant pour moi la fiche d'intervention c'est le sous formulaire effectivement et je voudrais faire une preselection entre les liste societe et machine et faire afficher seulement ces 2 parametres sur une nouvelle fiche
              3. Modérateur
                @seblekiller_oupaspas compris !
                quel est l'intérêt d'afficher seulement ces 2 parametres sur une nouvelle fiche alors qu'ils sont déjà affichés dans les listes de choix ?
              4. @bluxc'est pour commencer a pre-remplir les fiches par exemple pour le numero de machine mais il est vrai que ca peut tres bien marcher sans
            4. Par contre autre question:
              J'ai fait un formulaire de ce type:
              on a 2 series de liste deroulantesqui agissent l'une sur a fiche client et l'autre sur la fiche intervention
              j'aimerais que quand on regarde la fiche intervention, la fiche client disparaisse et vis et versa donc est-ce que tu sais comment on peut faire??

              je te l'accorde l'idee n'est pas forcement la meilleure mais c'est ce que veut mon chef!!

              merci quand pour les listes elles marchent bien pour l'instant
              • 1
              • 2