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

Remplir un champ à partir des informations d'une liste déroulant e

7 réponses
Avatar
Yves
bonjour,

Sous ACCESS 2003.

J'ai 2 champs dans une table :
1 champ produit
1 champ code produit

Dans un formulaire, mon champ produit est une liste déroulante
Je souhaite que le champ "code produit" se remplisse automatiquement, en
fonction du produit saisi par la laiste déroulante dans le champ "produit"

Comment faire ?

Merci

7 réponses

Avatar
TopJB
Bonjour,

Je suppose que ta liste déroulante contient le "code produit" et le "nom
produit" dans le résultat de la requête qui est la source de ta liste
déroulante.

Ex : propriété Contenu (Requête résultat) : SELECT [Code produit], [Nom
produit] FROM "Ta table" WHERE "Tes critères de sélection" (si tu en as)

Si tu es dans cette situation :

Il te faut créé un code événementiel après mise à jour de ta liste du
style :

me.code_produit = me.nom_produit.column(x) x étant ton numéro de colonne
'(Code produit)' - 1 par rapport à l'ordre de ta requête.

ex : si tu as dans l'ordre des colonnes de ta requête :
Code produit Nom Produit
il faut que tu ajoute la ligne suivante,
me.code_produit= me.nom_produit(0)

Ce qui enverra la valeur code produit de ta liste déroulante vers ton
champ Code_produit.

Cordialement

Yves a écrit :
bonjour,

Sous ACCESS 2003.

J'ai 2 champs dans une table :
1 champ produit
1 champ code produit

Dans un formulaire, mon champ produit est une liste déroulante
Je souhaite que le champ "code produit" se remplisse automatiquement, en
fonction du produit saisi par la laiste déroulante dans le champ "produit"

Comment faire ?

Merci




Avatar
Yves
Bonsoir,

Merci pour cette réponse. Je comprends la logique, mais un problème se pose :
Comment déclarer cette macro "me" ?

