|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Boris Étudiant Inscription : août 2011 Messages : 53 ![]() |
Après plusieurs recherches infructueuses, je me tourne vers le forum:
Je cherche à faire une moyenne sur l'année qui prendrait en compte seulement les mois remplis. Je m'explique: Si seulement janvier février et mars sont remplis on fait une moyenne seulement sur ces trois mois, Si toute l'année est remplie, on divise par les douze mois de l'année... Ca ne marche pas avec la fonction Moyenne (). Merci pour votre aide! |
|
|
00
|
|
|
#2 | ||
![]() ![]() ![]() Fabrice CONSTANSIngénieur développement logiciels Inscription : avril 2005 Messages : 7 086 ![]() |
Bonjour,
Via une requete il faut écarter les valeurs vides. Code :
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste MsGraph et VBA - 1e Partie 2e partie Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010 Complément :Générateur de msgbox Visitez mon Blog Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine |
||
|
00
|
|
|
#3 |
|
Candidat au titre de Membre du Club
![]() Boris Étudiant Inscription : août 2011 Messages : 53 ![]() |
Merci de ton aide, pour le premier mois cela a l'art de fonctionner mais quand j'essaye de rajouter les mois suivants j'ai le message d'erreur "Vous avez essayé d'exécuter une requête ne comprenant pas l'expression "fevrier" comme une partie de la fonction d'agrégat" ... En fait je veux une moyenne de plusieurs champs de ma table par (ou pour un) enregistrement.
Merci encore |
|
|
00
|
|
|
#4 |
![]() ![]() ![]() Fabrice CONSTANSIngénieur développement logiciels Inscription : avril 2005 Messages : 7 086 ![]() |
Peux-tu poster la structure de la table et ta requete ? Parceque je suis un peu dans le flou.
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste MsGraph et VBA - 1e Partie 2e partie Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010 Complément :Générateur de msgbox Visitez mon Blog Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine |
|
00
|
|
|
#5 |
|
Candidat au titre de Membre du Club
![]() Boris Étudiant Inscription : août 2011 Messages : 53 ![]() |
Merci pour ton aide!
Ma table coûts comporte un champ pour chaque mois de l'année appelé [jan1], [fev1], [mar1], etc... Ma requête comporte un champ total_taux ou je souhaite calculer la moyenne de l'année, la difficulté vient du fait que certains mois ne sont pas forcément remplis (c'est pour des formations qui peuvent un mois seulement). Si seulement trois mois sont saisis, je veux la moyenne pour ces trois mois. Si les 12 sont saisis, la moyenne sur ces 12, etc... J'espère avoir été plus clair, merci beaucoup pour l'aide! |
|
|
00
|
|
|
#6 |
|
Membre régulier
![]() Inscription : février 2010 Messages : 100 ![]() |
Si je comprends bien, tu as une table avec une "colonne" pour chaque mois ?
Donc 12 colonnes pour un an ? Jan1, fev1, mar1,... jan2, fev2, mar2,... etc ? |
|
|
00
|
|
|
#7 |
|
Candidat au titre de Membre du Club
![]() Boris Étudiant Inscription : août 2011 Messages : 53 ![]() |
Oui c'est ca, je n'ai pas pu faire autrement car j'ai besoin de remonter chaque mois dans un formulaire de modification ...
|
|
|
00
|
|
|
#8 |
|
Membre régulier
![]() Inscription : février 2010 Messages : 100 ![]() |
... c'est pas très très propre tout ça...
Tu ne pourrais pas faire, par exemple, une table avec 13 champs (Année, janvier, février, mars,..., novembre, décembre) ? L'année te permettrait d'avoir un ID unique. Ou encore (le mieux ?) : une table de deux champs seulement (MoisAnnee, ChiffreMois). Du coup, tu n'insères plus que les enregistrements où tu as qqc (si c'est NULL, pas d'enregistrements !). Au final, ça donnerait qqc comme : Janvier2010 | 1000 Mars2010 | 1500 Juillet2010 | 750 Janvier2011 | 2500 ... Dans les deux cas, la construction de ta requête serait clairement beaucoup plus facile... et le formulaire de modification serait opérationnel sans problème. Dans le deuxième cas seulement, la requête donnée par loufab fonctionnerait (à une clause WHERE près). Et dans ton cas, je ne vois même pas comment faire à moins de récupérer tous les champs et ensuite faire du tri avec du code VBA... Tu connais le VBA ? |
|
|
00
|
|
|
#9 |
|
Candidat au titre de Membre du Club
![]() Boris Étudiant Inscription : août 2011 Messages : 53 ![]() |
Il y a surement plus simple que ce que j'ai fait mais c'est plus compliqué que ce que j'ai expliqué. Ce n'est pas par année mais par type de coût, il y en a 10. Donc avec mes connaissances en access (appris sur le tas depuis 1 mois ...) le plus simple m'a paru de faire [jan1], [fev1],..., [jan2], [fev2],... Tout marche bien sauf les calculs!
Et pareil le VBA je connais que depuis 1 mois donc je suis très vite limité... |
|
|
00
|
|
|
#10 | ||
|
Membre régulier
![]() Inscription : février 2010 Messages : 100 ![]() |
Fait très rapidement (copie-colle, ça devrait marcher) :
Code :
Pour avoir la moyenne sur jan2 => dec2, il faut simplement créer un déphasage sur la boucle : i doit aller de 13 à 24 au lieu de 1 à 12. Idem pour jan3 => dec3, i devra aller de 25 à 37. Cordialement, Beub' |
||
|
|
10
|
|
|
#11 | ||
![]() ![]() ![]() Fabrice CONSTANSIngénieur développement logiciels Inscription : avril 2005 Messages : 7 086 ![]() |
C'est justement le problème c'est super facile à gérer comme une feuille Excel... sauf qu'on est dans un base de données et pas dans un tableur. Du coup la facilité que tu as eu à la "conception" de ton modèle de données tu es en train de la payer au prix fort. Les calculs qui auraient été très facile deviennent rédibitoire à faire.
Il va te falloir monter une belle UAG pour résoudre ça. Voici une UAG typique : Code :
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste MsGraph et VBA - 1e Partie 2e partie Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010 Complément :Générateur de msgbox Visitez mon Blog Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine |
||
|
20
|
|
|
#12 |
|
Candidat au titre de Membre du Club
![]() Boris Étudiant Inscription : août 2011 Messages : 53 ![]() |
Merci pour tout je vais essayer tout ca et je reviens vers vous, c'est cool de m'aider!
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com