OVH Cloud OVH Cloud

Pb avec fonction "Moyenne"!

14 réponses
Avatar
Albert
Bonjour

Je n'arrive pas à créer une requête "moyenne" toute bête!

Essai1:
exp: Moyenne(([01Prod2005].Produits Et [01Prod2004].Produits))
Les résultats de la moyenne restent bloqué à "-1" alors que les produits ont
presque tous au moins 3 chiffres.
Certains produits sont présents en 2004 mais pas 2005 et inversement.

Essai2:
exp: Moyenne([01Prod2005].Produits;[01Prod2004].Produits)
là j'ai l'erreur :
"L'expression entrée comporte une fonction dont le nombre d'arguments n'est
pas correct"


nb:
Les champs "[01Prod2005].Produits" et "[01Prod2004].Produits" sont également
issus eux-même de précédentes requêtes.
Il y a des liaisons (relations) entre ces champs grâce à un autre champ
nommé "Nref".


Merci pour toute aide ;)
Al

4 réponses

1 2
Avatar
ze_titi
Heureux de voir que ça plaît à quelqu'un... ;-)

Concernant ta question, il me semble qu'en entourant tout ça d'un

IIf(iserror(ma_formule),0,ma_formule)

Ca pourrait le faire, non ? Mais ça commence à faire un truc sauvage point
de vue longueur... Ou alors on fait un petit changement du style :

(nz([01prod2005].produits;0)+nz([01prod2004].produits;0))/(iif(nz([01Prod2005].produits;0)=0;0;1)+1)

De cette façon, quoiqu'il arrive, on divise par 1... Plus simple et moins
lourd à écrire (et accessoirement, gain de temps sur le calcul par Access...)



--
Cordialement,

ze_titi

Mail perso: http://www.cerbermail.com/?sj4KuQC4GQ




Bonjour, ze titi.
Effectivement, ta solution devrait répondre exactement à la demande.
J'avais d'ailleurs pensé à quelque chose d'approchant mais j'ai eu la flemme
d'écrire la formule ;-)
Par contre, la possibilité d'une division par zéro n'est pas à écarter ! Que
faire si les deux valeurs sont à zéro ou null ?
--
Bonne continuation
-------------------------------------------------------------------------------------------
http://www.mpfa.info : c'est bonheur pour ton ordinateur !
-------------------------------------------------------------------------------------------
"ze_titi" <http://www.cerbermail.com/?sj4KuQC4GQ> a écrit dans le message de
news:
Personnellement, ce que j'aimais bien dans la solution que j'ai proposée,
c'est que précisément elle ne tenait pas compte des valeurs nulles ou
zéro...
Enfin moi, ce que j'en dis...

--
Cordialement,

ze_titi

Mail perso: http://www.cerbermail.com/?sj4KuQC4GQ




Re,

Si je comprends bien, tu veux une moyenne qui ne tienne pas compte des
valeurs 0 ni nulles ?


Exact! ;)

Cela ne me semble pas très juste, peut-être vaut-il mieux comparer la
moyenne de chaque année côte à côte.
Le champ que tu cherches à faire est censé représenter une moyenne sur
deux années. Si tu exclus une des années parce qu'elle est vide, tes
chiffres ne veulent plus dire grand chose...


Dans mon cas c'est très important!

ou je n'ai pas tout compris ce qui n'est bien évidemment pas à exclure
;-)
Par ailleurs, la moyenne entre 10 et 20 donne 15 et pas 10, non ?


Oups! Merci voici je corrige:
http://cjoint.com/?ktmbWGuOHZ

En fait je viens d'essayer de poser mon problème dans Excel (dont j'ai
plus
l'habitude) pour voir.
Vu que j'importe mes tables de données d'Excel et étant donné qu'avec
Excel
les moyennes marchent bien quand une cellule est vide (mais pas avec zéro
"0"), la solution pour moi est de nettoyer ma table avant en supprimant
les
zéros par du vide (fonction Remplacer ds Excel avec "Respecter la case"
de
coché). Puis comme çà ne marche toujours pas dans Access (il me divise
par 2
quoi qu'il arrive), j'exporte dans un autre fichier Excel les champs dont
j'ai besoin (plusieurs années) et là je mettrai une macro pour faire mes
moyennes. Ainsi je pourrais reimporté ce nouveau fichier Excel dans
Access!
;)

