Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Cas d'école... Liste déroulante : Probleme de conception ou de réalisation...

4 réponses
Avatar
Geoffroy PINSON
Bonjour,
voici mon modèle relationnel :
R1 Famille (NumFamille, DésignationFamille)
R2 SousFamille(NumsSousFamille, DésignationSousFamille, #NumFamille)
R3 Article (NumArticle, DésignationArticle, #NumSousFamille)

Dans un formulaire article, je voudrais pouvoir afficher la famille et la
sous famille de l'article.
Je veux pouvoir qualifier un article en choisissant sa famille à partir
d'une liste, puis cette liste sert de filtre à la seconde liste SousFamille.
J'y arrive mais en mettant ma liste famille indépendante et ma SousFamille
dépendante du NumSousFamille. Par conséquent quand je navigue dans mes
articles, la SousFamille s'affiche en fonction de l'article, mais PAS la
famille(puisqu'elle est indépendant).
Comme puis-je faire pour avoir une liste déroulante famille complète mais
qu'elle affiche aussi la valeur correspondante à la sous famille ?

C'est dur d'expliquer mais visuellement c'est simple... Désolé.
Merci à vous
Cordialement

4 réponses

Avatar
Argyronet
Bonjour,

J'ai pas tout compris mais je crois en fait que c'est cela :
Je vous préconise l'usage des sous-formulaires avec les propriétés Champs
pères et Champs fils correctement renseignés pour ne serait-ce comprendre le
proncipe à savoir :

Un formulaire principal qui a pour source R1
Un 1er sous formulaire qui a pour source R2
=> et ChampPère / Fils "NumFamille;NumsSousFamille"
Un 2e sous formulaire qui a pour source R3
=> et ChampPère / Fils "NumsSousFamille"

Attention si les champs NumFamille et NumsSousFamille sont des contrôles
nommé différemment (recommandé) du nom du champ, vous devez préciser le nom
du contrôle plutôt que le nom du champ (donc, il vous faut nommer
correctement vos contrôles afin de vous y retrouver).

Maintenant si vous voulez la même chose avec des listes déroulantes, là, il
va falloir user du VBA mais c'est assez simple à réaliser...

--
Argy
http://argyronet.developpez.com/

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient.
Si vous n´obtenez pas la réponse voulue, communiquez différemment



Bonjour,
voici mon modèle relationnel :
R1 Famille (NumFamille, DésignationFamille)
R2 SousFamille(NumsSousFamille, DésignationSousFamille, #NumFamille)
R3 Article (NumArticle, DésignationArticle, #NumSousFamille)

Dans un formulaire article, je voudrais pouvoir afficher la famille et la
sous famille de l'article.
Je veux pouvoir qualifier un article en choisissant sa famille à partir
d'une liste, puis cette liste sert de filtre à la seconde liste SousFamille.
J'y arrive mais en mettant ma liste famille indépendante et ma SousFamille
dépendante du NumSousFamille. Par conséquent quand je navigue dans mes
articles, la SousFamille s'affiche en fonction de l'article, mais PAS la
famille(puisqu'elle est indépendant).
Comme puis-je faire pour avoir une liste déroulante famille complète mais
qu'elle affiche aussi la valeur correspondante à la sous famille ?

C'est dur d'expliquer mais visuellement c'est simple... Désolé.
Merci à vous
Cordialement





Avatar
Argyronet
Bonjour,

J'ai pas tout compris mais je crois en fait que c'est cela :
Je vous préconise l'usage des sous-formulaires avec les propriétés Champs
pères et Champs fils correctement renseignés pour ne serait-ce comprendre le
proncipe à savoir :

Un formulaire principal qui a pour source R1
Un 1er sous formulaire qui a pour source R2
=> et ChampPère / Fils "NumFamille;NumsSousFamille"
Un 2e sous formulaire qui a pour source R3
=> et ChampPère / Fils "NumsSousFamille"

Attention si les champs NumFamille et NumsSousFamille sont des contrôles
nommé différemment (recommandé) du nom du champ, vous devez préciser le nom
du contrôle plutôt que le nom du champ (donc, il vous faut nommer
correctement vos contrôles afin de vous y retrouver).

Maintenant si vous voulez la même chose avec des listes déroulantes, là, il
va falloir user du VBA mais c'est assez simple à réaliser...
--
Argy
http://argyronet.developpez.com/

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient.
Si vous n´obtenez pas la réponse voulue, communiquez différemment



Bonjour,
voici mon modèle relationnel :
R1 Famille (NumFamille, DésignationFamille)
R2 SousFamille(NumsSousFamille, DésignationSousFamille, #NumFamille)
R3 Article (NumArticle, DésignationArticle, #NumSousFamille)

Dans un formulaire article, je voudrais pouvoir afficher la famille et la
sous famille de l'article.
Je veux pouvoir qualifier un article en choisissant sa famille à partir
d'une liste, puis cette liste sert de filtre à la seconde liste SousFamille.
J'y arrive mais en mettant ma liste famille indépendante et ma SousFamille
dépendante du NumSousFamille. Par conséquent quand je navigue dans mes
articles, la SousFamille s'affiche en fonction de l'article, mais PAS la
famille(puisqu'elle est indépendant).
Comme puis-je faire pour avoir une liste déroulante famille complète mais
qu'elle affiche aussi la valeur correspondante à la sous famille ?

C'est dur d'expliquer mais visuellement c'est simple... Désolé.
Merci à vous
Cordialement





Avatar
Geoffroy PINSON
Merci pour ta réponse.

Je veux bien du VBA :)
J'essaie de bidouiller mais je n'y arrive pas.
J'ai mis en lsite déroulante la sous famille sur le formulaire article. Pas
de soucis.
Ensuite j'essaie de faire compléter mon champ indépendant Famille par ce
code :
Dim dbs As Database
Dim rst As Recordset
Dim SousFamille as integer

'récupération de l'identifiant de la SousFamille de l'article
SousFamille = Me!NumSousFamille.Value

Set dbs = CurrentDb()
Set rst = dbs.OpenRecordset("SousFamille")
rst.Index = "primarykey"
rst.Seek "=", SousFamille
Me!Nomfamille.Value = rst![NumFamille].Value
rst.Close
dbs.Close

Mais ça marche pas térrible, ça m'efface le NumSousFamille du formulaire
Article.
Je vais continuer de travailler sur cette piste.
Si vous avez des idées.
Merci à vous
Geoffroy


"Argyronet" a écrit dans le message de
news:
Bonjour,

J'ai pas tout compris mais je crois en fait que c'est cela :
Je vous préconise l'usage des sous-formulaires avec les propriétés Champs
pères et Champs fils correctement renseignés pour ne serait-ce comprendre
le
proncipe à savoir :

Un formulaire principal qui a pour source R1
Un 1er sous formulaire qui a pour source R2
=> et ChampPère / Fils "NumFamille;NumsSousFamille"
Un 2e sous formulaire qui a pour source R3
=> et ChampPère / Fils "NumsSousFamille"

Attention si les champs NumFamille et NumsSousFamille sont des contrôles
nommé différemment (recommandé) du nom du champ, vous devez préciser le
nom
du contrôle plutôt que le nom du champ (donc, il vous faut nommer
correctement vos contrôles afin de vous y retrouver).

Maintenant si vous voulez la même chose avec des listes déroulantes, là,
il
va falloir user du VBA mais c'est assez simple à réaliser...
--
Argy
http://argyronet.developpez.com/

Ce qui donne son sens à la communication, c´est la réponse que l´on
obtient.
Si vous n´obtenez pas la réponse voulue, communiquez différemment



Bonjour,
voici mon modèle relationnel :
R1 Famille (NumFamille, DésignationFamille)
R2 SousFamille(NumsSousFamille, DésignationSousFamille, #NumFamille)
R3 Article (NumArticle, DésignationArticle, #NumSousFamille)

Dans un formulaire article, je voudrais pouvoir afficher la famille et la
sous famille de l'article.
Je veux pouvoir qualifier un article en choisissant sa famille à partir
d'une liste, puis cette liste sert de filtre à la seconde liste
SousFamille.
J'y arrive mais en mettant ma liste famille indépendante et ma
SousFamille
dépendante du NumSousFamille. Par conséquent quand je navigue dans mes
articles, la SousFamille s'affiche en fonction de l'article, mais PAS la
famille(puisqu'elle est indépendant).
Comme puis-je faire pour avoir une liste déroulante famille complète mais
qu'elle affiche aussi la valeur correspondante à la sous famille ?

C'est dur d'expliquer mais visuellement c'est simple... Désolé.
Merci à vous
Cordialement







Avatar
Argyronet
Bien, avec des listes déroulantes, je vous propose de procéder comme suit :
Vous avec un 1er combo (Famille) qui contient un ID et un intitulé, donc
pour vous :
NumFamille, DésignationFamille

De là, sur l'événement AfterUpdate() vous pouvez déclencher le RowSource
du 2ème combo (SousFamille) où sont présents NumsSousFamille,
DésignationSousFamille, #NumFamille

Enfin, sur l'événement AfterUpdate() vous pouvez déclencher le RowSource
du 3ème combo (Articles) où sont présents NumArticle, DésignationArticle,
#NumSousFamille

Voici un exemple:
~~~~~~~~~~~~
Option Compare Database
Option Explicit

Private Sub Form_Load()
'Désactive les listes
lstSousFamille.Enabled = False
lstSousFamille.RowSource = ""
lstArticles.Enabled = False
lstArticles.RowSource = ""
'Rempli la liste des familles
lstFamilles.RowSource = "SELECT [NumFamille], [DésignationFamille] FROM
tblFamilles; "

End Sub

Private Sub lstFamilles_AfterUpdate()
Dim lngIDFamille As Long
Dim SQLRowSource As String

lstSousFamille.Enabled = False
lstSousFamille.RowSource = ""
lstArticles.Enabled = False
lstArticles.RowSource = ""

lngIDFamille = Me!lstFamilles
SQLRowSource = "SELECT [NumSousFamille], [DésignationSousFamille],
[NumFamille] FROM [tblSousFamille]"
SQLRowSource = SQLRowSource & " WHERE NumFamille = " & lngIDFamille
lstSousFamille.RowSource = SQLRowSource
lstSousFamille.Enabled = True
lstSousFamille.SetFocus
End Sub

Private Sub lstSousFamille_AfterUpdate()
Dim lngIDSousFamille As Long
Dim SQLRowSource As String

lngIDSousFamille = Me!lstSousFamille
SQLRowSource = "SELECT [NumArticle], [DésignationArticle],
[NumSousFamille] FROM [tblArticles]"
SQLRowSource = SQLRowSource & " WHERE NumSousFamille = " & lngIDSousFamille
lstArticles.RowSource = SQLRowSource
lstArticles.Enabled = True
lstArticles.SetFocus
End Sub

Private Sub lstArticles_AfterUpdate()
MsgBox "Vous avez choisi l'article : '" & Me!lstArticles.Column(1) & "'" &
vbCrLf & _
"Il appartient à la sous famille des '" & Me!lstSousFamille.Column(1) &
"'" & vbCrLf & _
"qui appartient elle-même à la famille des '" & Me!lstFamilles.Column(1) &
"'"
End Sub

Pour ce faire, crééz 3 tables acec les nom de champs appropriés.
Remplissez toutes les tables
Créez un formulaire vierge avec 3 ListBoxes dûment nommés comme dans
l'exemple ci-dessus et coller le code VBA dans VBE. Compilez et passez en
mode formulaire.

Bon courage
--
Argy
http://argyronet.developpez.com/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://argyronet.developpez.com/

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient.
Si vous n´obtenez pas la réponse voulue, communiquez différemment



Merci pour ta réponse.

Je veux bien du VBA :)
J'essaie de bidouiller mais je n'y arrive pas.
J'ai mis en lsite déroulante la sous famille sur le formulaire article. Pas
de soucis.
Ensuite j'essaie de faire compléter mon champ indépendant Famille par ce
code :
Dim dbs As Database
Dim rst As Recordset
Dim SousFamille as integer

'récupération de l'identifiant de la SousFamille de l'article
SousFamille = Me!NumSousFamille.Value

Set dbs = CurrentDb()
Set rst = dbs.OpenRecordset("SousFamille")
rst.Index = "primarykey"
rst.Seek "=", SousFamille
Me!Nomfamille.Value = rst![NumFamille].Value
rst.Close
dbs.Close

Mais ça marche pas térrible, ça m'efface le NumSousFamille du formulaire
Article.
Je vais continuer de travailler sur cette piste.
Si vous avez des idées.
Merci à vous
Geoffroy


"Argyronet" a écrit dans le message de
news:
Bonjour,

J'ai pas tout compris mais je crois en fait que c'est cela :
Je vous préconise l'usage des sous-formulaires avec les propriétés Champs
pères et Champs fils correctement renseignés pour ne serait-ce comprendre
le
proncipe à savoir :

Un formulaire principal qui a pour source R1
Un 1er sous formulaire qui a pour source R2
=> et ChampPère / Fils "NumFamille;NumsSousFamille"
Un 2e sous formulaire qui a pour source R3
=> et ChampPère / Fils "NumsSousFamille"

Attention si les champs NumFamille et NumsSousFamille sont des contrôles
nommé différemment (recommandé) du nom du champ, vous devez préciser le
nom
du contrôle plutôt que le nom du champ (donc, il vous faut nommer
correctement vos contrôles afin de vous y retrouver).

Maintenant si vous voulez la même chose avec des listes déroulantes, là,
il
va falloir user du VBA mais c'est assez simple à réaliser...
--
Argy
http://argyronet.developpez.com/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://argyronet.developpez.com/

Ce qui donne son sens à la communication, c´est la réponse que l´on
obtient.
Si vous n´obtenez pas la réponse voulue, communiquez différemment



Bonjour,
voici mon modèle relationnel :
R1 Famille (NumFamille, DésignationFamille)
R2 SousFamille(NumsSousFamille, DésignationSousFamille, #NumFamille)
R3 Article (NumArticle, DésignationArticle, #NumSousFamille)

Dans un formulaire article, je voudrais pouvoir afficher la famille et la
sous famille de l'article.
Je veux pouvoir qualifier un article en choisissant sa famille à partir
d'une liste, puis cette liste sert de filtre à la seconde liste
SousFamille.
J'y arrive mais en mettant ma liste famille indépendante et ma
SousFamille
dépendante du NumSousFamille. Par conséquent quand je navigue dans mes
articles, la SousFamille s'affiche en fonction de l'article, mais PAS la
famille(puisqu'elle est indépendant).
Comme puis-je faire pour avoir une liste déroulante famille complète mais
qu'elle affiche aussi la valeur correspondante à la sous famille ?

C'est dur d'expliquer mais visuellement c'est simple... Désolé.
Merci à vous
Cordialement