[Access VBA] Ajouter élément à zone liste
Résolu/Fermé
Dédé86
Messages postés
682
Date d'inscription
vendredi 23 décembre 2005
Statut
Membre
Dernière intervention
14 mars 2017
-
18 juin 2008 à 18:49
LatelyGeek Messages postés 1758 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 5 janvier 2023 - 19 juin 2008 à 19:58
LatelyGeek Messages postés 1758 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 5 janvier 2023 - 19 juin 2008 à 19:58
A voir également:
- [Access VBA] Ajouter élément à zone liste
- Zone telechargement - Accueil - Outils
- Liste déroulante excel - Guide
- Liste déroulante en cascade - Guide
- Gertrude a préparé la liste des affaires à prendre pour l'excursion. juliette a modifié cette liste en utilisant le mode suivi des modifications proposé par le traitement de texte. - Guide
- Ajouter un compte gmail - Guide
9 réponses
Dédé86
Messages postés
682
Date d'inscription
vendredi 23 décembre 2005
Statut
Membre
Dernière intervention
14 mars 2017
208
19 juin 2008 à 18:06
19 juin 2008 à 18:06
Je reprends mes explications depuis le début :
J'ai 3 tables :
GL(NoGL,NomGL)
GG(NoGG,NomGG,#NoGL)
Utilisateur(NoUtilisateur,NomUtilisateur,#NoGL)
Un GL peut contenir 1 ou plusieurs GG
Un GG peut contenir 1 ou plusieurs Utilisateurs
Dans mon formulaire, j'ai 3 zones de liste :
Une qui s'appelle zl_gl et qui affiche tous les GL de ma table GL.
Une qui s'appelle zl_gg et qui affiche tous les GG de ma table GG.
Une qui s'appelle zl_utilisateur et qui affiche tous les Utilisateurs de ma table Utilisateur.
Quand je clique sur un élément de ma zone de liste zl_gl, l'événement Après MAJ se déclenche et affiche dans la zone de liste zl_gg les éléments correspondants au GL sur lequel j'ai cliqué. Voici le code de l'événement :
Quand je clique sur un élément de ma zone de liste zl_gg, l'événement Après MAJ se déclenche et affiche dans la zone de liste zl_utilisateur les utilisateurs correspondants au GG sur lequel j'ai cliqué. Voici le code de l'événement :
Jusqu'à la, pas de problème. Voici ou je bloque :
J'ai ajouté une zone de texte nommée zone_texte_aj_utilisateur permettant d'ajouter un utilisateur ainsi qu'un bouton Valider qui exécute l'événement Sur clic. J'arrive à enregistrer un nouvel utilisateur dans la base de donnée avec un noGG définit à l'avance mais voilà ou je bloque :
Je n'arrive pas à récupérer le noGG de l'élément sur lequel j'ai cliqué dans ma zone de liste zl_gg pour l'insérer dans ma requête INSERT quand je clique sur le bouton Valider
Voici le code de l'événement Sur Clic de mon bouton but_commande_aj_enregistrement :
(j'ai mis en gras ou ça ne fonctionne pas).
Pouvez-vous m'aider ??
J'ai 3 tables :
GL(NoGL,NomGL)
GG(NoGG,NomGG,#NoGL)
Utilisateur(NoUtilisateur,NomUtilisateur,#NoGL)
Un GL peut contenir 1 ou plusieurs GG
Un GG peut contenir 1 ou plusieurs Utilisateurs
Dans mon formulaire, j'ai 3 zones de liste :
Une qui s'appelle zl_gl et qui affiche tous les GL de ma table GL.
Une qui s'appelle zl_gg et qui affiche tous les GG de ma table GG.
Une qui s'appelle zl_utilisateur et qui affiche tous les Utilisateurs de ma table Utilisateur.
Quand je clique sur un élément de ma zone de liste zl_gl, l'événement Après MAJ se déclenche et affiche dans la zone de liste zl_gg les éléments correspondants au GL sur lequel j'ai cliqué. Voici le code de l'événement :
Private Sub zl_gl_AfterUpdate() Dim sql As String sql = "SELECT GG.NomGG,GG.NoGG FROM GG WHERE GG.NoGL = Forms!Administration.zl_gl;" Me.zl_gg.RowSourceType = "Table/Query" Me.zl_gg.RowSource = sql End Sub
Quand je clique sur un élément de ma zone de liste zl_gg, l'événement Après MAJ se déclenche et affiche dans la zone de liste zl_utilisateur les utilisateurs correspondants au GG sur lequel j'ai cliqué. Voici le code de l'événement :
Private Sub zl_gg_AfterUpdate() Dim sql As String sql = "SELECT Utilisateur.NoUtilisateur,Utilisateur.NomUtilisateur FROM Utilisateur WHERE Utilisateur.NoGG=Forms!Administration.zl_gg;" Me.zl_utilisateur.RowSourceType = "Table/Query" Me.zl_utilisateur.RowSource = sql End Sub
Jusqu'à la, pas de problème. Voici ou je bloque :
J'ai ajouté une zone de texte nommée zone_texte_aj_utilisateur permettant d'ajouter un utilisateur ainsi qu'un bouton Valider qui exécute l'événement Sur clic. J'arrive à enregistrer un nouvel utilisateur dans la base de donnée avec un noGG définit à l'avance mais voilà ou je bloque :
Je n'arrive pas à récupérer le noGG de l'élément sur lequel j'ai cliqué dans ma zone de liste zl_gg pour l'insérer dans ma requête INSERT quand je clique sur le bouton Valider
Voici le code de l'événement Sur Clic de mon bouton but_commande_aj_enregistrement :
Dim contenu As String Dim sql As String contenu = zone_texte_aj_utilisateur.Value Dim db As DAO.Database Set db = CurrentDb db.Execute "INSERT INTO Utilisateur (NomUtilisateur,NoGG) VALUES('" & contenu & "',Forms!Administration.zl_gg.NoGL);" db.Close 'Dans le code suivant, je remets à jour ma zone de liste avec les nouvelles valeurs sql = "SELECT Utilisateur.NoUtilisateur,Utilisateur.NomUtilisateur FROM Utilisateur WHERE Utilisateur.NoGG=Forms!Administration.zl_gg;" Me.zl_utilisateur.RowSourceType = "Table/Query" Me.zl_utilisateur.RowSource = sql
(j'ai mis en gras ou ça ne fonctionne pas).
Pouvez-vous m'aider ??
LatelyGeek
Messages postés
1758
Date d'inscription
vendredi 4 janvier 2008
Statut
Membre
Dernière intervention
5 janvier 2023
550
18 juin 2008 à 20:09
18 juin 2008 à 20:09
Ca dépend. D'où viennent les données du SQL? Si c'est d'une table, que le contrôle de la zone de liste contient un champ de la table en question, c'est automatique ou presque.
En d'autres termes, à quoi sert la nouvelle valeur rentrée par l'utilisateur?
En d'autres termes, à quoi sert la nouvelle valeur rentrée par l'utilisateur?
Dédé86
Messages postés
682
Date d'inscription
vendredi 23 décembre 2005
Statut
Membre
Dernière intervention
14 mars 2017
208
18 juin 2008 à 20:31
18 juin 2008 à 20:31
Oui les données proviennent d'une table. Et la nouvelle valeur rentrée par l'utilisateur sera insérée dans la base de donnée. Je crois savoir où tu veux en venir : il faut que je crée la requête pour enregistrer la nouvelle valeur dans la base de donnée et réactualiser l'affichage avec la nouvelle valeur n'est-ce pas ? je vais regarder ça...
Merci.
Merci.
Dédé86
Messages postés
682
Date d'inscription
vendredi 23 décembre 2005
Statut
Membre
Dernière intervention
14 mars 2017
208
18 juin 2008 à 23:17
18 juin 2008 à 23:17
C'est bon ça fonctionne maintenant :) . Par contre je voudrais dans ma requête Insert ajouter la clé étrangère d'un élément de la zone de liste sur laquelle j'ai cliqué précédement.
Peux-tu m'aider ?
Peux-tu m'aider ?
LatelyGeek
Messages postés
1758
Date d'inscription
vendredi 4 janvier 2008
Statut
Membre
Dernière intervention
5 janvier 2023
550
18 juin 2008 à 23:46
18 juin 2008 à 23:46
Je pense que oui, je peux t'aider, mais sois plus précis. Nom des champs, des tables, nom du formulaire, ce qui se passe exactement etc.
Dédé86
Messages postés
682
Date d'inscription
vendredi 23 décembre 2005
Statut
Membre
Dernière intervention
14 mars 2017
208
19 juin 2008 à 00:03
19 juin 2008 à 00:03
Voilà mon problème précisément :
Dans mon formulaire j'ai 2 zones de liste qui correspondent à 2 tables (GG et Utilisateurs). Un GG correspond à 1 ou N utilisateurs. Donc quand je clique sur un élément de la liste GG j'ai dans utilisateurs la liste des utilisateurs correspondants aux GG (grâce à la clé étrangère).
Quand j'ajoute dans ma zone de texte un nouvel utilisateur, quand j'appuie sur le bouton valider la requête s'exécute et je remets à jour ma zone de liste des utlisateurs avec le nouvel utilisateur. Jusqu'à là pas de problème, sauf pour la clé étrangère... en effet, je dois la récupérer pour la mettre dans ma requête Insert.... je ne sais pas trop comment faire pour la récupérer....
En fait, je pensais accéder à l'élément sur lequel j'avais cliqué dans GG et récupérer sa clé primaire (donc clé étrangère pour utilisateur) et la mettre dans mon insert... Je ne sais pas si la technique est bonne... ni si cela est possible...
peux-tu m'aider ?? suis-je assez claire ? redemande-moi si il y a des choses que tu ne comprends pas.
Merci à toi.
Dans mon formulaire j'ai 2 zones de liste qui correspondent à 2 tables (GG et Utilisateurs). Un GG correspond à 1 ou N utilisateurs. Donc quand je clique sur un élément de la liste GG j'ai dans utilisateurs la liste des utilisateurs correspondants aux GG (grâce à la clé étrangère).
Quand j'ajoute dans ma zone de texte un nouvel utilisateur, quand j'appuie sur le bouton valider la requête s'exécute et je remets à jour ma zone de liste des utlisateurs avec le nouvel utilisateur. Jusqu'à là pas de problème, sauf pour la clé étrangère... en effet, je dois la récupérer pour la mettre dans ma requête Insert.... je ne sais pas trop comment faire pour la récupérer....
En fait, je pensais accéder à l'élément sur lequel j'avais cliqué dans GG et récupérer sa clé primaire (donc clé étrangère pour utilisateur) et la mettre dans mon insert... Je ne sais pas si la technique est bonne... ni si cela est possible...
peux-tu m'aider ?? suis-je assez claire ? redemande-moi si il y a des choses que tu ne comprends pas.
Merci à toi.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
LatelyGeek
Messages postés
1758
Date d'inscription
vendredi 4 janvier 2008
Statut
Membre
Dernière intervention
5 janvier 2023
550
19 juin 2008 à 11:15
19 juin 2008 à 11:15
Je pense que j'ai compris, mais tu n'es pas encore assez précise.
A priori ta zone de liste GG contient le NUMERO, qui sert de clé étrangère. Si oui, c'est simple:
Dans ta requête INSERT, tu peux utiliser Forms!NomDuFormulaire!ChoixGG
(C'est là que je dis que tu n'es pas assez précise, parce que tu ne me donnes pas le nom du formulaire ni celui des zones de liste. J'espère que tu sauras transcrire mes réponses dans ta base)
A priori ta zone de liste GG contient le NUMERO, qui sert de clé étrangère. Si oui, c'est simple:
Dans ta requête INSERT, tu peux utiliser Forms!NomDuFormulaire!ChoixGG
(C'est là que je dis que tu n'es pas assez précise, parce que tu ne me donnes pas le nom du formulaire ni celui des zones de liste. J'espère que tu sauras transcrire mes réponses dans ta base)
Dédé86
Messages postés
682
Date d'inscription
vendredi 23 décembre 2005
Statut
Membre
Dernière intervention
14 mars 2017
208
19 juin 2008 à 13:35
19 juin 2008 à 13:35
Bonjour,
D'accord je vois ce que tu veux dire (et je m'excuse de ne pas être assez précis). Le nom de mon forumulaire est Administration. Celui de ma zone de liste GG est zl_gg. Dans ma requête Insert qui me permet d'ajouter des utilisateurs dans ma zone de liste utilisateurs, j'ai ça :
db.Execute "INSERT INTO Utilisateur (NomUtilisateur,NoGG) VALUES('" & contenu & "', '" & Forms!Administration.zl_gg.NoGL & "');"
Je rencontre une erreur de syntaxte dans la requête (je pense que c'est dû au formulaire). Peux-tu me venir en aide ?
D'accord je vois ce que tu veux dire (et je m'excuse de ne pas être assez précis). Le nom de mon forumulaire est Administration. Celui de ma zone de liste GG est zl_gg. Dans ma requête Insert qui me permet d'ajouter des utilisateurs dans ma zone de liste utilisateurs, j'ai ça :
db.Execute "INSERT INTO Utilisateur (NomUtilisateur,NoGG) VALUES('" & contenu & "', '" & Forms!Administration.zl_gg.NoGL & "');"
Je rencontre une erreur de syntaxte dans la requête (je pense que c'est dû au formulaire). Peux-tu me venir en aide ?
LatelyGeek
Messages postés
1758
Date d'inscription
vendredi 4 janvier 2008
Statut
Membre
Dernière intervention
5 janvier 2023
550
19 juin 2008 à 13:46
19 juin 2008 à 13:46
Ca pourrait venir de là...
Forms!Administration!zl_gg.NoG
Forms!Administration!zl_gg.NoG
Dédé86
Messages postés
682
Date d'inscription
vendredi 23 décembre 2005
Statut
Membre
Dernière intervention
14 mars 2017
208
19 juin 2008 à 14:25
19 juin 2008 à 14:25
Non ça ne marche pas :(... Tu as d'autres suggestions ?
Dédé86
Messages postés
682
Date d'inscription
vendredi 23 décembre 2005
Statut
Membre
Dernière intervention
14 mars 2017
208
19 juin 2008 à 14:31
19 juin 2008 à 14:31
Je ne sais pas si je m'exprime clairement mais je cherche à récupérer la clé étrangère de l'élément sur lequel j'ai cliqué dans la zone de liste GG pour l'enregistrer dans ma requête INSERT...
Une autre précision également : le code se déclenche après que je clique sur un bouton qui me permet d'ajouter un utilisateur.
Une autre précision également : le code se déclenche après que je clique sur un bouton qui me permet d'ajouter un utilisateur.
LatelyGeek
Messages postés
1758
Date d'inscription
vendredi 4 janvier 2008
Statut
Membre
Dernière intervention
5 janvier 2023
550
19 juin 2008 à 15:00
19 juin 2008 à 15:00
Soit tu t'exprimes mal, soit je comprends mal.... Ca se pourrait que ça soit moi vu que tout à l'heure j'ai corrigé trop vite:
Forms!Administration!zl_gg
Inutile de mettre N°GG puisque c'est précisément ce que contient la liste.
Forms!Administration!zl_gg
Inutile de mettre N°GG puisque c'est précisément ce que contient la liste.
Dédé86
Messages postés
682
Date d'inscription
vendredi 23 décembre 2005
Statut
Membre
Dernière intervention
14 mars 2017
208
19 juin 2008 à 15:23
19 juin 2008 à 15:23
ça ne fonctionne toujours pas :-(
Sur quoi puis-je t'éclairer pour mon problème ?
Sur quoi puis-je t'éclairer pour mon problème ?
Azertix
>
Dédé86
Messages postés
682
Date d'inscription
vendredi 23 décembre 2005
Statut
Membre
Dernière intervention
14 mars 2017
19 juin 2008 à 15:32
19 juin 2008 à 15:32
Il faut créer un critère en utilisant la DAO ;)
Dédé86
Messages postés
682
Date d'inscription
vendredi 23 décembre 2005
Statut
Membre
Dernière intervention
14 mars 2017
208
>
Azertix
19 juin 2008 à 15:33
19 juin 2008 à 15:33
D'accord si tu le dis mais comment puis-je le faire s'il te plaît lol ?
Merci
Merci
LatelyGeek
Messages postés
1758
Date d'inscription
vendredi 4 janvier 2008
Statut
Membre
Dernière intervention
5 janvier 2023
550
19 juin 2008 à 19:58
19 juin 2008 à 19:58
Juste pour mon info, dans quelle colone de ta zone de liste était le N°GG, et quelle était la colonne liée????
Parce que si tu l'avais mis en tant que colonne liée, il suffisait d'utiliser directement le nom de la zone, sans donner de numéro de colonne, tu vois ce que je veux dire?
Parce que si tu l'avais mis en tant que colonne liée, il suffisait d'utiliser directement le nom de la zone, sans donner de numéro de colonne, tu vois ce que je veux dire?
19 juin 2008 à 19:20
Merci à tous de m'avoir orienté.
A plus tard.