Merci encore Gilles. Sachez que j'ai apprécié votre aide précieuse. ;)
Al












Avatar
Pierre CFI [mvp]
allez, allez, tous ensemble
Il est bon ce ze_titi :o)) avec évidement un code qui génére 1 000 fois cette maxime

--
Pierre CFI
MVP Microsoft Access

Site pour bien commencer
Access http://www.mpfa.info

"ze_titi" <http://www.cerbermail.com/?sj4KuQC4GQ> a écrit dans le message de news:

Heureux de voir que ça plaît à quelqu'un... ;-)

Concernant ta question, il me semble qu'en entourant tout ça d'un

IIf(iserror(ma_formule),0,ma_formule)

Ca pourrait le faire, non ? Mais ça commence à faire un truc sauvage point
de vue longueur... Ou alors on fait un petit changement du style :

(nz([01prod2005].produits;0)+nz([01prod2004].produits;0))/(iif(nz([01Prod2005].produits;0)=0;0;1)+1)

De cette façon, quoiqu'il arrive, on divise par 1... Plus simple et moins
lourd à écrire (et accessoirement, gain de temps sur le calcul par Access...)



--
Cordialement,

ze_titi

Mail perso: http://www.cerbermail.com/?sj4KuQC4GQ




Bonjour, ze titi.
Effectivement, ta solution devrait répondre exactement à la demande.
J'avais d'ailleurs pensé à quelque chose d'approchant mais j'ai eu la flemme
d'écrire la formule ;-)
Par contre, la possibilité d'une division par zéro n'est pas à écarter ! Que
faire si les deux valeurs sont à zéro ou null ?
--
Bonne continuation
-------------------------------------------------------------------------------------------
http://www.mpfa.info : c'est bonheur pour ton ordinateur !
-------------------------------------------------------------------------------------------
"ze_titi" <http://www.cerbermail.com/?sj4KuQC4GQ> a écrit dans le message de
news:
Personnellement, ce que j'aimais bien dans la solution que j'ai proposée,
c'est que précisément elle ne tenait pas compte des valeurs nulles ou
zéro...
Enfin moi, ce que j'en dis...

--
Cordialement,

ze_titi

Mail perso: http://www.cerbermail.com/?sj4KuQC4GQ




Re,

Si je comprends bien, tu veux une moyenne qui ne tienne pas compte des
valeurs 0 ni nulles ?


Exact! ;)

Cela ne me semble pas très juste, peut-être vaut-il mieux comparer la
moyenne de chaque année côte à côte.
Le champ que tu cherches à faire est censé représenter une moyenne sur
deux années. Si tu exclus une des années parce qu'elle est vide, tes
chiffres ne veulent plus dire grand chose...


Dans mon cas c'est très important!

ou je n'ai pas tout compris ce qui n'est bien évidemment pas à exclure
;-)
Par ailleurs, la moyenne entre 10 et 20 donne 15 et pas 10, non ?


Oups! Merci voici je corrige:
http://cjoint.com/?ktmbWGuOHZ

En fait je viens d'essayer de poser mon problème dans Excel (dont j'ai
plus
l'habitude) pour voir.
Vu que j'importe mes tables de données d'Excel et étant donné qu'avec
Excel
les moyennes marchent bien quand une cellule est vide (mais pas avec zéro
"0"), la solution pour moi est de nettoyer ma table avant en supprimant
les
zéros par du vide (fonction Remplacer ds Excel avec "Respecter la case"
de
coché). Puis comme çà ne marche toujours pas dans Access (il me divise
par 2
quoi qu'il arrive), j'exporte dans un autre fichier Excel les champs dont
j'ai besoin (plusieurs années) et là je mettrai une macro pour faire mes
moyennes. Ainsi je pourrais reimporté ce nouveau fichier Excel dans
Access!
;)

Merci encore Gilles. Sachez que j'ai apprécié votre aide précieuse. ;)
Al














Avatar
Albert
Bonjour ze_titi,

Pardon pour mon absence de réponse mais comme je lis les news par
news:news.free.fr certains messages n'apparaissent pas (c'est le cas de vos
deux premiers) ou alors avec retard par rapport à
http://www.microsoft.com/office/community/fr-fr/default.mspx?so=0&pg=1&dg=microsoft.public.fr.access

Je viens de tester pour la forme vos deux solutions : et le problème c'est
que le resultat de ma moyenne est toujours divisée par deux même lorsque un
des deux champs n'a pas d'enregistrement.

