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

Demande d'aide pour insérer un critère dans un module

7 réponses
Avatar
Sonia
Bonjour

J' ai un problème de code. Je n'arrive pas à introduire un code critère dans une formule du module qui en contient déjà une, et dont le résultat s'affiche dans une requête
Exemple
Table 1 : P
N_Compte =
N_Article =
PB = 10
QB =

Table 2 : P
N_Compte = 2 : sans doublons : ex : 1 , 3 , 4 ..
N_Article =
PB = 8
QM = 10
donc on aura table
Ligne 1 : N_C = 2 : N_A = 1 : PB = 80 : QM = 10
Ligne 2 : N_C = 1 : N_A = 1 : PB = 75 : QM = 10
Ligne 3 : N_C = 3 : N_A = 1 : PB = 71 : QM = 11

Requête : Résulta
N_Article =
Quantité Totale : 6

Le Calcul du prix variant est :

Code modul

Option Compare Databas

Function fnPrix_Variant(MaN_Article) As Doubl
'MaN_Article = Nz(MaN_Article
'MaN_Article = Val(MaN_Article
fnPrix_Variant = (((Nz(DSum("[QB]", "[PB]", "N_Article =" & MaN_Article)) - Nz(DSum("[QM]", "[PV]", "N_Article =" & MaN_Article))) * Nz(DSum("[PB]", "[PB]", "N_Article =" & MaN_Article))) / (Nz(DSum("[QB]", "[PB]", "N_Article =" & MaN_Article)) - Nz(DSum("[QM]", "[PV]", "N_Article =" & MaN_Article))) - ((Nz(DSum("[PB]", "[PB]", "N_Article =" & MaN_Article)) - Nz(DSum("[PV]", "[PV]", "N_Article =" & MaN_Article))) / (Nz(DSum("[QB]", "[PB]", "N_Article =" & MaN_Article)) - Nz(DSum("[QM]", "[PV]", "N_Article =" & MaN_Article))))) + (((Nz(DSum("[PB]", "[PB]", "N_Article =" & MaN_Article)) - Nz(DSum("[PV]", "[PV]", "N_Article =" & MaN_Article))) / (Nz(DSum("[QB]", "[PB]", "N_Article =" & MaN_Article)) - Nz(DSum("[QM]", "[PV]", "N_Article =" & MaN_Article)))) * Nz(DSum("[Quantité totale]", "[Résultat]", "N_Article =" & MaN_Article))
Exit Functio
End Functio

Le résultat s'insère dans une requête Prix varian
N_Article =
Prix Variant : fnPrix_Variant(N_article) = ....

7 réponses

Avatar
Pierre CFI [mvp]
Sonia bonjour
dans dsum (ou dcount ou...) tu peux mettre des critéres And , Or
Nz(DSum("[QB]", "[PB]", "N_Article =" & MaN_Article " and Autrechose <> " & autrechose))

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Sonia" a écrit dans le message de news:
Bonjour

J' ai un problème de code. Je n'arrive pas à introduire un code critère dans une formule du module qui en contient déjà une, et
dont le résultat s'affiche dans une requête.

Exemple :
Table 1 : PB
N_Compte = 1
N_Article = 1
PB = 100
QB = 1

Table 2 : PV
N_Compte = 2 : sans doublons : ex : 1 , 3 , 4 ...
N_Article = 1
PB = 80
QM = 100
donc on aura table 2
Ligne 1 : N_C = 2 : N_A = 1 : PB = 80 : QM = 100
Ligne 2 : N_C = 1 : N_A = 1 : PB = 75 : QM = 109
Ligne 3 : N_C = 3 : N_A = 1 : PB = 71 : QM = 117

Requête : Résultat
N_Article = 1
Quantité Totale : 60

Le Calcul du prix variant est :

Code module

Option Compare Database

Function fnPrix_Variant(MaN_Article) As Double
'MaN_Article = Nz(MaN_Article)
'MaN_Article = Val(MaN_Article)
fnPrix_Variant = (((Nz(DSum("[QB]", "[PB]", "N_Article =" & MaN_Article)) - Nz(DSum("[QM]", "[PV]", "N_Article =" & MaN_Article)))
* Nz(DSum("[PB]", "[PB]", "N_Article =" & MaN_Article))) / (Nz(DSum("[QB]", "[PB]", "N_Article =" & MaN_Article)) - Nz(DSum("[QM]",

"[PV]", "N_Article =" & MaN_Article))) - ((Nz(DSum("[PB]", "[PB]", "N_Article =" & MaN_Article)) - Nz(DSum("[PV]", "[PV]",
"N_Article =" & MaN_Article))) / (Nz(DSum("[QB]", "[PB]", "N_Article =" & MaN_Article)) - Nz(DSum("[QM]", "[PV]", "N_Article =" &
MaN_Article))))) + (((Nz(DSum("[PB]", "[PB]", "N_Article =" & MaN_Article)) - Nz(DSum("[PV]", "[PV]", "N_Article =" & MaN_Article)))
/ (Nz(DSum("[QB]", "[PB]", "N_Article =" & MaN_Article)) - Nz(DSum("[QM]", "[PV]", "N_Article =" & MaN_Article)))) *
Nz(DSum("[Quantité totale]", "[Résultat]", "N_Article =" & MaN_Article)))
Exit Function
End Function

Le résultat s'insère dans une requête Prix variant
N_Article = 1
Prix Variant : fnPrix_Variant(N_article) = ....?

Voici la présentation. Je voudrai insérer, dans le code module ci-dessus, un critère supplémentaire, afin d'approfondir la
sélection en vue du calcul Prix variant. Actuellement sur le code la sélection se fait selon le critère (N_Article=N_Article). Mais

si la table 2 contient plusieurs lignes ayant le numéro d'article égal à 1. Cela créent des erreurs de calcul. Pour remédier à cela
je voudrai introduire un critère supplémentaire de sélection suivant :
Sélectionne : N_Article=N_Article : mais ayant des Numeros de Comptes différents : N_Compte<>N_Compte. Le résultat s'insère dans
la requête Prix variant ci dessus. Mais il faut y ajouter un champ suppléméntaire : N_Compte.

Ce qui donne :

Requête Prix Variant
N_Compte = 2
N_Article = 1
Prix Variant : fnPrix_Variant(N_article) = 88.08?
Ligne 2 , Ligne 3 .....etc

Donc Mon problème c'est d'insérer le code ( N_Compte<>N_Compte ) dans le module ci dessus

Pouvez- vous m'aider ?

Bisous !!!
Sonia


Avatar
Sonia
Bonjours Pierre

J' ai un petit problème. J'utilise ta formule mais elle m'engendre des des erreurs compilation : attendu séparateur de liste ou

**"N_Article =" & MaN_Article" and N_C2 <> " & N_C2*

sur la formule complète cela donne cec
Option Compare Databas

Function fnPrix_Variant(MaN_Article) As Doubl
'MaN_Article = Nz(MaN_Article
'MaN_Article = Val(MaN_Article
fnPrix_Variant = (((Nz(DSum("[QB]", "[PB]", "N_Article =" & MaN_Article)) - Nz(DSum("[QM]", "[PV]", "N_Article =" & MaN_Article" and N_C2 <> " & N_C2))) * Nz(DSum("[PB]", "[PB]", "N_Article =" & MaN_Article))) / (Nz(DSum("[QB]", "[PB]", "N_Article =" & MaN_Article)) - Nz(DSum("[QM]", "[PV]", "N_Article =" & MaN_Article" and N_C2 <> " & N_C2))) - ((Nz(DSum("[PB]", "[PB]", "N_Article =" & MaN_Article)) - Nz(DSum("[PV]", "[PV]", "N_Article =" & MaN_Article" and N_C2 <> " & N_C2))) / (Nz(DSum("[QB]", "[PB]", "N_Article =" & MaN_Article)) - Nz(DSum("[QM]", "[PV]", "N_Article =" & MaN_Article" and N_C2 <> " & N_C2))))) + (((Nz(DSum("[PB]", "[PB]", "N_Article =" & MaN_Article)) - Nz(DSum("[PV]", "[PV]", "N_Article =" & MaN_Article" and N_C2 <> " & N_C2))) / (Nz(DSum("[QB]", "[PB]", "N_Article =" & MaN_Article)) - Nz(DSum("[QM]", "[PV]", "N_Article =" & MaN_Article" and N_C2 <> " & N_C2)))) * Nz(DSum("[Quantité totale]", "[Résultat]", "N_Article =" & MaN_Article))
Exit Functio
End Functio

Peux tu me donner la solution ?
Ps : Juste le code entre ** ** car je ferai un remplacer tout sur acces
Merci
Bisou!!!
Avatar
Pierre CFI [mvp]
manque un &
avant
**"N_Article =" & MaN_Article" and N_C2 <> " & N_C2**
aprés
"N_Article =" & MaN_Article & " and N_C2 <> " & N_C2


--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Sonia" a écrit dans le message de news:
Bonjours Pierre.

J' ai un petit problème. J'utilise ta formule mais elle m'engendre des des erreurs compilation : attendu séparateur de liste ou)

**"N_Article =" & MaN_Article" and N_C2 <> " & N_C2**

sur la formule complète cela donne ceci
Option Compare Database

Function fnPrix_Variant(MaN_Article) As Double
'MaN_Article = Nz(MaN_Article)
'MaN_Article = Val(MaN_Article)
fnPrix_Variant = (((Nz(DSum("[QB]", "[PB]", "N_Article =" & MaN_Article)) - Nz(DSum("[QM]", "[PV]", "N_Article =" & MaN_Article"
and N_C2 <> " & N_C2))) * Nz(DSum("[PB]", "[PB]", "N_Article =" & MaN_Article))) / (Nz(DSum("[QB]", "[PB]", "N_Article =" &

MaN_Article)) - Nz(DSum("[QM]", "[PV]", "N_Article =" & MaN_Article" and N_C2 <> " & N_C2))) - ((Nz(DSum("[PB]", "[PB]", "N_Article
=" & MaN_Article)) - Nz(DSum("[PV]", "[PV]", "N_Article =" & MaN_Article" and N_C2 <> " & N_C2))) / (Nz(DSum("[QB]", "[PB]",
"N_Article =" & MaN_Article)) - Nz(DSum("[QM]", "[PV]", "N_Article =" & MaN_Article" and N_C2 <> " & N_C2))))) + (((Nz(DSum("[PB]",
"[PB]", "N_Article =" & MaN_Article)) - Nz(DSum("[PV]", "[PV]", "N_Article =" & MaN_Article" and N_C2 <> " & N_C2))) /
(Nz(DSum("[QB]", "[PB]", "N_Article =" & MaN_Article)) - Nz(DSum("[QM]", "[PV]", "N_Article =" & MaN_Article" and N_C2 <> " &
N_C2)))) * Nz(DSum("[Quantité totale]", "[Résultat]", "N_Article =" & MaN_Article)))
Exit Function
End Function

Peux tu me donner la solution ?
Ps : Juste le code entre ** ** car je ferai un remplacer tout sur access
Merci
Bisou!!!


Avatar
Eric
Bonjour Sonia
ca doit être du genre:
"N_Article=" & MaN_Article & " and N_C2 <> " & N_C2
en supposant les éléments numériques.

A+
Eric

"=?Utf-8?B?U29uaWE=?=" écrivait
news::

Bonjours Pierre.

J' ai un petit problème. J'utilise ta formule mais elle m'engendre
des des erreurs compilation : attendu séparateur de liste ou)

**"N_Article =" & MaN_Article" and N_C2 <> " & N_C2**

sur la formule complète cela donne ceci
Option Compare Database

Function fnPrix_Variant(MaN_Article) As Double
'MaN_Article = Nz(MaN_Article)
'MaN_Article = Val(MaN_Article)
fnPrix_Variant = (((Nz(DSum("[QB]", "[PB]", "N_Article =" &
MaN_Article)) - Nz(DSum("[QM]", "[PV]", "N_Article =" & MaN_Article"
and N_C2 <> " & N_C2))) * Nz(DSum("[PB]", "[PB]", "N_Article =" &
MaN_Article))) / (Nz(DSum("[QB]", "[PB]", "N_Article =" &
MaN_Article)) - Nz(DSum("[QM]", "[PV]", "N_Article =" & MaN_Article"
and N_C2 <> " & N_C2))) - ((Nz(DSum("[PB]", "[PB]", "N_Article =" &
MaN_Article)) - Nz(DSum("[PV]", "[PV]", "N_Article =" & MaN_Article"
and N_C2 <> " & N_C2))) / (Nz(DSum("[QB]", "[PB]", "N_Article =" &
MaN_Article)) - Nz(DSum("[QM]", "[PV]", "N_Article =" & MaN_Article"
and N_C2 <> " & N_C2))))) + (((Nz(DSum("[PB]", "[PB]", "N_Article =" &
MaN_Article)) - Nz(DSum("[PV]", "[PV]", "N_Article =" & MaN_Article"
and N_C2 <> " & N_C2))) / (Nz(DSum("[QB]", "[PB]", "N_Article =" &
MaN_Article)) - Nz(DSum("[QM]", "[PV]", "N_Article =" & MaN_Article"
and N_C2 <> " & N_C2)))) * Nz(DSum("[Quantité totale]",
"[Résultat]", "N_Article =" & MaN_Article)))
Exit Function
End Function

Peux tu me donner la solution ?
Ps : Juste le code entre ** ** car je ferai un remplacer tout sur
access Merci
Bisou!!!



Avatar
Pierre CFI [mvp]
euh Eric, Sonia en fine connaisseuse, avait fait le bon choix en s'adressant à moi. et je ne partage pas les bisous :o))


--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Eric" a écrit dans le message de news:
Bonjour Sonia
ca doit être du genre:
"N_Article=" & MaN_Article & " and N_C2 <> " & N_C2
en supposant les éléments numériques.

A+
Eric

"=?Utf-8?B?U29uaWE=?=" écrivait
news::

Bonjours Pierre.

J' ai un petit problème. J'utilise ta formule mais elle m'engendre
des des erreurs compilation : attendu séparateur de liste ou)

**"N_Article =" & MaN_Article" and N_C2 <> " & N_C2**

sur la formule complète cela donne ceci
Option Compare Database

Function fnPrix_Variant(MaN_Article) As Double
'MaN_Article = Nz(MaN_Article)
'MaN_Article = Val(MaN_Article)
fnPrix_Variant = (((Nz(DSum("[QB]", "[PB]", "N_Article =" &
MaN_Article)) - Nz(DSum("[QM]", "[PV]", "N_Article =" & MaN_Article"
and N_C2 <> " & N_C2))) * Nz(DSum("[PB]", "[PB]", "N_Article =" &
MaN_Article))) / (Nz(DSum("[QB]", "[PB]", "N_Article =" &
MaN_Article)) - Nz(DSum("[QM]", "[PV]", "N_Article =" & MaN_Article"
and N_C2 <> " & N_C2))) - ((Nz(DSum("[PB]", "[PB]", "N_Article =" &
MaN_Article)) - Nz(DSum("[PV]", "[PV]", "N_Article =" & MaN_Article"
and N_C2 <> " & N_C2))) / (Nz(DSum("[QB]", "[PB]", "N_Article =" &
MaN_Article)) - Nz(DSum("[QM]", "[PV]", "N_Article =" & MaN_Article"
and N_C2 <> " & N_C2))))) + (((Nz(DSum("[PB]", "[PB]", "N_Article =" &
MaN_Article)) - Nz(DSum("[PV]", "[PV]", "N_Article =" & MaN_Article"
and N_C2 <> " & N_C2))) / (Nz(DSum("[QB]", "[PB]", "N_Article =" &
MaN_Article)) - Nz(DSum("[QM]", "[PV]", "N_Article =" & MaN_Article"
and N_C2 <> " & N_C2)))) * Nz(DSum("[Quantité totale]",
"[Résultat]", "N_Article =" & MaN_Article)))
Exit Function
End Function

Peux tu me donner la solution ?
Ps : Juste le code entre ** ** car je ferai un remplacer tout sur
access Merci
Bisou!!!






Avatar
Eric
"Pierre CFI [mvp]" écrivait

euh Eric, Sonia en fine connaisseuse, avait fait le bon choix en
s'adressant à moi.
et je ne partage pas les bisous :o))

Quel dommage !


Bonjour Pierre,


Quand j'ai vu "Bisou!!!", j'ai sauté dessus ;-)

J'ai eu beaucoup de mal à retrouver le post original. Mon outlook Express
et XNews gèrent le post en indépendant. C'est très pénible car difficile
pour retrouver le post initiant le fil. Aurais tu une proposition à me
faire pour améliorer cela ?

A part ca, comme Sonia avait l'air très ennuyée, je me suis permis de
donner une approche de la solution, finalement pas très loin de la tienne.

,-)

Eric

Avatar
Pierre CFI [mvp]
briseur d'idyles naissantes, aprés anor, moi, bon:o(((

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Eric" a écrit dans le message de news:
"Pierre CFI [mvp]" écrivait

euh Eric, Sonia en fine connaisseuse, avait fait le bon choix en
s'adressant à moi.
et je ne partage pas les bisous :o))

Quel dommage !


Bonjour Pierre,


Quand j'ai vu "Bisou!!!", j'ai sauté dessus ;-)

J'ai eu beaucoup de mal à retrouver le post original. Mon outlook Express
et XNews gèrent le post en indépendant. C'est très pénible car difficile
pour retrouver le post initiant le fil. Aurais tu une proposition à me
faire pour améliorer cela ?

A part ca, comme Sonia avait l'air très ennuyée, je me suis permis de
donner une approche de la solution, finalement pas très loin de la tienne.

,-)

Eric