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

sélectionner le nom pour avoir le bon prix

4 réponses
Avatar
sb
Bonjour à tous

J'ai crée 2 tables, la table N°1 possède l'identification; le nom du
produit et le prix.
et l'autre table N° 2 : date; ....; nom du produit; dosse mis; le prix.

Je voudrait que dans le formulaire issue de la table N°2. Dés que l'on
choisit le nom du produit, automatiquement, je dois avoir le prix
correspondant (1 seul réponse possible). Pour l'instant j'utilise "liste
déroulante restreinte", inconvénient je dois sélection le prix donc perde de
temps.

P.S: j'utilise access 2000

Merci à l'avance
stef

4 réponses

Avatar
rgbr
"sb" a écrit :

Bonjour à tous

J'ai crée 2 tables, la table N°1 possède l'identification; le nom du
produit et le prix.
et l'autre table N° 2 : date; ....; nom du produit; dosse mis; le prix.

Je voudrait que dans le formulaire issue de la table N°2. Dés que l'on
choisit le nom du produit, automatiquement, je dois avoir le prix
correspondant (1 seul réponse possible). Pour l'instant j'utilise "liste
déroulante restreinte", inconvénient je dois sélection le prix donc perde de
temps.

P.S: j'utilise access 2000

Merci à l'avance
stef

Bj stef


Pourquoi tu 2 fois la désignation et le prix dans 2 tables ?
peut être que tu as une raison ?
mais cela n'est pas normal dans une base de données
tu devrais mettre un champ "identifiant" (numérique) ton article dans la
table2
et supprimer les champs designation et prix dans la table 2

rené
Avatar
sb
Bonjour rené

La table n°1 contient les prix qui correspond à 1 article, je voudrait le
marqué 1 seul fois et plus à y penser.
Exemple:
id produit prix / Litre
1 ab 0,50 ?
2 ba 1,50 ?
3 ca 4,00 ?
etc...

Le formulaire issue de la table N°2 contient la date, le nom de l'article et
donc le prix issue de la table n°1 et le dosage mis.
Exemple marqué sur 1 formulaire.
date produit utilisé le prix la dose somme du
produit
1/2/09 ab 0,5 2 L 1 ?
1/2/09 ba 1,5 1 L 1,5 ?
1/2/09 ca 4,0 0,25 L 1 ?

Somme total du jour 3,5

Actuellement ce que j'ai pu trouvé comme solution quand je marque "le
produit utilisé" pour qu'il me marque le prix, j'utilise la liste déroulante
restreinte. c'est une assez bonne méthode, mais le problème c'est que je
dois faire des manipulations sur le prix pour l'afficher.
Et je voudrait savoir si l'on as 1 autre solution, dés que l'on sélectionne
le nom du produit, automatiquement, le prix s'affiche sans y toucher?

espère que j'ai été 1 peux plus clair??

merci
stef
____________________

> Bj stef
Pourquoi tu 2 fois la désignation et le prix dans 2 tables ?
peut être que tu as une raison ?
mais cela n'est pas normal dans une base de données
tu devrais mettre un champ "identifiant" (numérique) ton article dans la
table2
et supprimer les champs designation et prix dans la table 2

rené


Avatar
TopJB
Bonjour,

Je pense avoir une solution

Tout d'abord tes tables doivent être a quelque chose prêt définit comme
suit:

Table 1 :

- Identifiant produit
- Nom de produit
- Prix au litre

Table 2 :

- Identifiant
- Identifiant Produit (celui-ci correspond au champ Identifiant produit
de la table 1)
(N.B.: Avec cette méthode si tu modifie un produit dans ta table 1 par
exemple nom de produit cela se répercute sur la table 2 pour les lignes
correspondantes)
- Dose produit
- Somme total produit
- Date

ensuite dans ton formulaire :

Tu as un champ date que tu aliment comme tu veux qui correspond au champ
date de la table 2

