IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

IHM Discussion :

Moyenne dans un état


Sujet :

IHM

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2006
    Messages : 18
    Points : 12
    Points
    12
    Par défaut Moyenne dans un état
    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....
    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)
    , pris dans la discussion http://www.developpez.net/forums/sho...moyenne+%E9tat

    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...) :

    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
    Donc voilà où j'en suis. Il s'agit de la dernière étape de mon projet ...ensuite je peux passer à autre chose

    Merci d'avance à ceux qui pourront m'éclairer !

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut
    Essai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Moyenne = (Marge OND + Marge DEN + Marge DEC) / (IIF([Marge OND]<>null;1;0)+IIF([Marge DEN ]<>null;1;0)+IIF([Marge DEC]<>null;1;0))

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2006
    Messages : 18
    Points : 12
    Points
    12
    Par défaut non cela ne marche pas

    Non cela ne marche pas : dans mon état jai mis tous mes champs et j'ai ajouté un champs texte appellé moyenne dans lequel j'ai rempli le SourceControl avec le code que tu m'as donné...et lorsque je lance l'état rien ne se passe : pas de massage d'erreur ni d'affichage de la moyenne pour aucune des lignes de mon tableau...Comment faire alors ???
    Merci quand même à toi DMboup pour ta réponse rapide...

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2006
    Messages : 18
    Points : 12
    Points
    12
    Par défaut Et dans la requête...
    Et dans la requête cela ne marche pas non plus :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Moy: Moyenne((VraiFaux([Marge OND] Est Pas Null;1;0)+VraiFaux([Marge DEN] Est Pas Null;1;0)+VraiFaux([Marge DEC] Est Pas Null;1;0)))
    J'obtiens un meassge d'erreur :
    "Vous avez essayer d'executer une requête ne comprenant pas l'expression spécifiée "Nom du champs" comme une partie de la fonction d'agrégat"
    ....que faire?!! Ca marche ni dans l'état (pourtant la solution proposée paraissait logique) ni dans une requête...

Discussions similaires

  1. Effectuer la moyenne d'une somme dans un état
    Par Alien_psy dans le forum IHM
    Réponses: 3
    Dernier message: 23/02/2013, 12h03
  2. Réponses: 2
    Dernier message: 15/04/2011, 13h43
  3. problème de moyenne dans un état.
    Par toun02 dans le forum IHM
    Réponses: 1
    Dernier message: 24/11/2007, 05h22
  4. Moyenne de groupe dans un état
    Par robertetgorgette dans le forum Access
    Réponses: 1
    Dernier message: 21/07/2006, 20h50
  5. Moyenne des champs non vide dans un état
    Par loutsky dans le forum Access
    Réponses: 4
    Dernier message: 05/04/2006, 17h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo