Vous êtes sur la page 1sur 10

COURS ACCESS Mme BELLABES

Calculs sur un champ

Nous allons calculer une prime en rapport avec le SalaireMensuel. Créez un nouveau


champ SalaireAvecPrime sous Salairemensuel, en Calculé.

Dans le générateur d'expression :


Dans la liste du milieu (Catégorie d'expressions), descendez avec l'ascenseur pour trouver SalaireMensuel
Cliquez deux fois dessus, ça le copie dans la zone en haut, et ça ajoute des crochets  [SalaireMensuel]

Ecrivez à côté, à la main :  +100

Cliquez sur OK

Si vous cliquez trop de fois sur les champs dans Catégorie d'expression, il va vous afficher quelque chose de
style :

Avec un  <<Expr>>  au milieu. Contentez -vous de sélectionner  [SalaireMensuel] <<Expr>>

[SalaireMensuel] , de l'effacer avec la touche  , et de recommencer.

Les crochets sont facultatifs :  SalaireMensuel+100  marcherait tout aussi bien que
[SalaireMensuel]+100 . Mais s'il s'agit d'un champ comportant des espaces ( Salaire mensuel  par exemple,
1
COURS ACCESS Mme BELLABES

alors, les crochets deviennent obligatoire. C'est une des raisons pour lesquelles je ne mets jamais d'espaces dans les
noms de mes champs.

Lancez la table en mode saisie de données, et constatez que les calculs sont corrects.


Le 2ème calcul est aussicorrect, car le salaire est écrit en rouge, ce qui veut dire que c'est un nombre négatif
(Nous avons vu ça dans les formats personnalisés, ici)

Le format n'est pas le même dans le champ SalaireMensuel (le format n'a pas été recopié - la preuve avec le
2ème salaire), mais Access a compris qu'il s'agissait d'un type de données monétaire.

Vous pouvez bien sûr changer le format dans les propriétés du champ. Par exemple, enlevez le  CHF , en choisissant
comme format : standard.

Recalcul automatique

Si vous modifiez un SalaireMensuel, le calcul s'effectue automatiquement dès que vous enregistrez, ou que vous
changez de champ ou d'enregistrement.

Remplacez  CHF 1'235.00  par  4700  :

2
COURS ACCESS Mme BELLABES

Vous pouvez modifier la formule directement dans la propriété Expression. Augmentez tous


les SalaireMensuel de  5%  par exemple.

On ne peut pas écrire  [SalaireMensuel]*105%, ça ne marche pas !

Si vous cliquez sur les trois petits points tout à droite, vous retournez dans le Générateur d'expression :

Eléments du générateur d'expression

Regardons plus attentivement ce que contient ce générateur d'expression (Une expression, c'est un calcul, tout
simplement)

3
COURS ACCESS Mme BELLABES

Selon ce qu'on choisit à gauche (Eléments