Tu as un champ Produit qui est une liste déroulante avec pour source de
données la liste des produits de ta table 1 (Requête exemple : "SELECT *
FROM [Table 1]"
Ensuite tu mets dans les propriétés de cette liste déroulante les valeurs :
- Nbre colonne : 3
- Largeurs colonnes : 0;[Largeur de ta liste];0 (Ce qui représente
l'ordre et les champs de ta table 1 : Le premier 0 pour l'identifiant,
[Largeur de ta liste] le nom du produit et le deuxième 0 représente le
prix au litre)
- Colonne liée : 1 (Numéro de la colonne contenant l'identifiant produit
dans la requête)
Ta liste n'affichera que ton nom de produit

Ensuite tu as un champ Prix qui récupère le prix au litre du produit
sélectionné.
Dans le propriétés de ce champ il faut que tu mette la valeur source
contrôle à : =[Ta liste déroulante].column(2) ou =[Ta liste
déroulante].colonne(2)
ce qui donnera directement si tu charge le formulaire le prix des
produits déjà saisie dans la table 2

Ensuite tu as un champ dose que tu doit saisir je pense

Et enfin un champ Somme par produit qui représente le résultat de
Prix * Dose
Dans les propriètés de ce champ tu clique sur le boutons avec les trois
points de la propriété Source contrôle, la une fenêtre s'ouvre tu
choisit 'formulaire' ensuite tu choisis 'formulaire chargé' ensuite le
nom de ton formulaire et la tu trouveras les noms des champs du
formulaire. Tu choisis le champ Prix et le champ Dose et tu mets le
caractère * entre les deux.
Ce qui devrait te donner dans le haut de la fenêtre quelque chose comme
[Champ prix]*[Champ dose]

Il faut que tu mettes des valeurs par défaut dans les champs Prix, Dose
et Somme par Produit à 0

Ensuite sur l'évènement Après MAJ (Procédure évenementiel) de ta liste
déroulante dans le code tu fais
Private Sub [Nom de ta liste déroulante]_AfterUpdate()
'Récupère le prix du produit sélectionné à partir des données présentes
dans la liste déroulante
me.[Nom de ton champ prix] = me.[Ta liste déroulante].column(2)
'Rafraichit la valeur du champ Prix
Me.[Champ prix ].refresh
'Rafraichit la valeur du champ somme par produit
me.[Champ somme par produit].refresh
End Sub
Ce qui a pour effet de mettre à jour le prix dans le champ prix et la
somme par produit si tu as déjà saisi la dose.

Ensuite sur l'évènement Après MAJ (Procédure évenementiel) de ton champ
Dose, tu mets dans le code :
Private Sub [Champ Dose]_AfterUpdate()
'Rafraichit la valeur du champ Somme par produit
me.[Champ somme par produit].refresh
End Sub
Ce qui as pour effet de mettre à jour la somme par produit si tu as déjà
choisis ton produit dans la liste déroulante.

Normalement le résultat devrait être bon visuellement.

Maintenant passons à l'enregistrement des données saisies dans ta table 2

Ce qui faut que tu fasses c'est dans les propriétés de ton formulaire tu
mets la valeur Source à l'aide de la liste déroulante au nom de ta table 2

ensuite dans les champs que tu as mis sur ton formulaire il faut que tu
change certaines propriétés de certains champs:

- La liste déroulante : Propriété Source contrôle tu sélectionne le
champ identifiant produit de ta table 2

- Le champ Dose produit : Propriété Source contrôle tu sélectionne le
champ dose de ta table 2

- Le champ Somme par produit : Propriété Source contrôle tu sélectionne
le champ Somme de ta table 2

- Et enfin dans le champ Date : Propriété Source contrôle tu
sélectionne le champ Date de ta table 2

Avec cela ton formulaire listera les données enregistrées précédemment
dans la table 2 avec les données qu'il faut Nom produit, Prix , Dose,
Date, Somme par produit

Pour ajouter un nouvelle ligne, tu n'auras plus qu'a saisir la date,
sélectionner le produit dans la liste déroulante et saisir la dose. Les
calculs se feront tous seuls.

N.B. : Si tu veux pas récupérer les données déjà enregistrés dans la
table 2 lors de l'ouverture du formulaire, il faut supprimer la table
comme source de données du formulaire et supprimer les sources contrôles
des champs cités ci-dessus par contre il te faudra alors un bouton
Enregistrer pour stocker tes données dans ta table 2 puisque ta table 2
ne sera plus lièe au formulaire.

Par contre sans table liée à ton formulaire par de formulaire en mode
continu possible, Access ne sais pas gérer gérer les lignes multiples
sans table liée.

Donc tu auras tes enregistrements un à un.

Voici le code si tu veux essayer un bouton enregistrer

Private Sub Enregistrer_Click()
'Bloque les messages d'alertes d'access
docmd.setwarnings false
docmd.runSQL ("INSERT INTO [Table 2] ([Identifiant produit], [Dose
produit], [Somme total produit], [Date]) VALUES (" & me.[Liste
déroulante] & "," & me.[Somme produit] & "," & me.[Date] & ")""")
docmd.setwarnings true
End sub
(A adapter concernant la requête)

