Access 2003 Liste de choix
Fermé
microsoluces
Messages postés
35
Date d'inscription
samedi 23 septembre 2006
Statut
Membre
Dernière intervention
7 juillet 2014
-
Modifié par microsoluces le 14/09/2012 à 10:06
blux Messages postés 26532 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 18 décembre 2024 - 17 sept. 2012 à 10:23
blux Messages postés 26532 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 18 décembre 2024 - 17 sept. 2012 à 10:23
A voir également:
- Access 2003 Liste de choix
- Liste déroulante de choix excel - Guide
- Liste déroulante en cascade - Guide
- Liste de diffusion whatsapp - 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
- Liste site streaming illégal - Accueil - Services en ligne
4 réponses
microsoluces
Messages postés
35
Date d'inscription
samedi 23 septembre 2006
Statut
Membre
Dernière intervention
7 juillet 2014
4
Modifié par microsoluces le 14/09/2012 à 17:37
Modifié par microsoluces le 14/09/2012 à 17:37
Effectivement je te remercie, je mettais le code VBA au mauvais endroit...
Je n'ai donc plus de message d'erreur mais le système ne fonctionne pas :
J'ai fait un essai avec l'assistant de liste pour que la zone_2 tienne compte
du "nom_aliment" et du "nom_classe" et à l'écran suivant l'assistant m'affiche
l'origine du problème puisqu'il me liste bien dans le colonne 1 le nom de mes aliments mais dans la colonne 2 j'ai les numéros des classes d'aliments au lieu d'avoir leurs noms...
J'ai vérifié ma table "ALIMENTS" qui contient les éléments suivants :
num_auto
nom_aliment
nom_classe (renseigné en liaison avec la table classe_aliments = affiche bien
du texte et pas des numéros ! ! ! )
Tu dis : "Il suffit également de vérifier que la colonne liée de zone_1 est bien celle qui renvoie le nom_classe et non son num_auto. "
Je pense que cela doit venir de ça, et je ne sais pas comment faire...
Je n'ai donc plus de message d'erreur mais le système ne fonctionne pas :
J'ai fait un essai avec l'assistant de liste pour que la zone_2 tienne compte
du "nom_aliment" et du "nom_classe" et à l'écran suivant l'assistant m'affiche
l'origine du problème puisqu'il me liste bien dans le colonne 1 le nom de mes aliments mais dans la colonne 2 j'ai les numéros des classes d'aliments au lieu d'avoir leurs noms...
J'ai vérifié ma table "ALIMENTS" qui contient les éléments suivants :
num_auto
nom_aliment
nom_classe (renseigné en liaison avec la table classe_aliments = affiche bien
du texte et pas des numéros ! ! ! )
Tu dis : "Il suffit également de vérifier que la colonne liée de zone_1 est bien celle qui renvoie le nom_classe et non son num_auto. "
Je pense que cela doit venir de ça, et je ne sais pas comment faire...
blux
Messages postés
26532
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
18 décembre 2024
3 317
Modifié par blux le 14/09/2012 à 12:51
Modifié par blux le 14/09/2012 à 12:51
Salut,
trois lignes de code (pour faire propre) et le tour est joué :
- une liste déroulante zone_1
- une liste déroulante zone_2
- dans l'évènement 'sur changement' de zone_1, mettre le code suivant :
Il suffit également de vérifier que la colonne liée de zone_1 est bien celle qui renvoie le nom_classe et non son num_auto.
Mais si je peux me permettre, nom_classe ne devrait pas apparaitre dans la table 'aliments', mais il devrait y avoir num_auto (celui de la table classe_aliment). Ce sera plus simple si un jour tu mets en relation tes tables et que l'intitulé d'une classe d'aliments change...
A+ blux
trois lignes de code (pour faire propre) et le tour est joué :
- une liste déroulante zone_1
- une liste déroulante zone_2
- dans l'évènement 'sur changement' de zone_1, mettre le code suivant :
Dim StrSql As String StrSql = "SELECT nom_aliment from aliments where nom_classe = '" & zone_1.Value & "';" zone_2.RowSource = StrSql
Il suffit également de vérifier que la colonne liée de zone_1 est bien celle qui renvoie le nom_classe et non son num_auto.
Mais si je peux me permettre, nom_classe ne devrait pas apparaitre dans la table 'aliments', mais il devrait y avoir num_auto (celui de la table classe_aliment). Ce sera plus simple si un jour tu mets en relation tes tables et que l'intitulé d'une classe d'aliments change...
A+ blux
"Les cons, ça ose tout. C'est même à ça qu'on les reconnait"
Merci pour ta réponse Blux, hélàs j'ai du faire une mauvaise manip car
j'obtiens un message d'erreur :
Microsoft Office Access ne peut pas trouver l'objet "Dim StrSql As String
StrSql = "SELECT nom_aliment from aliments where nom_classe = '"&zone1".
Si "Dim StrSql As String
StrSql = "SELECT nom_aliment from aliments where nom_classe = '"&zone1" est
une nouvelle macros, vérifiez qu'il (elle) est enregistré(e) et que vous avez correctement tapé son nom...
Ai je copié ton code au mauvais endroit ou mes tables sont mal construites ?
(Merci de venir à mon secours une nouvelle fois Blux, tu m'avais déjà aidé quand
j'avais construit une moulinette pour verifier les tarifs à la hausse entre 2 tables)
(http://www.commentcamarche.net/forum/affich-2420206-access-requete-update-en-sql)
j'obtiens un message d'erreur :
Microsoft Office Access ne peut pas trouver l'objet "Dim StrSql As String
StrSql = "SELECT nom_aliment from aliments where nom_classe = '"&zone1".
Si "Dim StrSql As String
StrSql = "SELECT nom_aliment from aliments where nom_classe = '"&zone1" est
une nouvelle macros, vérifiez qu'il (elle) est enregistré(e) et que vous avez correctement tapé son nom...
Ai je copié ton code au mauvais endroit ou mes tables sont mal construites ?
(Merci de venir à mon secours une nouvelle fois Blux, tu m'avais déjà aidé quand
j'avais construit une moulinette pour verifier les tarifs à la hausse entre 2 tables)
(http://www.commentcamarche.net/forum/affich-2420206-access-requete-update-en-sql)
blux
Messages postés
26532
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
18 décembre 2024
3 317
14 sept. 2012 à 14:56
14 sept. 2012 à 14:56
Tu n'as pas du mettre le code dans la propriété 'sur changement' de ta liste zone1...
Il faut faire un clic sur la ligne de l'évènement, développer la liste déroulante qui se trouve à droite de la ligne et choisir '[Procédure événementielle]', cliquer ensuite sur les trois petits points à droite, ça ouvre la fenêtre VBA sur l'évènement choisi, il suffit de coller le code entre Private Sub et End Sub
Il faut faire un clic sur la ligne de l'évènement, développer la liste déroulante qui se trouve à droite de la ligne et choisir '[Procédure événementielle]', cliquer ensuite sur les trois petits points à droite, ça ouvre la fenêtre VBA sur l'évènement choisi, il suffit de coller le code entre Private Sub et End Sub
Salut Blux,
Effectivement, c'est beaucoup plus clair !
Dès vendredi j'avais suivi ton conseil pour le num_auto...
Au début, je ne comprenais pas pourquoi car je ne voyais pas
comment remplir manuellement mes tables en saisissant des
numéro ID plutôt que des noms.
En fouinant sur le net, j'ai vu que tout le monde disait comme
toi (num_auto) et en creusant qu'on pouvait afficher une liste
de choix dans la table qui avec le réglage que tu donnes sur la
largeur des colonnes permettait de visualiser des noms plutôt
que des ID...
Je vais retourner sur mon formulaire pour mettre en pratique
tes explications... (sur un autre forum j'ai lu également que l'on
pouvait désactiver (en grisé) la liste 2 tant qu'un choix n'avait
pas été fait dans la liste 1 : c'est tip top !)
Encore merci Blux !
Effectivement, c'est beaucoup plus clair !
Dès vendredi j'avais suivi ton conseil pour le num_auto...
Au début, je ne comprenais pas pourquoi car je ne voyais pas
comment remplir manuellement mes tables en saisissant des
numéro ID plutôt que des noms.
En fouinant sur le net, j'ai vu que tout le monde disait comme
toi (num_auto) et en creusant qu'on pouvait afficher une liste
de choix dans la table qui avec le réglage que tu donnes sur la
largeur des colonnes permettait de visualiser des noms plutôt
que des ID...
Je vais retourner sur mon formulaire pour mettre en pratique
tes explications... (sur un autre forum j'ai lu également que l'on
pouvait désactiver (en grisé) la liste 2 tant qu'un choix n'avait
pas été fait dans la liste 1 : c'est tip top !)
Encore merci Blux !
blux
Messages postés
26532
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
18 décembre 2024
3 317
17 sept. 2012 à 10:23
17 sept. 2012 à 10:23
Au lieu de griser, tu peux plutôt la masquer.
Il te suffit pour cela, dans l'évènement 'sur ouverture' de ton formulaire qui contient les listes de mettre un zone_2.visible = false et dans l'évènement 'sur changement' de zone_1 de rajouter (en plus du code de construction de l'affichage) zone_2.visible = true
Il te suffit pour cela, dans l'évènement 'sur ouverture' de ton formulaire qui contient les listes de mettre un zone_2.visible = false et dans l'évènement 'sur changement' de zone_1 de rajouter (en plus du code de construction de l'affichage) zone_2.visible = true
Modifié par blux le 17/09/2012 à 10:24
Dans l'onglet 'données' :
- contenu : c'est en gros, la requête (ou autre chose) que l'on va exécuter pour afficher les résultats dans la liste
- colonne liée : c'est la valeur de la colonne que va renvoyer la liste quand on demandera son contenu (liste_1.value). Si le contenu est 'SELECT toto, tata, titi FROM table et que la colonne liée est la 2, cela renverra la valeur de tata (indépendamment de ce qui peut être affiché)
Dans l'onglet 'format' :
- Nbre colonnes : combien de colonnes seront (théoriquement) affichées. Si on reprend la requête que j'ai donné en exemple au-dessus, on peut mettre 1, 2 ou 3.
- Largeur colonnes : définit si les colonnes seront affichées ou non, en fonction de leur largeur. On trouvera par exemple : 3;0;1, ce qui veut dire que la colonne toto sera affichée sur 3 cm de large, la colonne tata ne sera pas affichée (largeur 0) et la colonne titi sera affichée sur 1 cm de large.
C'est comme ça que l'on peut afficher une zone de liste avec par exemple, un nom prénom, mais travailler en vrai avec un numéro interne.
Ex :
Contenu : SELECT id,nom,prénom FROM table;
Colonne liée : 1
Nbre colonnes : 3
Largeur colonnes : 0;3;3
La zone de liste affichera nom et prénom mais renverra id quand on lui demandera sa valeur.
C'est plus clair ?
Et si tu le peux encore change ta table 'aliments' pour remplacer 'nom_aliment' par le 'num_auto' de la table 'classe_aliments'...