Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Modélisation
Modélisation Le forum qui vous aide à résoudre vos questions relatives à la modélisation (tables et relations) de votre base de données sous Access. Pour les états et les formulaires, postez dans le forum IHM.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/12/2010, 17h40   #1
Invité de passage
 
Inscription : décembre 2010
Messages : 4
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 4
Points : 1
Points : 1
Par défaut Champ "observation" calculé

Bonjour
Est ce quelqu'un peut m'aider d'utiliser Macro ou une procédure sur Accès
je suis entrain de développer une application sur accès de gestion des notes des élèves, mais je n'arrive à saisir le champ "Observation" automatiquement selon la palge de la moyenne; par exemple
-si la moyenne >= 17 l'observation = Très bien.
-si la moyenne >= 15 et < 17 l'observation = Bien.
-si la moyenne <= 1 l'observation = Passable.

Nom Moyenne Mention
x1 18 Très bien
x2 10 Passable
x3 12 Moyen
x4 15 Bien
x5 17 Très bien
x6 11 Passable
novice01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2010, 18h14   #2
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 176
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 176
Points : 2 805
Points : 2 805
Bonsoir Novice01,

Une solution consisterait à créer une table qui contiendrait 20 enregistrements (une fois pour toute) :
- note (clé primaire) (valeur de 1 à 20)
- observation

Cela te permettrait :
  • de modifier facilement les observations liées aux notes sans t'embringuer dans des modifications de VraiFaux (IIf) ou de BETWEEN (requête) ;
  • de travailler selon une requête qui lie la note à cette table pour trouver l'observation correspondante.
__________________
Dis-nous et à bientôt,
Richard.
----------------------------------------------------------------------------------------------
En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
Richard_35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2010, 15h28   #3
Invité de passage
 
Inscription : décembre 2010
Messages : 4
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 4
Points : 1
Points : 1
Bonjour Richard
on ne peut pas mettre le champs "note" commeclé primaire car on peut trouver 2 élèves ayant même note
merci
novice01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2010, 15h47   #4
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 176
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 176
Points : 2 805
Points : 2 805
Bonjour,

Non, tu n'as pas compris : il s'agit de la table des notes possibles (de 1 à 20) avec la mention que tu lui associes (très bien, bien, etc...).

Table NOTE :
- note (clé primaire) (valeur de 1 à 20)
- mention

Table TATABLE :
- nom
- moyenne
qui contient :
Code :
1
2
3
4
5
6
7
Nom Moyenne
x1   18 
x2   10 
x3   12 
x4   15 
x5   17 
x6   11
Tu crées une requête qui lie TATABLE à la table NOTE, via le champ "moyenne", et tu obtiens la mention associée.


Cela te permettra :
  • de modifier facilement les observations liées aux notes sans t'embringuer dans des modifications de VraiFaux (IIf) ou de BETWEEN (requête) ;
  • de travailler selon une requête qui lie la note à cette table pour trouver l'observation correspondante.
__________________
Dis-nous et à bientôt,
Richard.
----------------------------------------------------------------------------------------------
En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
Richard_35 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/12/2010, 22h46   #5
Invité de passage
 
Inscription : décembre 2010
Messages : 4
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 4
Points : 1
Points : 1
Salut
je voudrais que le champs "Observation " change de valeur selon un interval du champ "moyenne" (un champs calculable)
par exemple, si la moyenne >=17 le champ "Observation" prend la valeur "très bien"
si la moyenne <17 et >= 15 le champ "Observation" prend la valeur "bien"
si la moyenne <=14 le champ "Observation" prend la valeur "Passable".
novice01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2010, 00h13   #6
Membre éprouvé
 
Avatar de dumas.blr
 
Homme Jean-Yves DUMAS
Consultant informatique
Inscription : juin 2010
Messages : 325
Détails du profil
Informations personnelles :
Nom : Homme Jean-Yves DUMAS
Âge : 48
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Consultant informatique
Secteur : Conseil