d'expression), le générateur d'expression propose des choix
dans la colonne du milieu (Catégories d'expressions) et/ou dans la colonne de droite (Valeurs
d'expressions).
Intéressant :

4
COURS ACCESS Mme BELLABES

Exemple d'un calcul : Age

Par contre, elle peut être utile pour connaître l'âge de nos clients ! A l'heure où j'écris ces lignes, nous sommes
en 2012. J'ai donc 47 ans, car je suis né le 21.2.1965. Il suffit de calculer 2012 - 1965 = 47.

2012 moins l'année de la date de naissance du client donne donc... son âge (à une vache près).
Marche à suivre
Commencez par créer un champ calculé Age en dessous de DateNaissance.
Dans le générateur d'expression :

Ecrivez 2012- 

Choisissez la fonction Année : 

Comme tout à l'heure,

précisez DateNaissance comme paramètre : 

Et voilà les âges ! Evidemment, l'année prochaine, en 2013, ce champ calculé deviendra faux ! Il faudra penser
à changer 2012 en 2013 ! C'est idiot !

5
COURS ACCESS Mme BELLABES

Ce qui serait bien, ce serait de remplacer 2012 par une fonction qui nous renvoie la date d'aujourd'hui,
dynamiquement.

Dans la leçon 8, quand nous parlions des dates, nous avons vu comment attribuer la valeur par défaut d'un
champ Date/Heure à aujourd'hui grâce à la fonction Date(). Vous vous rappelez ?
Fonctions impossibles à utiliser (Date)

Nous allons simplement remplacer 2012 par  Année(Date()) , comme ceci (Ecrivez-le à la

main) :  .

Au moment de cliquer sur OK, vous êtes gratifié d'un message d'erreur désagréable :

Pour l'anecdote, Le message d'erreur prétend que vous avez utilisé la fonction Year alors que vous avez
utilisé Année (Une preuve de plus qu'il y a des imperfections lors de la traduction française)
Access nous précise bien que la fonction Date() existe bien mais qu'on ne peut pas l'utiliser dans ce
cadre ! C'est ballot, n'est-ce pas ?

Fonction VraiFaux (affichage conditionnel)


Je voudrais toutefois vous parler de la fonction VraiFaux qui permet d'obtenir des résultats intéressants.
Cette fonction permet d'afficher tel ou tel texte selon la valeur d'un champ. Dans notre exemple, nous allons
afficher Riche si le SalaireAvecPrime (qui est un calcul basé sur salaireMensuel) est supérieur à 4000, et Pauvre si
c'est inférieur ou égal à 4000.

Ce n'est pas un exemple des plus utiles, mais il va vous permettre de bien comprendre le fonctionnement.
En gros :

Si SalaireAvecPrime est plus grand que 4000, affiche Riche, sinon Affiche Pauvre(oui, je suis en Suisse ).

Il y a 3 éléments :

La condition (Si SalaireAvecPrime est plus grand que 4000)


Ce qu'on affiche si c'est vrai ("Riche")
Ce qu'on affiche si c'est faux ("Pauvre")
Si vous disposez d'Access en Français, voici la bonne façon d'écrire cette fonction :
VraiFaux ([SalaireAvecPrime]>4000 ; "Riche"   ; "Pauvre")
Et si vous êtes sur une version anglophone:
iif ([SalaireAvecPrime]>4000 , "Riche" , "Pauvre")

6
COURS ACCESS Mme BELLABES

Constatez que ce sont des points-virgules (;) qui séparent les paramètres en français, et des virgules (,) dans le cas de
versions anglaises, la plupart du temps.
Oui, il y a 2 i à iif (ne me demandez pas pourquoi)

 
Faisons-le ensemble
Créez un champ EtatRichesse après salaireAvecPrime, en type de données Calculé (On peut donc faire un calcul basé
sur un autre calcul)
Vous pourriez écrire toute la fonction à la main, mais exploitons plutôt le générateur d'expression :
Cliquez dans Fonctions/Déroulement de *

programme/iif : 

Oui, je vous ai dit que la fonction s'appelait VraiFaux en Français, et là, c'est la version anglais iif qui est affichée,
même dans la version  française... De plus, au-dessus de iif, il y a la fonction Choisir (qui se traduit par Choose en
anglais), mais on n'en est plus à une fantaisie de traduction près, n'est-ce pas ?
Cliquez dans <<expression>>, et double-cliquez sur SalaireAvecPrime :

Cliquez sur <<Expr>>, et écrivez à la place >4000 : 

Cliquez sur <<truepart>> et écrivez "Riche" : 

7
COURS ACCESS Mme BELLABES

Cliquez sur <<falsepart>> et écrivez "Pauvre" : 

Lorsque vous cliquez sur OK, vous voyez enfin la fonction VraiFaux qui apparaît à la place de iif  :

Le résultat fonctionne parfaitement : 

Le collage (Concaténation) avec &

Mettez NomClient : 

Ecrivez & à la main : 

Ajoutez le Prenom : 

8
COURS ACCESS Mme BELLABES

Exercice
L'exercice consiste à créer une nouvelle base de données que vous
nommerez ExerciceLecon012.accdb.
Vous y créerez une table T_Collaborateur (ce sont tous les salariés d'une société).
Vous y créerez les champs suivants :
NomCol (Texte)
Prenom (Texte)
Departement (Texte)
SalaireMensuel (Monétaire)
Avec ces données :
NomCol Prenom Departement Salaire
Morat Hervé Achats 1500
Caillard Julie RH 7800
Munssen Samuel Marketing 2100
Zubriggen Alicia RH 19800
L'exercice consiste à créer deux champs calculés :
Libelle : L'affichage du prénom, suivi du nom et du département entre parenthèses (mettez-
bien les espaces pour éviter que ce soit tout collé)
SalaireAvecPrime : Les collaborateurs travaillant aux RH (Ressources huimaines) ont droit à
une prime de 500 francs, mais pas les autres.
Voici le résultat escompté :

9
COURS ACCESS Mme BELLABES

10

Vous aimerez peut-être aussi