Voilà normalement cela devrait correspondre à tes besoins.

P.S.: Ne connaissant pas le nom de tes champs de tables et du formulaire
ce que je t'ai donné est à adapter.

Cordialement

TopJB

sb a écrit :
Bonjour rené

La table n°1 contient les prix qui correspond à 1 article, je voudrait le
marqué 1 seul fois et plus à y penser.
Exemple:
id produit prix / Litre
1 ab 0,50 ?
2 ba 1,50 ?
3 ca 4,00 ?
etc...

Le formulaire issue de la table N°2 contient la date, le nom de l'article et
donc le prix issue de la table n°1 et le dosage mis.
Exemple marqué sur 1 formulaire.
date produit utilisé le prix la dose somme du
produit
1/2/09 ab 0,5 2 L 1 ?
1/2/09 ba 1,5 1 L 1,5 ?
1/2/09 ca 4,0 0,25 L 1 ?

Somme total du jour 3,5

Actuellement ce que j'ai pu trouvé comme solution quand je marque "le
produit utilisé" pour qu'il me marque le prix, j'utilise la liste déroulante
restreinte. c'est une assez bonne méthode, mais le problème c'est que je
dois faire des manipulations sur le prix pour l'afficher.
Et je voudrait savoir si l'on as 1 autre solution, dés que l'on sélectionne
le nom du produit, automatiquement, le prix s'affiche sans y toucher?

espère que j'ai été 1 peux plus clair??

merci
stef
____________________

Bj stef


Pourquoi tu 2 fois la désignation et le prix dans 2 tables ?
peut être que tu as une raison ?
mais cela n'est pas normal dans une base de données
tu devrais mettre un champ "identifiant" (numérique) ton article dans la
table2
et supprimer les champs designation et prix dans la table 2

rené






Avatar
sb
C'est un message de format MIME en plusieurs parties.

------=_NextPart_000_0014_01C99CBC.A6FAAA80
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

Bonjour,

J'ai encore 1 soucis, car j'arrive pas à faire ce que tu m'as dis. Je reprend les points ou je bloque.

Dans la table 2, on ne met pas le prix???
Table 2 :

- Identifiant
- Identifiant Produit (celui-ci correspond au champ Identifiant produit
de la table 1)
(N.B.: Avec cette méthode si tu modifie un produit dans ta table 1 par
exemple nom de produit cela se répercute sur la table 2 pour les lignes
correspondantes)
- Dose produit
- Somme total produit
- Date



ensuite dans ton formulaire : "euh c'est pas dans la table que l'on fait ça???? si c'est ça, j'arrive jusqu'à là."

