ACCESS

Résolu
Bonjour,

j'ai un formulaire prêt, avec les identifiants de la table classe,prof,eleve,date et produit.

Dans chaque liste déroulante je choisit l'identifiant mais j'aimerai que se soit le nom qui apparaissent et non l'identifiant(en gros c'est l'identifiant qui sera enregistrer, mais le nom affiché).

https://www.cjoint.com/?kvkxpKhQ4E
Configuration: Windows Vista
Firefox 3.0.14

49 réponses

Résumé de la discussion

Le problème central est d'afficher le nom dans les listes déroulantes tout en enregistrant l'identifiant correspondant, afin d'éviter que l'utilisateur voie des IDs bruts et pour que les données soient stockées correctement. Selon la meilleure solution fournie, il faut activer le champ indépendant à Oui dans les propriétés du formulaire (autres), puis paramétrer l'ouverture sur Fenêtre Modale et la fermeture via DoCmd.Quit. D'autres pistes existent, comme afficher les noms via des requêtes liées, mais elles ne sont pas détaillées ici.

Bobot (l’IA à votre service)
  1. Bonjour,

    - Première question tu as quoi comme requête sur tes listes déroulantes ?
    - Ensuite les liste déroulante peuvent avoir plusieurs colonnes.

    Exemple : requête de ma liste déroulante (Select id_eleve, nom_eleve from classe)

    - Premier temps je dis a ma liste déroulante que j'ai 2 colonnes, avec comme largeur des colonnes 0cm (mettant mon id_eleve en cacher).

    Comme cela j'aurai que les nom des élèves dans mas liste déroulante.

    En VBA pour avoir juste l'ID : Me.malistedéroulante.column(0) '0 Correspond à la première valeur de la requete (id_eleve)
    En VBA pour le nom : Me.malistedéroulante.column(1) '1 Correspond à la deuxième valeur de la requete (nom_eleve)

    J'espère que tu as compris. Sinon je te conseil d'aller faire un tour sur le site Developpez.

    Cordialement
    0
    1. tkt j'ai compris merci bien
      0
      1. et peut on le mettre sous forme de logiciel??? sans tous ce qui a autour ( propriété, barre des taches, barre d'outils)
        0
        1. Bien sur ! Voilà le code

          a mettre dans un module :)

          Option Compare Database
          
          'Dans les propriétés du formulaire (autres) mettre le champ fen indépendante à Oui
          'Dans les propriétés du formulaire (événements) mettre sur ouverture : Fenetre_Modale Me
          'Dans les propriétés du formulaire (événements) mettre sur fermeture : DoCmd.Quit
          
              Const SW_HIDE = 0
              Const SW_MAXIMIZE = 3
              Const SW_MINIMIZE = 6
              Const SW_RESTORE = 9
              Const SW_SHOW = 5
              Const SW_SHOWMAXIMIZED = 3
              Const SW_SHOWMINIMIZED = 2
              Const SW_SHOWMINNOACTIVE = 7
              Const SW_SHOWNA = 8
              Const SW_SHOWNOACTIVATE = 4
              Const SW_SHOWNORMAL = 1
            
            Public Declare Function ShowWindow Lib "User32" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long
          
          Function Fenetre_Modale(pForm As Form)
            ShowWindow Application.hWndAccessApp, SW_HIDE
            ShowWindow pForm.hWnd, SW_SHOWNORMAL
            ShowWindow Application.hWndAccessApp, SW_SHOWMINNOACTIVE
          End Function


          Cordialement
          0
          1. De rien ! Penses a mettre le statut résolu ^^
            0
            1. oui mais dernière petite question dans ma table prêt j'ai un champ ou je rentre un chiffre qui se soustrait au nombre de produit en stock.

              Sauf que quand je clique sur la requête il me soustrait tous mes prêts, alors que je veux que sur celui ou je suis
              0
              1. Envois ta requete que je regarde :)
                0
                1. UPDATE produit INNER JOIN Pret ON produit.ID_prod = Pret.ID_prod SET produit.nb_prod = produit.nb_prod-pret.nb_choisit
                  WHERE ((pret.ID_prod)=(produit.ID_prod));

                  merci
                  0
                  1. j'espère que c'est clair ^^
                    0
                    1. Ton Where est mal fait !

                      Ce que je veux dire que dès qu'il trouve ID_prod dans les 2 table il fait la modif ! Du coup il va faire tout tes champs

                      Il faudrait mettre ID_prod = 'le num de ID en cour'

                      cordialement
                      0
                      1. comment peut on faire pour qu'il sélectionne justement l'identifiant en cours dans la requête
                        0
                    2. Option Compare Database

                      'Dans les propriétés du formulaire (autres) mettre le champ fen indépendante à Oui
                      'Dans les propriétés du formulaire (événements) mettre sur ouverture : Fenetre_Modale Me
                      'Dans les propriétés du formulaire (événements) mettre sur fermeture : DoCmd.Quit

                      Const SW_HIDE = 0
                      Const SW_MAXIMIZE = 3
                      Const SW_MINIMIZE = 6
                      Const SW_RESTORE = 9
                      Const SW_SHOW = 5
                      Const SW_SHOWMAXIMIZED = 3
                      Const SW_SHOWMINIMIZED = 2
                      Const SW_SHOWMINNOACTIVE = 7
                      Const SW_SHOWNA = 8
                      Const SW_SHOWNOACTIVATE = 4
                      Const SW_SHOWNORMAL = 1

                      Public Declare Function ShowWindow Lib "User32" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long

                      Function Fenetre_Modale(pForm As Form)
                      ShowWindow Application.hWndAccessApp, SW_HIDE
                      ShowWindow pForm.hWnd, SW_SHOWNORMAL
                      ShowWindow Application.hWndAccessApp, SW_SHOWMINNOACTIVE
                      End Function

                      ca je l'ai bien fait je pense, mais j'aimerai qu'il s'ouvre sans le access tous autour, juste quand je clique sur un raccourci, il m'ouvre que la fenêtre

                      il me dit nom_ambigu : "fenetre_modale" et il arrete
                      0
                      1. As tu fais ?

                        'Dans les propriétés du formulaire (autres) mettre le champ fen indépendante à Oui
                        'Dans les propriétés du formulaire (événements) mettre sur ouverture : Fenetre_Modale Me
                        'Dans les propriétés du formulaire (événements) mettre sur fermeture : DoCmd.Quit
                        0
                        1. je fais cela pour tous les formulaires?

                          et le reste du code je le met ou?
                          0
                          1. Pour de se qui est de ta requete je ne vois pas comment tu fais ta modification et comment savoir qu'elle champs tu veux mettre a jour !

                            Si tu peux m'envoyer ta base, je pourrai regardé, car la je ne vois pas se que tu veux faire :)
                            0
                            1. je te l'ai envoyé sur ton mail de profil

                              cordialement, mika
                              0
                          2. Ton code tu le met dans un module ! Ensuite je ne sais pas comment il réagit s'il y a plusieurs formulaires ! Je fait un test et jte tiens au courant :)
                            0
                            1. Pour le formulaire principal tu appliques ca :

                              'Dans les propriétés du formulaire (autres) mettre le champ fen indépendante à Oui
                              'Dans les propriétés du formulaire (événements) mettre sur ouverture : Fenetre_Modale Me
                              'Dans les propriétés du formulaire (événements) mettre sur fermeture : DoCmd.Quit

                              Pour les autres formulaire tu appliques juste :

                              'Dans les propriétés du formulaire (autres) mettre le champ fen indépendante à Oui

                              Cordialement.
                              0
                              1. j'ai réussi l'autre il me manque juste la requête ^^
                                0
                                • 1
                                • 2
                                • 3