Lorsque j'insère la ligne me.Ingrédients= me.Code article(2)
(il s'agit de mes noms de chmaps réels)
un message d'erreur m'indique que la macro "me" n'existe pas.

Est-ce qu'il s'agit d'une macro prédéfinie ?

Merci

Bien à toi

Yves


"TopJB" a écrit :

Bonjour,

Je suppose que ta liste déroulante contient le "code produit" et le "nom
produit" dans le résultat de la requête qui est la source de ta liste
déroulante.

Ex : propriété Contenu (Requête résultat) : SELECT [Code produit], [Nom
produit] FROM "Ta table" WHERE "Tes critères de sélection" (si tu en as)

Si tu es dans cette situation :

Il te faut créé un code événementiel après mise à jour de ta liste du
style :

me.code_produit = me.nom_produit.column(x) x étant ton numéro de colonne
'(Code produit)' - 1 par rapport à l'ordre de ta requête.

ex : si tu as dans l'ordre des colonnes de ta requête :
Code produit Nom Produit
il faut que tu ajoute la ligne suivante,
me.code_produit= me.nom_produit(0)

Ce qui enverra la valeur code produit de ta liste déroulante vers ton
champ Code_produit.

Cordialement

Yves a écrit :
> bonjour,
>
> Sous ACCESS 2003.
>
> J'ai 2 champs dans une table :
> 1 champ produit
> 1 champ code produit
>
> Dans un formulaire, mon champ produit est une liste déroulante
> Je souhaite que le champ "code produit" se remplisse automatiquement, en
> fonction du produit saisi par la laiste déroulante dans le champ "produit"
>
> Comment faire ?
>
> Merci
>
>



Avatar
TopJB
Bonjour,

Non ce n'est pas une macro mais du code VB access.
Dans la propriété après mise à jour. Tu as une petite flèche à droite,
dans la liste qui s'ouvre tu doit avoir "[Procédure événementielle]". Il
faut choisir cette valeur. Puis cliquer sur le bouton avec les ... a coté.

La tu entre dans le code Vb Access. Et donc tu dois avoir quelque chose
du genre :

Private Sub Code_article_AfterUpdate()

End Sub

Et entre la ligne débutant par Private Sub ... et la ligne End Sub (qui
représente pour faire simple la fonction qui sera exécuter lorsque tu
sélectionneras un produit dans la liste), tu ajoutes le code suivant :

Me.Ingrédients = Me.Code_article.column(2)

Ce qui doit donner au final quelque chose comme

Private Sub Code_article_AfterUpdate()
Me.Ingrédients = Me.Code_article.column(2)
End Sub

Ensuite tu enregistres et il ne reste plus qu'à tester.

De plus, si cette fonction ne te donne pas satisfaction lors des tests
(la valeur ne s'affiche pas), tu reviens dans le code (même procédure
que plus haut "...") Tu ajoute la ligne suivante :

Me.Ingrédients.refresh

Qui force le rafraichissement de la zone de texte.

Après il faut bien sûr ajuster ton code selon le nom de tes champs.

Mais si la ligne que tu as donnée correspond au nom de tes champs je
pense que le code que je t'ai donné devrait fonctionner.

Complément d'informations :
"me" n'est pas une macro mais une référence au formulaire dans le code
Vb Access.

Elle permet d'accéder par code au divers champs ainsi qu'à leurs
propriétés, elle permet également de modifier les propriétés du
formulaire par code, ce qui permet dans certains cas de modifier par
exemple : la propriété d'affichage continu ou simple du formulaire. Et
bien d'autres choses encore. Mais pour cela il y a de l'aide sur
Internet très bien faite et sinon des livres sur le sujet.

Mais il est vrai que si tu n'as jamais fais de programmation cela te
semblera peut être un peu barbare mais tous le monde peut y arriver avec
de l'aide et un peu de pratique et beaucoup de curiosité ;)

Aide supplémentaire :
Regarde le point 5 de ce lien pour voir que Access n'est pas que des
tables, des requêtes, des états et des macros.
http://heureuxoli.developpez.com/office/word/vba01/

Et ce lien aussi devrait t'aider un peu aussi :
http://access.developpez.com/faq/?page=zdl#ListBoxColumn

Et ce lien décrit exactement ce que je viens de te donner comme solutions :
http://access.developpez.com/faq/?page=TAZdt#RenvVal

Yves a écrit :
Bonsoir,

Merci pour cette réponse. Je comprends la logique, mais un problème se pose :
Comment déclarer cette macro "me" ?

Lorsque j'insère la ligne me.Ingrédients= me.Code article(2)
(il s'agit de mes noms de chmaps réels)
un message d'erreur m'indique que la macro "me" n'existe pas.

Est-ce qu'il s'agit d'une macro prédéfinie ?

Merci

Bien à toi

Yves


"TopJB" a écrit :

Bonjour,

Je suppose que ta liste déroulante contient le "code produit" et le "nom
produit" dans le résultat de la requête qui est la source de ta liste
déroulante.

Ex : propriété Contenu (Requête résultat) : SELECT [Code produit], [Nom
produit] FROM "Ta table" WHERE "Tes critères de sélection" (si tu en as)

Si tu es dans cette situation :

Il te faut créé un code événementiel après mise à jour de ta liste du
style :

me.code_produit = me.nom_produit.column(x) x étant ton numéro de colonne
'(Code produit)' - 1 par rapport à l'ordre de ta requête.

ex : si tu as dans l'ordre des colonnes de ta requête :
Code produit Nom Produit
il faut que tu ajoute la ligne suivante,
me.code_produit= me.nom_produit(0)

Ce qui enverra la valeur code produit de ta liste déroulante vers ton
champ Code_produit.

Cordialement

Yves a écrit :
bonjour,

Sous ACCESS 2003.

J'ai 2 champs dans une table :
1 champ produit
1 champ code produit

Dans un formulaire, mon champ produit est une liste déroulante
Je souhaite que le champ "code produit" se remplisse automatiquement, en
fonction du produit saisi par la laiste déroulante dans le champ "produit"

Comment faire ?

Merci








Avatar
Yves
Bonjour,

Merci pour ces explications.

J'ai avancé d'un grand pas !

En fait je me trompais, car je faisais référence, dans le code, aux noms de
champs et non aux noms des objets (zone de texte et liste déroulante).

donc, maintenant j'obtiens ce code :
Private Sub liste_ingredients_AfterUpdate()
Texte26 = liste_ingredients.Column(1)
End Sub

Avec la colonne 1, ma zone de texte récupère bien le contenu de la liste
déroulante. Or ce n'est aps ce que je veux !
Je veux qu'elle récupère le code article correspondant à l'ingrédient
sélectionné dasn la liste.
Le code article étant stocké dans une autre table. Celle qui est liée et qui
me permet déjà de remplir ma liste déroulante.

Je te copie la requête qui me permet de créer ma liste déroulante :
SELECT mercurial.Code_article, mercurial.Article FROM mercurial ORDER BY
[Article];

C'est donc dans la table "mercurial" que je souhaite aller chercher le code
article. suis je assez clair ?

En tous cas, merci encore pour tes explications claires et détaillées !

Yves

"TopJB" a écrit :

Bonjour,

Non ce n'est pas une macro mais du code VB access.
Dans la propriété après mise à jour. Tu as une petite flèche à droite,
dans la liste qui s'ouvre tu doit avoir "[Procédure événementielle]". Il
faut choisir cette valeur. Puis cliquer sur le bouton avec les ... a coté.

La tu entre dans le code Vb Access. Et donc tu dois avoir quelque chose
du genre :

Private Sub Code_article_AfterUpdate()

End Sub

Et entre la ligne débutant par Private Sub ... et la ligne End Sub (qui
représente pour faire simple la fonction qui sera exécuter lorsque tu
sélectionneras un produit dans la liste), tu ajoutes le code suivant :

Me.Ingrédients = Me.Code_article.column(2)

Ce qui doit donner au final quelque chose comme

Private Sub Code_article_AfterUpdate()
Me.Ingrédients = Me.Code_article.column(2)
End Sub

Ensuite tu enregistres et il ne reste plus qu'à tester.

De plus, si cette fonction ne te donne pas satisfaction lors des tests
(la valeur ne s'affiche pas), tu reviens dans le code (même procédure
que plus haut "...") Tu ajoute la ligne suivante :

Me.Ingrédients.refresh

Qui force le rafraichissement de la zone de texte.

Après il faut bien sûr ajuster ton code selon le nom de tes champs.

Mais si la ligne que tu as donnée correspond au nom de tes champs je
pense que le code que je t'ai donné devrait fonctionner.

Complément d'informations :
"me" n'est pas une macro mais une référence au formulaire dans le code
Vb Access.

Elle permet d'accéder par code au divers champs ainsi qu'à leurs
propriétés, elle permet également de modifier les propriétés du
formulaire par code, ce qui permet dans certains cas de modifier par
exemple : la propriété d'affichage continu ou simple du formulaire. Et
bien d'autres choses encore. Mais pour cela il y a de l'aide sur
Internet très bien faite et sinon des livres sur le sujet.

Mais il est vrai que si tu n'as jamais fais de programmation cela te
semblera peut être un peu barbare mais tous le monde peut y arriver avec
de l'aide et un peu de pratique et beaucoup de curiosité ;)

Aide supplémentaire :
Regarde le point 5 de ce lien pour voir que Access n'est pas que des
tables, des requêtes, des états et des macros.
http://heureuxoli.developpez.com/office/word/vba01/

Et ce lien aussi devrait t'aider un peu aussi :
http://access.developpez.com/faq/?page=zdl#ListBoxColumn

Et ce lien décrit exactement ce que je viens de te donner comme solutions :
http://access.developpez.com/faq/?page=TAZdt#RenvVal

Yves a écrit :
> Bonsoir,
>
> Merci pour cette réponse. Je comprends la logique, mais un problème se pose :
> Comment déclarer cette macro "me" ?
>
> Lorsque j'insère la ligne me.Ingrédients= me.Code article(2)
> (il s'agit de mes noms de chmaps réels)
> un message d'erreur m'indique que la macro "me" n'existe pas.
>
> Est-ce qu'il s'agit d'une macro prédéfinie ?
>
> Merci
>
> Bien à toi
>
> Yves
>
>
> "TopJB" a écrit :
>
>> Bonjour,
>>
>> Je suppose que ta liste déroulante contient le "code produit" et le "nom
>> produit" dans le résultat de la requête qui est la source de ta liste
>> déroulante.
>>
>> Ex : propriété Contenu (Requête résultat) : SELECT [Code produit], [Nom
>> produit] FROM "Ta table" WHERE "Tes critères de sélection" (si tu en as)
>>
>> Si tu es dans cette situation :
>>
>> Il te faut créé un code événementiel après mise à jour de ta liste du
>> style :
>>
>> me.code_produit = me.nom_produit.column(x) x étant ton numéro de colonne
>> '(Code produit)' - 1 par rapport à l'ordre de ta requête.
>>
>> ex : si tu as dans l'ordre des colonnes de ta requête :
>> Code produit Nom Produit
>> il faut que tu ajoute la ligne suivante,
>> me.code_produit= me.nom_produit(0)
>>
>> Ce qui enverra la valeur code produit de ta liste déroulante vers ton
>> champ Code_produit.
>>
>> Cordialement
>>
>> Yves a écrit :
>>> bonjour,
>>>
>>> Sous ACCESS 2003.
>>>
>>> J'ai 2 champs dans une table :
>>> 1 champ produit
>>> 1 champ code produit
>>>
>>> Dans un formulaire, mon champ produit est une liste déroulante
>>> Je souhaite que le champ "code produit" se remplisse automatiquement, en
>>> fonction du produit saisi par la laiste déroulante dans le champ "produit"
>>>
>>> Comment faire ?
>>>
>>> Merci
>>>
>>>



Avatar
Yves
Ca y est !J'ai réussi !
Il me fallait simplement changé le numéro de la colonne et mettr e0 !

Merci encore pour tes explications. Maintenant je sais faire :-)

A bientôt

Bien à toi

Yves

"Yves" a écrit :

Bonjour,

Merci pour ces explications.

J'ai avancé d'un grand pas !

En fait je me trompais, car je faisais référence, dans le code, aux noms de
champs et non aux noms des objets (zone de texte et liste déroulante).

donc, maintenant j'obtiens ce code :
Private Sub liste_ingredients_AfterUpdate()
Texte26 = liste_ingredients.Column(1)
End Sub

Avec la colonne 1, ma zone de texte récupère bien le contenu de la liste
déroulante. Or ce n'est aps ce que je veux !
Je veux qu'elle récupère le code article correspondant à l'ingrédient
sélectionné dasn la liste.
Le code article étant stocké dans une autre table. Celle qui est liée et qui
me permet déjà de remplir ma liste déroulante.

Je te copie la requête qui me permet de créer ma liste déroulante :
SELECT mercurial.Code_article, mercurial.Article FROM mercurial ORDER BY
[Article];

C'est donc dans la table "mercurial" que je souhaite aller chercher le code
article. suis je assez clair ?

En tous cas, merci encore pour tes explications claires et détaillées !

Yves

"TopJB" a écrit :

> Bonjour,
>
> Non ce n'est pas une macro mais du code VB access.
> Dans la propriété après mise à jour. Tu as une petite flèche à droite,
> dans la liste qui s'ouvre tu doit avoir "[Procédure événementielle]". Il
> faut choisir cette valeur. Puis cliquer sur le bouton avec les ... a coté.
>
> La tu entre dans le code Vb Access. Et donc tu dois avoir quelque chose
> du genre :
>
> Private Sub Code_article_AfterUpdate()
>
> End Sub
>
> Et entre la ligne débutant par Private Sub ... et la ligne End Sub (qui
> représente pour faire simple la fonction qui sera exécuter lorsque tu
> sélectionneras un produit dans la liste), tu ajoutes le code suivant :
>
> Me.Ingrédients = Me.Code_article.column(2)
>
> Ce qui doit donner au final quelque chose comme
>
> Private Sub Code_article_AfterUpdate()
> Me.Ingrédients = Me.Code_article.column(2)
> End Sub
>
> Ensuite tu enregistres et il ne reste plus qu'à tester.
>
> De plus, si cette fonction ne te donne pas satisfaction lors des tests
> (la valeur ne s'affiche pas), tu reviens dans le code (même procédure
> que plus haut "...") Tu ajoute la ligne suivante :
>
> Me.Ingrédients.refresh
>
> Qui force le rafraichissement de la zone de texte.
>
> Après il faut bien sûr ajuster ton code selon le nom de tes champs.
>
> Mais si la ligne que tu as donnée correspond au nom de tes champs je
> pense que le code que je t'ai donné devrait fonctionner.
>
> Complément d'informations :
> "me" n'est pas une macro mais une référence au formulaire dans le code
> Vb Access.
>
> Elle permet d'accéder par code au divers champs ainsi qu'à leurs
> propriétés, elle permet également de modifier les propriétés du
> formulaire par code, ce qui permet dans certains cas de modifier par
> exemple : la propriété d'affichage continu ou simple du formulaire. Et
> bien d'autres choses encore. Mais pour cela il y a de l'aide sur
> Internet très bien faite et sinon des livres sur le sujet.
>
> Mais il est vrai que si tu n'as jamais fais de programmation cela te
> semblera peut être un peu barbare mais tous le monde peut y arriver avec
> de l'aide et un peu de pratique et beaucoup de curiosité ;)
>
> Aide supplémentaire :
> Regarde le point 5 de ce lien pour voir que Access n'est pas que des
> tables, des requêtes, des états et des macros.
> http://heureuxoli.developpez.com/office/word/vba01/
>
> Et ce lien aussi devrait t'aider un peu aussi :
> http://access.developpez.com/faq/?page=zdl#ListBoxColumn
>
> Et ce lien décrit exactement ce que je viens de te donner comme solutions :
> http://access.developpez.com/faq/?page=TAZdt#RenvVal
>
> Yves a écrit :
> > Bonsoir,
> >
> > Merci pour cette réponse. Je comprends la logique, mais un problème se pose :
> > Comment déclarer cette macro "me" ?
> >
> > Lorsque j'insère la ligne me.Ingrédients= me.Code article(2)
> > (il s'agit de mes noms de chmaps réels)
> > un message d'erreur m'indique que la macro "me" n'existe pas.
> >
> > Est-ce qu'il s'agit d'une macro prédéfinie ?
> >
> > Merci
> >
> > Bien à toi
> >
> > Yves
> >
> >
> > "TopJB" a écrit :
> >
> >> Bonjour,
> >>
> >> Je suppose que ta liste déroulante contient le "code produit" et le "nom
> >> produit" dans le résultat de la requête qui est la source de ta liste
> >> déroulante.
> >>
> >> Ex : propriété Contenu (Requête résultat) : SELECT [Code produit], [Nom
> >> produit] FROM "Ta table" WHERE "Tes critères de sélection" (si tu en as)
> >>
> >> Si tu es dans cette situation :
> >>
> >> Il te faut créé un code événementiel après mise à jour de ta liste du
> >> style :
> >>
> >> me.code_produit = me.nom_produit.column(x) x étant ton numéro de colonne
> >> '(Code produit)' - 1 par rapport à l'ordre de ta requête.
> >>
> >> ex : si tu as dans l'ordre des colonnes de ta requête :
> >> Code produit Nom Produit
> >> il faut que tu ajoute la ligne suivante,
> >> me.code_produit= me.nom_produit(0)
> >>
> >> Ce qui enverra la valeur code produit de ta liste déroulante vers ton
> >> champ Code_produit.
> >>
> >> Cordialement
> >>
> >> Yves a écrit :
> >>> bonjour,
> >>>
> >>> Sous ACCESS 2003.
> >>>
> >>> J'ai 2 champs dans une table :
> >>> 1 champ produit
> >>> 1 champ code produit
> >>>
> >>> Dans un formulaire, mon champ produit est une liste déroulante
> >>> Je souhaite que le champ "code produit" se remplisse automatiquement, en
> >>> fonction du produit saisi par la laiste déroulante dans le champ "produit"
> >>>
> >>> Comment faire ?
> >>>
> >>> Merci
> >>>
> >>>
>


Avatar
TopJB
De rien et merci du retour

Cordialement

TopJB

Yves a écrit :
Ca y est !J'ai réussi !
Il me fallait simplement changé le numéro de la colonne et mettr e0 !

Merci encore pour tes explications. Maintenant je sais faire :-)

A bientôt

Bien à toi

Yves

"Yves" a écrit :

Bonjour,

Merci pour ces explications.

J'ai avancé d'un grand pas !

En fait je me trompais, car je faisais référence, dans le code, aux noms de
champs et non aux noms des objets (zone de texte et liste déroulante).

donc, maintenant j'obtiens ce code :
Private Sub liste_ingredients_AfterUpdate()
Texte26 = liste_ingredients.Column(1)
End Sub

Avec la colonne 1, ma zone de texte récupère bien le contenu de la liste
déroulante. Or ce n'est aps ce que je veux !
Je veux qu'elle récupère le code article correspondant à l'ingrédient
sélectionné dasn la liste.
Le code article étant stocké dans une autre table. Celle qui est liée et qui
me permet déjà de remplir ma liste déroulante.

Je te copie la requête qui me permet de créer ma liste déroulante :
SELECT mercurial.Code_article, mercurial.Article FROM mercurial ORDER BY
[Article];

C'est donc dans la table "mercurial" que je souhaite aller chercher le code
article. suis je assez clair ?

En tous cas, merci encore pour tes explications claires et détaillées !

Yves

"TopJB" a écrit :

Bonjour,

Non ce n'est pas une macro mais du code VB access.
Dans la propriété après mise à jour. Tu as une petite flèche à droite,
dans la liste qui s'ouvre tu doit avoir "[Procédure événementielle]". Il
faut choisir cette valeur. Puis cliquer sur le bouton avec les ... a coté.

La tu entre dans le code Vb Access. Et donc tu dois avoir quelque chose
du genre :

Private Sub Code_article_AfterUpdate()

End Sub

Et entre la ligne débutant par Private Sub ... et la ligne End Sub (qui
représente pour faire simple la fonction qui sera exécuter lorsque tu
sélectionneras un produit dans la liste), tu ajoutes le code suivant :

Me.Ingrédients = Me.Code_article.column(2)

Ce qui doit donner au final quelque chose comme

Private Sub Code_article_AfterUpdate()
Me.Ingrédients = Me.Code_article.column(2)
End Sub

Ensuite tu enregistres et il ne reste plus qu'à tester.

De plus, si cette fonction ne te donne pas satisfaction lors des tests
(la valeur ne s'affiche pas), tu reviens dans le code (même procédure
que plus haut "...") Tu ajoute la ligne suivante :

Me.Ingrédients.refresh

Qui force le rafraichissement de la zone de texte.

Après il faut bien sûr ajuster ton code selon le nom de tes champs.

Mais si la ligne que tu as donnée correspond au nom de tes champs je
pense que le code que je t'ai donné devrait fonctionner.

Complément d'informations :
"me" n'est pas une macro mais une référence au formulaire dans le code
Vb Access.

Elle permet d'accéder par code au divers champs ainsi qu'à leurs
propriétés, elle permet également de modifier les propriétés du
formulaire par code, ce qui permet dans certains cas de modifier par
exemple : la propriété d'affichage continu ou simple du formulaire. Et
bien d'autres choses encore. Mais pour cela il y a de l'aide sur
Internet très bien faite et sinon des livres sur le sujet.

Mais il est vrai que si tu n'as jamais fais de programmation cela te
semblera peut être un peu barbare mais tous le monde peut y arriver avec
de l'aide et un peu de pratique et beaucoup de curiosité ;)

Aide supplémentaire :
Regarde le point 5 de ce lien pour voir que Access n'est pas que des
tables, des requêtes, des états et des macros.
http://heureuxoli.developpez.com/office/word/vba01/

Et ce lien aussi devrait t'aider un peu aussi :
http://access.developpez.com/faq/?page=zdl#ListBoxColumn

Et ce lien décrit exactement ce que je viens de te donner comme solutions :
http://access.developpez.com/faq/?page=TAZdt#RenvVal

Yves a écrit :
Bonsoir,

Merci pour cette réponse. Je comprends la logique, mais un problème se pose :
Comment déclarer cette macro "me" ?

Lorsque j'insère la ligne me.Ingrédients= me.Code article(2)
(il s'agit de mes noms de chmaps réels)
un message d'erreur m'indique que la macro "me" n'existe pas.

Est-ce qu'il s'agit d'une macro prédéfinie ?

Merci

Bien à toi

Yves


"TopJB" a écrit :

Bonjour,

Je suppose que ta liste déroulante contient le "code produit" et le "nom
produit" dans le résultat de la requête qui est la source de ta liste
déroulante.

Ex : propriété Contenu (Requête résultat) : SELECT [Code produit], [Nom
produit] FROM "Ta table" WHERE "Tes critères de sélection" (si tu en as)

Si tu es dans cette situation :

Il te faut créé un code événementiel après mise à jour de ta liste du
style :

me.code_produit = me.nom_produit.column(x) x étant ton numéro de colonne
'(Code produit)' - 1 par rapport à l'ordre de ta requête.

ex : si tu as dans l'ordre des colonnes de ta requête :
Code produit Nom Produit
il faut que tu ajoute la ligne suivante,
me.code_produit= me.nom_produit(0)

Ce qui enverra la valeur code produit de ta liste déroulante vers ton
champ Code_produit.

Cordialement

Yves a écrit :
bonjour,

Sous ACCESS 2003.

J'ai 2 champs dans une table :
1 champ produit
1 champ code produit

Dans un formulaire, mon champ produit est une liste déroulante
Je souhaite que le champ "code produit" se remplisse automatiquement, en
fonction du produit saisi par la laiste déroulante dans le champ "produit"

Comment faire ?

Merci














Avatar
Yves
C'est la moindre des choses.

Yves

"TopJB" a écrit :

De rien et merci du retour

Cordialement

TopJB

Yves a écrit :
> Ca y est !J'ai réussi !
> Il me fallait simplement changé le numéro de la colonne et mettr e0 !
>
> Merci encore pour tes explications. Maintenant je sais faire :-)
>
> A bientôt
>
> Bien à toi
>
> Yves
>
> "Yves" a écrit :
>
>> Bonjour,
>>
>> Merci pour ces explications.
>>
>> J'ai avancé d'un grand pas !
>>
>> En fait je me trompais, car je faisais référence, dans le code, aux noms de
>> champs et non aux noms des objets (zone de texte et liste déroulante).
>>
>> donc, maintenant j'obtiens ce code :
>> Private Sub liste_ingredients_AfterUpdate()
>> Texte26 = liste_ingredients.Column(1)
>> End Sub
>>
>> Avec la colonne 1, ma zone de texte récupère bien le contenu de la liste
>> déroulante. Or ce n'est aps ce que je veux !
>> Je veux qu'elle récupère le code article correspondant à l'ingrédient
>> sélectionné dasn la liste.
>> Le code article étant stocké dans une autre table. Celle qui est liée et qui
>> me permet déjà de remplir ma liste déroulante.
>>
>> Je te copie la requête qui me permet de créer ma liste déroulante :
>> SELECT mercurial.Code_article, mercurial.Article FROM mercurial ORDER BY
>> [Article];
>>
>> C'est donc dans la table "mercurial" que je souhaite aller chercher le code
>> article. suis je assez clair ?
>>
>> En tous cas, merci encore pour tes explications claires et détaillées !
>>
>> Yves
>>
>> "TopJB" a écrit :
>>
>>> Bonjour,
>>>
>>> Non ce n'est pas une macro mais du code VB access.
>>> Dans la propriété après mise à jour. Tu as une petite flèche à droite,
>>> dans la liste qui s'ouvre tu doit avoir "[Procédure événementielle]". Il
>>> faut choisir cette valeur. Puis cliquer sur le bouton avec les ... a coté.
>>>
>>> La tu entre dans le code Vb Access. Et donc tu dois avoir quelque chose
>>> du genre :
>>>
>>> Private Sub Code_article_AfterUpdate()
>>>
>>> End Sub
>>>
>>> Et entre la ligne débutant par Private Sub ... et la ligne End Sub (qui
>>> représente pour faire simple la fonction qui sera exécuter lorsque tu
>>> sélectionneras un produit dans la liste), tu ajoutes le code suivant :
>>>
>>> Me.Ingrédients = Me.Code_article.column(2)
>>>
>>> Ce qui doit donner au final quelque chose comme
>>>
>>> Private Sub Code_article_AfterUpdate()
>>> Me.Ingrédients = Me.Code_article.column(2)
>>> End Sub
>>>
>>> Ensuite tu enregistres et il ne reste plus qu'à tester.
>>>
>>> De plus, si cette fonction ne te donne pas satisfaction lors des tests
>>> (la valeur ne s'affiche pas), tu reviens dans le code (même procédure
>>> que plus haut "...") Tu ajoute la ligne suivante :
>>>
>>> Me.Ingrédients.refresh
>>>
>>> Qui force le rafraichissement de la zone de texte.
>>>
>>> Après il faut bien sûr ajuster ton code selon le nom de tes champs.
>>>
>>> Mais si la ligne que tu as donnée correspond au nom de tes champs je
>>> pense que le code que je t'ai donné devrait fonctionner.
>>>
>>> Complément d'informations :
>>> "me" n'est pas une macro mais une référence au formulaire dans le code
>>> Vb Access.
>>>
>>> Elle permet d'accéder par code au divers champs ainsi qu'à leurs
>>> propriétés, elle permet également de modifier les propriétés du
>>> formulaire par code, ce qui permet dans certains cas de modifier par
>>> exemple : la propriété d'affichage continu ou simple du formulaire. Et
>>> bien d'autres choses encore. Mais pour cela il y a de l'aide sur
>>> Internet très bien faite et sinon des livres sur le sujet.
>>>
>>> Mais il est vrai que si tu n'as jamais fais de programmation cela te
>>> semblera peut être un peu barbare mais tous le monde peut y arriver avec
>>> de l'aide et un peu de pratique et beaucoup de curiosité ;)
>>>
>>> Aide supplémentaire :
>>> Regarde le point 5 de ce lien pour voir que Access n'est pas que des
>>> tables, des requêtes, des états et des macros.
>>> http://heureuxoli.developpez.com/office/word/vba01/
>>>
>>> Et ce lien aussi devrait t'aider un peu aussi :
>>> http://access.developpez.com/faq/?page=zdl#ListBoxColumn
>>>
>>> Et ce lien décrit exactement ce que je viens de te donner comme solutions :
>>> http://access.developpez.com/faq/?page=TAZdt#RenvVal
>>>
>>> Yves a écrit :
>>>> Bonsoir,
>>>>
>>>> Merci pour cette réponse. Je comprends la logique, mais un problème se pose :
>>>> Comment déclarer cette macro "me" ?
>>>>
>>>> Lorsque j'insère la ligne me.Ingrédients= me.Code article(2)
>>>> (il s'agit de mes noms de chmaps réels)
>>>> un message d'erreur m'indique que la macro "me" n'existe pas.
>>>>
>>>> Est-ce qu'il s'agit d'une macro prédéfinie ?
>>>>
>>>> Merci
>>>>
>>>> Bien à toi
>>>>
>>>> Yves
>>>>
>>>>
>>>> "TopJB" a écrit :
>>>>
>>>>> Bonjour,
>>>>>
>>>>> Je suppose que ta liste déroulante contient le "code produit" et le "nom
>>>>> produit" dans le résultat de la requête qui est la source de ta liste
>>>>> déroulante.
>>>>>
>>>>> Ex : propriété Contenu (Requête résultat) : SELECT [Code produit], [Nom
>>>>> produit] FROM "Ta table" WHERE "Tes critères de sélection" (si tu en as)
>>>>>
>>>>> Si tu es dans cette situation :
>>>>>
>>>>> Il te faut créé un code événementiel après mise à jour de ta liste du
>>>>> style :
>>>>>
>>>>> me.code_produit = me.nom_produit.column(x) x étant ton numéro de colonne
>>>>> '(Code produit)' - 1 par rapport à l'ordre de ta requête.
>>>>>
>>>>> ex : si tu as dans l'ordre des colonnes de ta requête :
>>>>> Code produit Nom Produit
>>>>> il faut que tu ajoute la ligne suivante,
>>>>> me.code_produit= me.nom_produit(0)
>>>>>
>>>>> Ce qui enverra la valeur code produit de ta liste déroulante vers ton
>>>>> champ Code_produit.
>>>>>
>>>>> Cordialement
>>>>>
>>>>> Yves a écrit :
>>>>>> bonjour,
>>>>>>
>>>>>> Sous ACCESS 2003.
>>>>>>
>>>>>> J'ai 2 champs dans une table :
>>>>>> 1 champ produit
>>>>>> 1 champ code produit
>>>>>>
>>>>>> Dans un formulaire, mon champ produit est une liste déroulante
>>>>>> Je souhaite que le champ "code produit" se remplisse automatiquement, en
>>>>>> fonction du produit saisi par la laiste déroulante dans le champ "produit"
>>>>>>
>>>>>> Comment faire ?
>>>>>>
>>>>>> Merci
>>>>>>
>>>>>>