Bonjour j'aborde ici un sujet qui a peu été traité dans la FAQ mais quelques fois tout de même dans le forum...malheuresement je n'arrive pas à appliquer les procédures à mon projet.
Je souhaiterais dans un état afficher pour chaque ligne la moyenne d'une dizaine de critères, et si l'un des critères n'est pas renseigné, ne pas le prendre en compte (et non le mettre à zéro).
Je pourrais donc passer par une requête, mais je n'arrive pas à mettre les conditions (par ex en les mettant dans un module avant)...
Voici ce que j'ai trouvé :
http://www.developpez.net/forums/sho...moyenne+%E9tat
http://www.developpez.net/forums/sho...moyenne+%E9tat
Mon exemple (simplifié) est celui-ci :
Une table EvaluationTBL
Un champs numéro automatique : NumEvaluation
Trois réels simples : [Marge OND], [Marge DEN] et [Marge DEC]
D'autres champs d'informations
Dans mon état je voudrais afficher un tableau, dont chaque ligne est composée de la facon suivante :
NumEvaluation ; Les autres infos ; Marge OND ; Marge DEN ; Marge DEC ; Moyenne
Moyenne = (Marge OND + Marge DEN + Marge DEC) / 3
Mais si l'un ou l'autre est nul, il faut ne pas le compter et diviser par un en moins...
Jai trouvé un code sur le forum, mais il ne marche pas : transforme la table source en hyéroplyphes....
, pris dans la discussion http://www.developpez.net/forums/sho...moyenne+%E9tat
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Select nom, (somme/nombre) as Moyenne from( SELECT Nom, -((Not IsNull([conso2001]))+(Not IsNull([conso2002]))+(Not IsNull([conso2003]))+(Not IsNull([conso2004]))) AS Nombre, IIf(IsNull([conso2001]),0,[conso2001])+IIf(IsNull([conso2002]),0,[conso2002])+IIf(IsNull([conso2003]),0,[conso2003])+IIf(IsNull([conso2004]),0,[conso2004]) AS Somme FROM Table2)
J'ai également écrit un code suivant les conseils trouvés : incrémenter unnombre de +1 si le champs n'est pas null...Et ca marche...dans mon forulaire où l'employé rentre les données mais pas dans l'état destiné à imprimer le rapport. J'ai essayé de mettre ce code dans un module pour l'appeller depuis la requête mais cela ne fonctionne pas...
Ce code (avec tous les critères...) :
Donc voilà où j'en suis. Il s'agit de la dernière étape de mon projet
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 Sub CalculMoyenne() Dim Moyenne As String Dim i As String Moyenne = "0" i = 0 If Not Me.Uniformité.ControlSource = "" Then Moyenne = Moyenne & " + [Uniformité]" i = i + 1 End If If Not Me.Largeur_bas_feuille.ControlSource = "" Then Moyenne = Moyenne & " + [Largeur bas feuille]" i = i + 1 End If If Not Me.Marge_OND.ControlSource = "" Then Moyenne = Moyenne & " + [Marge OND]" i = i + 1 End If If Not Me.Marge_DEN.ControlSource = "" Then Moyenne = Moyenne & " + [Marge DEN]" i = i + 1 End If If Not Me.Marge_DEC.ControlSource = "" Then Moyenne = Moyenne & " + [Marge DEC]" i = i + 1 End If ' [.......plusieurs autres champs à tester....] If i = 0 Or Moyenne = "0" Then Exit Sub Moyenne = "=(" & Moyenne & ")" & "/" & i End Sub...ensuite je peux passer à autre chose
![]()
Merci d'avance à ceux qui pourront m'éclairer !
Partager