Tu as un champ date que tu aliment comme tu veux qui correspond au champ
date de la table 2 >
Tu as un champ Produit qui est une liste déroulante avec pour source de
données la liste des produits de ta table 1 (Requête exemple : "SELECT *
FROM [Table 1]"


"Je le fais avec assistance liste de choix, et j'obtiens un truc comme ce que tu as marqué"

Ensuite tu mets dans les propriétés de cette liste déroulante les valeurs :
- Nbre colonne : 3
- Largeurs colonnes : 0;[Largeur de ta liste];0 (Ce qui représente
l'ordre et les champs de ta table 1 : Le premier 0 pour l'identifiant,
[Largeur de ta liste] le nom du produit et le deuxième 0 représente le
prix au litre)
- Colonne liée : 1 (Numéro de la colonne contenant l'identifiant produit
dans la requête)
Ta liste n'affichera que ton nom de produit



"Jusqu'ici, ça peux aller"


Ensuite tu as un champ Prix qui récupère le prix au litre du produit
sélectionné.


"Le champ je le fais ou ds le formulaire ou dans la table???? parce que tout ce qui suit il me met erreur sur tout la ligne, ou si non, j'oublie de faire 1 truc."

Dans le propriétés de ce champ il faut que tu mette la valeur source
contrôle à : =[Ta liste déroulante].column(2) ou =[Ta liste
déroulante].colonne(2)
ce qui donnera directement si tu charge le formulaire le prix des
produits déjà saisie dans la table 2




Pour l'instant c'est tout ca qui bloque, j'ai beau essais diférent méthodes, je tombe sur 1 os.

merci par avance pour ton aide.
stef
-----------------


------=_NextPart_000_0014_01C99CBC.A6FAAA80
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META content="MSHTML 6.00.2800.1106" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY>
<DIV><FONT face=Arial size=2>Bonjour,</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>J'ai encore 1 soucis, car j'arrive pas à faire ce
que tu m'as dis. Je reprend les points ou je bloque.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2><STRONG>Dans la table 2, on ne met pas le
prix???</STRONG></FONT></DIV>
<DIV><FONT face=Arial size=2>Table 2 :<BR>&gt; <BR>&gt; - Identifiant<BR>&gt; -
Identifiant Produit (celui-ci correspond au champ Identifiant produit <BR>&gt;
de la table 1)<BR>&gt; (N.B.: Avec cette méthode si tu modifie un produit dans
ta table 1 par <BR>&gt; exemple nom de produit cela se répercute sur la table 2
pour les lignes <BR>&gt; correspondantes)<BR>&gt; - Dose produit<BR>&gt; - Somme
total produit<BR>&gt; - Date<BR></FONT></DIV>
<DIV><FONT face=Arial size=2>&gt; ensuite dans ton formulaire : <STRONG>"euh
c'est pas dans la table que l'on fait ça???? si c'est ça, j'arrive jusqu'à
là."</STRONG><BR>&gt; <BR>&gt; Tu as un champ date que tu aliment comme tu veux
qui correspond au champ <BR>&gt; date de la table 2 &gt; <BR>&gt; Tu as un champ
Produit qui est une liste déroulante avec pour source de <BR>&gt; données la
liste des produits de ta table 1 (Requête exemple : "SELECT * <BR>&gt; FROM
[Table 1]"</FONT></DIV>
<DIV><FONT face=Arial size=2><STRONG>"Je le fais avec assistance liste de choix,
et j'obtiens un truc comme ce que tu as marqué"</STRONG><BR><BR>&gt; Ensuite tu
mets dans les propriétés de cette liste déroulante les valeurs :<BR>&gt; &nbsp;
- Nbre colonne : 3<BR>&gt; &nbsp; - Largeurs colonnes : 0;[Largeur de ta
liste];0&nbsp; (Ce qui représente <BR>&gt; l'ordre et les champs de ta table 1 :
Le premier 0 pour l'identifiant, <BR>&gt; [Largeur de ta liste] le nom du
produit et le deuxième 0 représente le <BR>&gt; prix au litre)<BR>&gt; - Colonne
liée : 1 (Numéro de la colonne contenant l'identifiant produit <BR>&gt; dans la
requête)<BR>&gt; Ta liste n'affichera que ton nom de produit<BR></DIV></FONT>
<DIV><FONT face=Arial size=2><STRONG>"Jusqu'ici, ça peux
aller"</STRONG></DIV></FONT>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>&gt; Ensuite tu as un champ Prix qui récupère le
prix au litre du produit <BR>&gt; sélectionné.</FONT></DIV>
<DIV><FONT face=Arial size=2><STRONG>"Le champ je le fais ou ds le formulaire ou
dans la table???? parce que tout ce qui suit il me met erreur sur tout la ligne,
ou si non, j'oublie de faire 1 truc."</STRONG></FONT></DIV>
<DIV><FONT face=Arial size=2><BR>&gt; Dans le propriétés de ce champ il faut que
tu mette la valeur source <BR>&gt; contrôle à : =[Ta liste déroulante].column(2)
ou =[Ta liste <BR>&gt; déroulante].colonne(2)<BR>&gt; ce qui donnera directement
si tu charge le formulaire le prix des <BR>&gt; produits déjà saisie dans la
table 2</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>Pour l'instant c'est tout ca qui bloque, j'ai beau
essais diférent méthodes, je tombe sur 1 os.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>merci par avance pour ton aide.</FONT></DIV>
<DIV><FONT face=Arial size=2>stef</FONT></DIV>
<DIV><FONT face=Arial size=2>-----------------</FONT></DIV>
<DIV><FONT face=Arial><BR><FONT size=2></FONT></FONT>&nbsp;</DIV></BODY></HTML>

------=_NextPart_000_0014_01C99CBC.A6FAAA80--