Je retourne donc avec ma solution un peu plus fastidieuse
(Excel=>Access=>Excel=>Access) et je vous remercie tous pour votre aide,
Au plaisir ;)
Al
Avatar
ze_titi
je suis gêné... Pour 2 raisons:
La première: je ne mérite pas ces honneurs
La seconde: Ca n'a pas l'air de fonctionner...

Merci quand même ;-)
--
Cordialement,

ze_titi

Mail perso: http://www.cerbermail.com/?sj4KuQC4GQ




allez, allez, tous ensemble
Il est bon ce ze_titi :o)) avec évidement un code qui génére 1 000 fois cette maxime

--
Pierre CFI
MVP Microsoft Access

Site pour bien commencer
Access http://www.mpfa.info

"ze_titi" <http://www.cerbermail.com/?sj4KuQC4GQ> a écrit dans le message de news:

Heureux de voir que ça plaît à quelqu'un... ;-)

Concernant ta question, il me semble qu'en entourant tout ça d'un

IIf(iserror(ma_formule),0,ma_formule)

Ca pourrait le faire, non ? Mais ça commence à faire un truc sauvage point
de vue longueur... Ou alors on fait un petit changement du style :

(nz([01prod2005].produits;0)+nz([01prod2004].produits;0))/(iif(nz([01Prod2005].produits;0)=0;0;1)+1)

De cette façon, quoiqu'il arrive, on divise par 1... Plus simple et moins
lourd à écrire (et accessoirement, gain de temps sur le calcul par Access...)



--
Cordialement,

ze_titi

Mail perso: http://www.cerbermail.com/?sj4KuQC4GQ




Bonjour, ze titi.
Effectivement, ta solution devrait répondre exactement à la demande.
J'avais d'ailleurs pensé à quelque chose d'approchant mais j'ai eu la flemme
d'écrire la formule ;-)
Par contre, la possibilité d'une division par zéro n'est pas à écarter ! Que
faire si les deux valeurs sont à zéro ou null ?
--
Bonne continuation
-------------------------------------------------------------------------------------------
http://www.mpfa.info : c'est bonheur pour ton ordinateur !
-------------------------------------------------------------------------------------------
"ze_titi" <http://www.cerbermail.com/?sj4KuQC4GQ> a écrit dans le message de
news:
Personnellement, ce que j'aimais bien dans la solution que j'ai proposée,
c'est que précisément elle ne tenait pas compte des valeurs nulles ou
zéro...
Enfin moi, ce que j'en dis...

--
Cordialement,

ze_titi

Mail perso: http://www.cerbermail.com/?sj4KuQC4GQ




Re,

Si je comprends bien, tu veux une moyenne qui ne tienne pas compte des
valeurs 0 ni nulles ?


Exact! ;)

Cela ne me semble pas très juste, peut-être vaut-il mieux comparer la
moyenne de chaque année côte à côte.
Le champ que tu cherches à faire est censé représenter une moyenne sur
deux années. Si tu exclus une des années parce qu'elle est vide, tes
chiffres ne veulent plus dire grand chose...


Dans mon cas c'est très important!

ou je n'ai pas tout compris ce qui n'est bien évidemment pas à exclure
;-)
Par ailleurs, la moyenne entre 10 et 20 donne 15 et pas 10, non ?


Oups! Merci voici je corrige:
http://cjoint.com/?ktmbWGuOHZ

En fait je viens d'essayer de poser mon problème dans Excel (dont j'ai
plus
l'habitude) pour voir.
Vu que j'importe mes tables de données d'Excel et étant donné qu'avec
Excel
les moyennes marchent bien quand une cellule est vide (mais pas avec zéro
"0"), la solution pour moi est de nettoyer ma table avant en supprimant
les
zéros par du vide (fonction Remplacer ds Excel avec "Respecter la case"
de
coché). Puis comme çà ne marche toujours pas dans Access (il me divise
par 2
quoi qu'il arrive), j'exporte dans un autre fichier Excel les champs dont
j'ai besoin (plusieurs années) et là je mettrai une macro pour faire mes
moyennes. Ainsi je pourrais reimporté ce nouveau fichier Excel dans
Access!
;)

Merci encore Gilles. Sachez que j'ai apprécié votre aide précieuse. ;)
Al



















1 2