Informations forums :
Inscription : juin 2010
Messages : 325
Points : 447
Points : 447
Bonjour Novice01,

La proposition de Richard35 est pertinente dans le sens ou si tu souhaites paramétrer de manière simple les mentions associées au notes (bien, très bien, etc.), tu n'aura pas besoin de faire des modifications complexes.

Si tu souhaites persister dans une structure mono-table, tu n'auras pas d'autre choix que de coder ta requête avec une combinaison de IIF et de Between

dans le cas présent:
Code :
select (iif(moyenne > 17,"Très bien.",iif(moyenne Between 15 and 17,"Bien.","Passable."))) from notes
dumas.blr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2010, 12h29   #7
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 176
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 176
Points : 2 805
Points : 2 805
Bonjour Novice01 et Dumas.blr,

Il m'a échappé qu'il s'agissait de moyenne, donc des notes avec décimales. Dans ce cas, effectivement, l'utilisation de la table que je t'ai proposée est impossible.

La proposition de Dumas.blr est donc la seule, dans le principe :
  • dans une requête avec assistant : VraiFaux (ou IIf) imbriqué (attention aux parenthèses) ;
  • via VBA : l'utilisation de l'instruction SELECT CASE... (plus facilement maintenable).
__________________
Dis-nous et à bientôt,
Richard.
----------------------------------------------------------------------------------------------
En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
Richard_35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2010, 00h59   #8
Invité de passage
 
Inscription : décembre 2010
Messages : 4
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 4
Points : 1
Points : 1
Bonjour

comment je vais manipuler " case" selon la veleur d'un champ pour metre à jour un autre champ et tout ça sur sql
merci pour votre aide
novice01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2010, 10h11   #9
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 176
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 176
Points : 2 805
Points : 2 805
Bonjour Novice01,

Je ne connais pas VBA.

Si toi non plus, Dumas.blr t'as déjà donné la solution.

En création de requête, mode SQL :
Code sql :
1
2
SELECT (iif(moyenne > 17,"Très bien.",iif(moyenne BETWEEN 15 AND 17,"Bien.","Passable.")))
FROM notes

En création de requête, mode graphique :
VraiFaux(moyenne > 17 ; "Très bien." ; VraiFaux(moyenne entre 15 and 17 ; "Bien." ; "Passable."))

A adapter suivant tes tranches.

La syntaxe du VraiFaux étant :
VraiFaux("condition" ; "valeur" si vrai ; "valeur" si faux), "valeur" pouvant contenir, elle-même, un VraiFaux. Il faut donc faire attention à l'imbrication des parenthèses.

Je pense que tu as tout pour faire...
__________________
Dis-nous et à bientôt,
Richard.
----------------------------------------------------------------------------------------------
En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
Richard_35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2010, 11h29   #10
Membre confirmé
 
Avatar de spaiku
 
Chef de projet MOA
Inscription : septembre 2007
Messages : 191
Détails du profil
Informations personnelles :
Âge : 32
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Chef de projet MOA
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2007
Messages : 191
Points : 250
Points : 250
Bonjour,

effectivement, la solution proposée par Richard au début me semble aussi la plus élégante. Les décimales sont-elles réellement un problème, dans la mesure où elles peuvent toujours être arrondies ?

Sinon, en passant par du code, j'écrirais d'une fonction qui renvoie l'observation en fonction de la note :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Function getObserv(p_note As Single) As String
 
If p_note > 18 Then
    getObserv = "Très Bien"
    Exit Function
End If
 
If p_note > 14 Then
    getObserv = "Bien"
    Exit Function
End If
 
'etc...
 
End Function
L'intérêt est que cette fonction est plutôt lisible, donc facilement maintenable, et qu'elle peut être utilisée directement dans le SQL, genre :
Code :
SELECT getObserv(moyenne) FROM Notes
spaiku est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h29.


 
 
 
 
Partenaires

Hébergement Web