Leçon 7
 
Argent et type monétaire

Dans cette leçon, nous allons apprendre à gérer le type de données monétaire (tout ce qui constitue de l'argent).

Nous apprendrons à gérer l'affichage des différentes monnaies (€, CHF, etc.), ainsi que les décimales.

Nous verrons également en détail les différents types de numériques et leurs limites.

 
Sommaire

Création d'un champ de type monétaire

Ouvrez Formagiciel. accdb, ouvrez la table T_Client, et ajoutez SalaireMensuel que vous définirez en Monétaire.

Lancez la table en mode saisie de données, et entrez 1234.65 comme salaire d'Edith Piaf.

Ce montant va s'afficher comme ceci : . fr. au début du montant, un apostrophe ' de séparation entre les milliers et les centaines, et deux décimales après le point.

Il est possible que vous n'ayez pas le même symbole monétaire que moi.

Tout comme les dates et heures, la manière d'afficher les valeurs monétaires est déterminée lors de l'installation de Windows, et tout dépend de la région ou du pays dans lequel vous vivez. Nous y reviendrons.

Confusions du terme "Monétaire"

Attention : le bout de chapitre qui va suivre n'est pas évident, et si vous ne le comprenez pas vraiment, ce n'est pas bien grave.

Revenez en mode création, nous allons observer une sorte de confusion. Constatez que SalaireMensuel est défini en type Monétaire, mais, de plus, sa propriété Format est également Monétaire.

Ces deux monétaires ont deux fonctions différentes !

Le type de données Monétaire est la précision du nombre. Vous vous rappelez, dans la leçon 5, les différents type des données numériques ?

Eh bien, ce type Monétaire correspond à une sorte de précision numérique.

La propriété Format, quant à quant à elle, détermine l'apparence esthétique de l'affichage. Et Microsoft n'a rien trouvé de plus malin que de nommer un de ces formats "Monétaire" ! Ce n'est pas étonnant qu'on confonde !

Regardez maintenant ce qui se passe si je définis mon champ en Numérique :

Dns ce cas, dans les propriétés du champ, je peux définir la taille du champ, mais en plus, je peux définir son format.

Ainsi, lorsqu'on choisit le type de données Numérique, on peut choisir sa Taille, mais quand on choisit le type Monétaire, on a pas le choix de la taille.

Du coup, on peut légitimement se poser la question : Le type de données Monétaire, c'est quoi ? Un Réel Simple ? Un Réel Double ? Un Entier Long ? ...

Eh bien non, c'est encore un autre type de données numérique non-disponible dans la liste des tailles de numérique !

 

 

Tableau des types de numérique

Afin d'éclaircir un peu ces différents formats, voici un tableau récapitulatif

Type de données Propriété
Taille du champ

Décimales possibles

Le plus petit 
nombre possible
le plus grand
nombre possible
Exemple d'utilisation
 Numérique  Octet Non  0  255 Nombre d'enfants
 Numérique  Entier Non  -32'768  32'767 Nombre d'amis sur FaceBook
 Numérique

 Entier Long
(C'est le type de données des NuméroAuto, mais nous y reviendrons)

Non   -2'147'483'648  2'147'483'647
Plus de 2 milliards, donc.
 Principalement en relation  avec les Numéros automatiques (que nous verrons plus tard.)
 Numérique  Réel Simple Oui (mais ça dépend)  -9'999'999.00  9'999'999.00
Presque 10 millions

En statistiques et probabilités, ça peut être utile

En réalité, on a droit à 7 chiffres en tout et pour tout en Réel Simple. Donc, si on écrit 9'999'999, on a pas le droit de mettre des décimales parce qu'on a déjà utilisé les 7 chiffres, mais on pourrait écrire 9'999.123 par exemple, ou même 0.123456 : L'important est de ne pas utiliser plus que 7 chiffres.
 Numérique  Réel Double Oui (mais ça dépend)  -999'999'999'999'999  999'999'999'999'999
Presque un million de milliards
Microbiologie, physique quantique, tous les cas ou l'extrême précision des décimales est cruciales

La remarque est exactement la même que pour le type Réel Simple, sauf qu'ici, on a droit à 15 chiffres au lieu de 7. C'est à dire qu'on pourrait écrire un nombre très petit, comme par exemple : 0.00000000000001

On peut écrire des nombres beaucoup plus grands encore dans un Réel double ou réel simple, mais alors, ces nombres seront arrondis :

Par exemple, si vous essayez d'écrire le nombre 123456789123456789123456789 dans un Réel Double, vous n'aurez pas de message d'erreur, mais un arrondissement comme ceci : 123'456'789'123'457'000'000'000'000

 Numérique  N° de réplication On ne va pas s'occuper de cette option, ça date du temps d'Access 2003, ou on pouvait répliquer les bases de données, mais c'est une autre histoire
 Numérique  Décimal Non  -999'999'999'999'999'999  999'999'999'999'999'999
Presque un milliard de milliards
Astrophysique, théoriques des grands nombres, mathématiques théoriques
 Monétaire pas d'option : c'est obligatoirement la taille dire "monétaire" Oui  -99'999'999'999'999.9999  99'999'999'999'999.9999
Si on ajoute un millième de centime, on arrive à cent mille milliards
Toute notion d'argent
Contrairement aux Réels doubles et simples, ici, la précision des décimales est 4. Pas question, par exemple, d'écrire 9.99999, ce sera arrondi à 10. C'est donc un type de données particulièrement bien étudié pour contenir des sommes d'argent.

Dans l'exemple qui suit, je vous montre qu'il est possible de mixer de manière "contre-nature" les types de données et leur format. Dans cet exemple, nous inscrivons 1235.45 comme SalaireMensuel d'Edith Piaf.

Dans l'exemple du haut, nous avons une précision monétaire, mais un affichage en format Standard. Le format Standard est sans doute le format le plus lisible, le plus sympathique et le plus utilisé.

Dans l'exemple du bas, nous avons un Numérique Entier, affiché en format Monétaire : il y a donc les deux décimales affichées en plus du symbole fr., mais comme le type Entier n'admet pas les décimales, elles seront systématiquement à 00.

 

Voilà ! La partie compliquée est terminée !

 

Nous allons revenir à des notions plus basiques. Définissez SalaireMensuel comme étant un type Monétaire. Pour le format, vous avez trois choix pertinents : Monétaire, Euro et Standard.

Dans les trois cas, vous aurez une apostrophe ' de séparation entre les milliers et les centaines (en fait, par groupe de 3 chiffres : 12'345'678.75), un point décimal, et deux chiffres après la virgule.

Le format €uro

Pour afficher le signe ,(Même si vous êtes dans Excel ou dans Word) appuyez sur

 

Ce n'est pas parce que vous passez d'un format Monétaire à un format € qu'Access va vous calculer une conversion ! Le montant restera le même, avec simplement fr. ou € affiché sur la gauche !

Changer le format via le panneau de configuration

Maintenant, le symbole fr. ne me convient pas ! A Genève, en Suisse, on utilise la convention internationale CHF.

Pour ce faire :

C'est dans ce même endroit que vous pourrez, si vous le désirez) remplacer le point décimal par une virgule, ainsi que le caractère des séparations des milliers et des centaines (l'apostrophe ' est parfois remplacée par une virgule, ou par un simple espace dans certaines régions)
Le fait de modifier l'apparence des nombres de cette manière affectera tous vos programmes (notamment Excel), et pas seulement Access
  1. Cliquez sur le bouton Démarrer de Windows
  2.   et

Attention : A la fin de l'opération, lorsque vous revenez dans Access et que vous rouvrez la table T_Client, le format de SalaireMensuel s'est transformé en un format personnalisé ("fr. "#'##0.00;"fr.-"#'##0.00) !

C'est à dire qu'il pense que vous désirez garder l'ancien format contre vents et marées !

Afin d'utiliser le nouveau format monétaire par défaut que vous venez de sélectionner dans le panneau de configuration, c'est à vous de le re-sélectionner.

Nombre de décimales

Attribuez quelques salaires, comme ceci :

Pour Coluche, si vous écrivez 9999.999, comme l'affichage va se faire sur 2 décimales.

Access va vous afficher 10'000.00, mais ce sera bien  9999.999 qui sera stocké de manière interne (Alors que si le type de données était du Numérique Entier, les décimales auraient été purement et simplement éliminées).

Si vous rétrécissez trop les colonnes, dans le cas de texte, on ne verra que la partie gauche du texte, mais s'il s'agit de nombres, vous n'en verrez même pas une partie, mais seulement des dièses ####### à la place :

C'est très pertinent, parce que je vous laisse imaginer les problèmes si on ne lisait que partiellement un nombre !

Dans cet exemple, j'ai trop rétréci la colonne, et on ne peut pas voir les nombres supérieurs à 10'000. Certains prénoms trop long (Steven, Michael, Patrick), sont, eux, tronqués.

 

Elargissez à nouveau les colonnes de manière à voir les salaires correctement.

Retournez en mode création. Nous allons préciser que nous désirons un affichage sur 4 décimales (Je rappelle que c'est de toute façon le nombre maximum de décimales acceptée par la précision monétaire).

Vous constatez que, effectivement, 10'000 s'affiche bien comme 9'999.9990.

 

D'une façon globale, personnellement, je préconise l'affichage des montants comme ceci :

Formats personnalisés

Revenons sur le format personnalisé que vous avez aperçu tout à l'heure : "fr. "#'##0.00;"fr.-"#'##0.00. Le formatage des nombres est quelque chose d'assez complet (et complexe). Aussi, nous n'allons pas creuser ces possibilités trop profondément.

Nous allons étudier ce format : "fr. "#'##0.00;"fr.-"#'##0.00. En fait, il est composé de 2 formats : le premier : ,fr. "#'##0.00 représente l'affichage des nombres positifs (supérieurs à 0), et l'autre partie, "fr.-"#'##0.00, après le point-virgule, représente le format utilisé lorsque les chiffres sont négatifs (en dessous de zéro) : C'est facile, c'est le même, sauf qu'il y a le signe moins (-) juste avant.

Voici l'explication de ces éléments :

Partie du format Explications

On aurait pu écrire

pour 1234.56, Access aurait affiché :
 "fr. "  C'est un texte facultatif qu'on affiche à côté du nombre. On peut aussi le mettre à droite.

"$$$"#'##0.00

#'##0.00" Dollars"

 $$$1'234.56

 1'234.56 Dollars

#'##0

le dièse # représente les 0 non-significatifs (Rien à voir avec les # qui sont affichés quand la colonne est trop étroite !).

ça permet de savoir quand et comment afficher un caractère de séparation entre les groupes de 3 chiffres.

 "fr. "# ##0.00
(qu'Access transforme en format "fr. "# 0.00)

 "fr. "#,##0.00
(qu'Access transforme en format "fr. "#,0.00)

 fr. 1 234.56

 

 

 fr. 1,234.56

.00 Nombre de décimales affichées, si la propriété Décimales est définie sur Auto (Si le nombre de décimales est imposé par la propriété Décimales, c'est cette propriété décimales qui prend le dessus)

 "fr. "#,##0.000000

 "fr. "#,##0

 fr. 1,234.560000

 fr. 1,235

(Arrondissement à 1235 qui est plus proche de 1234.56 que 1234)

Formats personnalisés avec Excel

Ces formats personnalisés ne sont pas évident à appréhender, mais voici une petite astuce pour vous aider à les créer correctement grâce à Excel :

  1. Lancez Excel
  2. Ecrivez quelques nombres très différents dans les cellules de A1 jusqu'à A4, comme ceci :
  3. Cliquez sur le lanceur de boîte de dialogue de police :
  4. Cliquez sur l'onglet Nombre, et faites les choix suivants :
    Vous constatez que le chiffre d'exemple correspond à la première cellule sélectionnlée (A1 : 1234.56), ce qui vous permet de prévisualiser l'aspect du nombre après que vous ayez cliqué sur OK.
    Concernant les nombres négatifs, en bas, nous allons choisir de les afficher en rouge, mais pas avec le signe moins (-) devant.
    Si vous cliquez sur OK, voici ce qui va s'afficher :
                                
    N'est-ce pas sympathique d'afficher les nombres négatifs en rouge ?
  5. Mais pour savoir de quel format il s'agit, par exemple pour le copier-coller dans le format de notre champ Access, cliquez sur Personnalisée.
    Le format que vous voyez est la représentation "textuelle" du format que vous avez sélectionné juste avant : CHF #'##0.00;[Rouge]CHF #'##0.00.

Maintenant, vous pouvez sélectionner en noir ce format de nombres très sympathique,
et le copier avec .

 

Retournez ensuite dans Access, dans votre table T_Client en mode création, et collez ce format de nombre dans la propriété format de SalaireMensuel.

Attention : pour une raison que j'ignore, lorsque vous validez avec ENTER, ou que vous cliquez ailleurs, ce joli format tout propre qui fonctionne très bien :

CHF #'##0.00;[Rouge]CHF #'##0.00

se transforme en un format tout pourri qui ne fonctionne pas :

ch"F #'##0.00";[Rouge]ch"F #'##0.00"

Que vous devrez méticuleusement RE-corriger à la main en

CHF #'##0.00;[Rouge]CHF #'##0.00

Ne me demandez pas pourquoi il faut faire ce réajustement à la main, je n'en ai aucune idée ! Tout ce que je peux vous dire c'est que d'ûne manière globale, Access et Excel acceptent les mêmes possibilités de formats, mais pas toujours ! Restez prudent !

Lancez ensuite la table en mode saisie de données et attribuez un salaire négatif : -5825.65 à Steven Spielberg : Voilà : il s'affiche en rouge :. Vous aurez donc compris que c'est cette partie du format : "CHF "#'##0.00;[Rouge]"CHF "#'##0.00 qui est en cause.

Comme vous le constatez, Excel est drôlement plus riche, et mieux fait qu'Access à ce niveau.

D'une manière générale, Excel est systématiquement mieux soigné qu'Access. Chez Microsoft, les ventes d'Excel sont incomparablement plus importantes que les ventes d'Access, ce qui explique cet état de fait qui suit une simple logique commerciale.

Nous n'allons pas en faire plus au niveau des formats personnalisés, mais si vous le désirez, consultez cette excellente page.

Nous avons appris à gérer le type de données Monétaire, et nous avons vu qu'il ne s'agit, en fait, que d'une sorte de numérique, mais avec une grande précision. Nous avons éclairci la confusion qui règne entre le type monétaire et le format monétaire.

Nous sommes allés dans le panneau de configuration pour changer l'aspect des types de données monétaires, et nous avons un peu joué avec les formats personnalisés, aidés par Excel.

Exercice

L'exercice consiste à créer une nouvelle base de données que vous nommerez ExerciceLecon007.accdb.

Vous y créerez une table T_Portefeuille, dans laquelle vous insérerez les champs suivants :

  • CodeClient (Texte, 4 caractères)
  • FortuneCHF (Monétaire)
  • FortuneEuro (Monétaire)
  • FortuneDollar (Monétaire)

L'affichage de la table devra ressembler à ceci :

Quizz
1. Définir un champ en type Monétaire est équivalent à définir son format en monétaire
Oui
Non

Warning: Undefined variable $Q1 in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/access/cours2010/lecon007/index.php on line 478

Deprecated: strspn(): Passing null to parameter #2 ($characters) of type string is deprecated in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/access/cours2010/lecon007/index.php on line 478

Warning: Undefined variable $Q1 in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/access/cours2010/lecon007/index.php on line 479

Deprecated: strspn(): Passing null to parameter #2 ($characters) of type string is deprecated in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/access/cours2010/lecon007/index.php on line 479
2. Quelle est le nombre de décimales maximales d'un format monétaire ? (En termes de précision, et pas de formatage)
2
3
4
5
ça va dépendre de la taille du nombre

Warning: Undefined variable $Q2 in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/access/cours2010/lecon007/index.php on line 503

Deprecated: strspn(): Passing null to parameter #2 ($characters) of type string is deprecated in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/access/cours2010/lecon007/index.php on line 503

Warning: Undefined variable $Q2 in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/access/cours2010/lecon007/index.php on line 504

Deprecated: strspn(): Passing null to parameter #2 ($characters) of type string is deprecated in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/access/cours2010/lecon007/index.php on line 504
3. Je voudrais afficher le nombre 1000 comme ceci :
£ 1 000.000
Quel format dois-je préciser ?

[£]Monétaire
"£ "# ##0.000
£#000
"£".[0-0-0]
"£ "0 000.###


Warning: Undefined variable $Q3 in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/access/cours2010/lecon007/index.php on line 539

Deprecated: strspn(): Passing null to parameter #2 ($characters) of type string is deprecated in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/access/cours2010/lecon007/index.php on line 539

Warning: Undefined variable $Q3 in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/access/cours2010/lecon007/index.php on line 540

Deprecated: strspn(): Passing null to parameter #2 ($characters) of type string is deprecated in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/access/cours2010/lecon007/index.php on line 540
4. Si une colonne est trop étroite pour contenir le nombre
CHF 123'456'789'123
Comment le nombre va-t-il s'afficher ?
Sur plusieurs lignes, comme ceci :
CHF
123'456.789.
123

Il va supprimer les décimales et le symbole monétaire :
123'456'789
Il va supprimer les séparations entre les groupes de 3 chiffres :
CHF123456789.123
Il ne montrera que la partie gauche du chiffre :
CHF 123'456
Il affichera
############
Rendant ainsi le nombre totalement illisible

Warning: Undefined variable $Q4 in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/access/cours2010/lecon007/index.php on line 577

Deprecated: strspn(): Passing null to parameter #2 ($characters) of type string is deprecated in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/access/cours2010/lecon007/index.php on line 577

Warning: Undefined variable $Q4 in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/access/cours2010/lecon007/index.php on line 578

Deprecated: strspn(): Passing null to parameter #2 ($characters) of type string is deprecated in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/access/cours2010/lecon007/index.php on line 578