![]()
Pour suivre cette leçon, vous devez avoir suivi les leçons précédentes. Ou plus précisément, vous devez être en possession de la base de données procd.mdb telle qu'elle était à la fin de la leçon précédente. Si vous n'êtes pas certain de l'avoir, vous pouvez la télécharger ici
| Lors de la leçon précédende, nous avons constaté que les champs textes se combinent avec les champs mémos, et qu'il fallait faires des choix judicieux dans les tailles de textes, ou les mémos car les mémos sont plus grands, mais ne permettent pas d'être triés. |
| Dans cette leçon, nous allons apprendre à utiliser le type de données Date/Heure. Les dates et les heures ont toujours été un casse-tête pour les informaticien et les machines : En effet : 60 minutes dans une heure, 24 heures dans un jour, 365 jours dans certaines années, 366 dans d'autres... Et je ne parle pas de l'heure d'été ! Alors, il n'y a pas le choix, il faut comprendre comment ces machines, et Access fonctionnent avec un système aussi compliqué... |
Exactement. Ouvrez comme d'habitude votre base de données procd si ce n'est
déjà fait, et allez dans la table T_Client. Ajoutez un champ DateNaissance, en
type Date-heure :
.
Vous avez inséré ce champ en dessous des autres. En fait, pourqu'on puisse
bien travailler dessus, ce serait pratique de déplacer ce champ vers le haut,
juste après le prénom, comme ceci :
.
Pour arriver à ce résultat, suivez très précisément les étapes suivantes :
, laissez le doigt appuyé sur la souris, et montez
vers le haut, jusqquà ce que vous voyez une ligne noire apparaître entre
Prenom et Taille :
. Lâchez la souris, et voilà : Le champs DateNaissance est
maintenant placé au bon endroit :
Lancez votre table en mode saisie de données.
Précisez la date de naissance de Bill Clunton :
. sauvegardez (Shift
Enter). Constatez que l'année est maintenant écrite sur 4 chiffres :
.
Ce problème ne provient pas d'Access. En fait, c'est selon la région du monde dans laquelle vous vous trouvez, les manières d'écrires les dates et les nombres sont différentes. En effet, les américains écrivent d'abord le mois, ensuite le jour, et enfin l'année. Certaines personnes écrivent l'année sur 2 chiffres, d'autres sur 4 chiffres, certains régions utilisent le Slash (/) pour séparer les dates... Les points à la place des virgules pour séparer les décimales des chiffres, etc.
Toutes ces options sont appelées des paramètres régionaux. Nous allons voir comment régler tout ça. Restez dans Access, mais nous allons faire une excursion.
Cliquez sur
,
,
.
Doublecliquez sur
(Ou paramètres régionaux, ça dépend des systèmes)
Cliquez sur l'onglet Date
. Dans la zone
Format de date courte,
, vous pouvez constater que le format est jj.MM.aa si vous avez
vu tout à l'heure l'année de Bill Clunton sur 2 chiffres même en ayant
sauvegardé. Si vous avez vu 4 chiffres, c'est que le format de la date est
jj.MM.aaaa :
.
Si ce réglage n'est pas dans Access lui-même, c'est que ça a une influence sur d'autres programmes : En fait tous les programmes qui utilisent des dates sont affectés par ces réglages. Notamment Excel.
Si vous voulez mieux voir comment ce changement affecte l'affichage Access, faites ceci :
Précisez le format de date courte en jj.MM.aa : ![]()
Revenez dans Access. Attention : Ne le lancez pas une 2ème fois ! Cliquez sur
l'icône de votre barre des tâches (La barre qui contient le bouton Démarrer) qui
devrait ressembler à ceci :
. Vous devriez constater qu'instantanément la date de
naissance de Bill Clunton est écrite comme ceci :
.
Rechangez ensuite le format de date courte comme suit (jj.MM.aaaa):
. Revenez dans
Access, et cette fois, immédiatement, Bill Clunton est né le :
.
Oui. Mais dans le cadre de ce cours, nous n'allons pas disséquer toutes les possibilités. Je vous laisserai expérimenter vous même les autres options.
Oui. Essayons. Dites que Robert Redforde est né le 29.2.44. Tout va bien. Dites maintenant que Michael Jordane est né le 29.2.63, et vous aurez ce message d'erreur :

dès que vous changerez de champ.
Non, c'est normal, Excel est beaucoup plus cool ! Avec Excel, tant que vous
écrivez des dates valides, il les aligne à droite dans la cellule. Par contre,
dès que vous écrivez une date invalide, il l'alignme à gauche. Il l'accepte,
mais il ne la reconnait pas comme date... : 
Mais bon... Vaut-il mieux un programme qui vous donne un message d'erreur si on entre une date invalide, ou un programme qui accepte n'importe quoi sans broncher ? On peut se poser la question.
Non, d'accord. Mais en fait, Excel le fait quand même. Vous ne vous en rendez pas compte, mais quand vous écrivez quelque chose dans une cellule Excel, il définit le type de données de la cellule en fonction de la valeur que vous avez rentré. Vous entrez du texte : Il dit que la cellule est en texte. Vous entrez une date : Il dit que la cellule est en Date.
Pour prouver ce que je dis, je vous propose une expérience amusante dans Excel :
Allez dans Excel, sur une nouvelle feuille, et écrivez 50 dans la cellule A1.
Appuyez sur Enter. Vous constatez que 50 est écrit dans la cellule A1. Bien
effacez cette valeur (Cliquez sur A1, et appuyez sur la touche DEL
). Il n'y a
plus rien d'écrit dans la cellule A1. Maintenant, toujours dans A1, écrivez ceci
: 16.3.1997, et appuyez sur ENTER pour valider. C'est bien la date 16.3.1997 qui
est écrite. OK, tout va toujours comme prévu. Effacez a nouveau cette date avec
la touche DEL
. La date disparait.
C'est maintenant que c'est intéressant. Malgré que vous ayez effacé le contenu de la cellule, Excel continue à "Garder en mémoire" que la cellule A1 est une date. Toujours dans A1, et réécrivez encore 50. Appuyez sur ENTER. SUrprise ! Ce n'est plus 50 qui est écrit, mais 19.02.1900. Pourquoi le 19 février 1900 ? Parce que c'est le 50ème jour depuis le 1er janvier 1900... Et oui... C'est bien comme ça qu'Excel (Et Access.. et tous les programmes qui utilisent des dates) se débrouillent pour les traiter : Ils comptent le nombre de jours depuis le premier janvier 1900...
Ah il faut le savoir... Il y a de quoi devenir fou si on ne connait pas cette astuce ! Par contre dans Access, si vous essayez d'entrer 50 dans une date de naissance, il ne va pas du tout vous le transformer en 19.02.1900. Il va simplement vous renvoyer ce message :

Et Oui... Personnellemenent je préfère Access qui fait plus le "Flic" qu'Excel qui laisse vraiment tout faire...
Je vous donne l'astuce pour pouvoir effacer le format d'un type de données sous Excel : Cliquez sur A1, et faites Edition/Effacer/Format. Voilà : Maintenant il écrit tout seul 50 dans la cellule.
C'est pourquoi à la fois les gens aiment bien Excel, mais se dirigent au bout d'un certain temps vers Access
Presque. Avec Excel 2000, vous êtes limité entre le 1.1.1900 et le 31.12.9999. Avec Excel 97, il me semble que la limite supérieure se situe dans les années 2100. Avec Access, vous pouvez entrer n'importe quelle date entre le 1.1.100 et le 31.12.9999.
Si vous essayez d'écrire 1.1.99, ce sera évidemment... 1.1.1999
Cette reconnaissance automatique s'appelle la date pivot. faisons un exemple.
Définissez la date de naissance de Bill Clunton à 1.1.30, et Robert Redforde à
31.12.29. Lorsque vous changez de champs ou que vous sauvegardez, vous obtenez
ce résultat :
. ça montre à partir de quelle année Access change de siècle
dans le cas ou on écrit l'année en 2 chiffres. C'est un peu déroutant, mais ce
n'est pas du tout une erreur, c'est s'implement une notion de "Pivot".
Alors, imaginez si en plus vous aviez défini
,
,
,
, onglet Date
,
- C'est à dire
l'affichage de l'année en 2 chiffres, et bien vous auriez obtenu l'affichage
suivant :
... Alors que 100 ans séparent les 2 dates !
Inutilie de dire que l'affichage de l'année sur 4 chiffres est plus que recommandée !
Il aurais simplement suffi d'écrire 31.12.1929 au lieu de 31.12.29. D'ailleurs, pour être sûr de votre coup à chaque fois, je vous conseille d'écrire systématiquement l'année en 4 chiffres.
Oui. Admettons que notre table T_Client soit en fait une liste de membres de l'association des couche-tôt. On pourrait installer un champ HeureCoucher qui va contenir l'heure de coucher de chaque membre. Nous allons essayer.
D'accord. ça se passe en 2 temps : Il faut d'abord créer une ligne vide :
Cliquez avec le bouton droit de la souris sur DateNaissance, et choisissez
"Insérer des lignes" 
Ajoutez ensuite à la bonne place HeureCoucher, défini en Date/Heure
. Lancez la table en mode saisie
de données. Précisez que Bill Clunton se couche à 21:30, et Robert Redforde se
couche à 22:15. Constatez qu'Access Affiche 21:30:00 et 22:15:00. Il nous
affiche les secondes même si on ne lui demande rien
.
Oui. Revenez en mode création, cliquez sur le champ HeureCoucher. Dans les
propriétés du champ, vous avez la propriété format. Cliquez dessus. Tout à
droite, vous avez une petite flèche. Cliquez dessus, et choisissez Heure/Abrégé

Retournez en mode saisie de données. Maintenant les heures de coucher sont
correctement écrites :
.
Par exemple, si vous avez une table de Rendez-vous, vous pouvez très bien
imaginer un champ ProchainRendez:Vous de données de type Date/Heure, format
DateGeneral. A titre d'exercice, essayez : Renommez le champ HeureCoucher en
DateProchainRendezVous, et définissez-le en Date/Heure, et Format : Date
General. Lancez la table en mode saisie de données. Vous avez toujours les 2
heures de coucher de Bill Clunton et Robert Redforde, mais pour Michael Jordane,
Ecrivez exactement ceci, sans les guillemets: "27.3.2001 15:45" (N'oubliez pas
l'espace entre 2001 et 15). Vous allez alors obtenir ce résultat :
.
Non. Mais ce n'est pas très logique non plus de mélanger des heures et des dates...
Alors, en fait, les options générales de Windows portent bien leur nom : Ce sont des options générales : C'est à dire que ce sont les options dont se servent les différents programmes tels qu'Access ou Excel pour afficher les dates ou les heures, ou même les nombres (Virgule ou point pour les décimales selon les pays par exemple). Mais justement, il peut arriver qu'on veuille, malgré le pays dans lequel on se trouve, CHANGER cette apparence, et afficher les données de façon différentes, pas pour tout le temps, mais seulement dans un certain contexte : Par exemple, dans notre table Access, tout à l'heure, pour HeureCoucher, nous avons trouvé un peu idiot d'indiquer les secondes ! Mais ici seulement ! Pas tout le temps ! Alors, on ne change pas les options régionales de Windows, mais seulement l'option du champ.
Petite astuce amusante :
Connaissez-vous le nom du jour ou vous êtes né ? Un lundi, un mardi, un
Dimanche ? Pour le savoir, c'est très simple : Il vous suffit simplement d'avoir
un champ Date/Heure que vous définissez en format Date Complet. Pour tester ça,
utilisez le champ DateNaissance que vous avez déjà dans votre table. Ecrivez
votre propre date de naissance sur n'importe quel client (Moi, je suis né le
21.2.1965) :
. Changez de
champ, et voilà :
... Oups ! Ma colonne n'est pas assez large pour tout voir. Vous
pouvez l'élargir comme dans Excel, en cliquant entre 2 colonnes et en tirant
vers la droite :
. Et voilà : Je suis né un dimanche !
|
Contrairement à Excel, qui s'accomode des dates sans broncher, mais qui vous réserve certaines mauvaises surprises, Access va vous obliger à être une fois de plus strict dans la féfinition de vos champs. Un seul type de données est utilisé : Date/Heure. Dans un champ Date/Heure, on peut stocker des Jours, mois et années ainsi que des heures, minutes et secondes. Les Applications sont très larges : Dates de commande, date de livraison, date de naissance, de décès, jour et jeure de rendez-vous, temps de parcours, minutage de marathons... Vous pouvez mettre n'importe quoi dans les limites du premier janvier 100 à minuit jusqu'au 31 décembre 9999 à 23 heures 59 minutes 59 secondes. Le format d'affichage des dates et des heures peut se définir globalement grâce aux options générales du panneau de configuration, ou de manière locale avec la propriété Format. |
Pour voir les solutions, il vous suffit de sélectionner le questionnaire ci-dessus : 3 petites étoiles *** apparaîtront en face des bonnes réponses. |
|
Nous allons parler de sport et de sportifs. Plus précisément de marathoniens (j'ai pris les marathoniens pour que nous n'ayons pas à nous soucier des fractions de secondes). Vous allez créer une base de données marathon.mdb, dans laquelle vous allez créer une table T_Marathonien, dans laquelle vous aurez les inforrmations suivantes :
Pour vous aider, voici 2 exemple des données :
Si vous avez des champs texte, ne vous occupez pas de leur longueur, ainsi que des légendes et des Valide Si. Je suppose que ces notions ont été bien acquises aux leçons précédentes. |
Si vous n'êtes pas tout à fait certain d'avoir suivi correctement toutes les étapes de cette leçon, vous avez la possibilité de télécharger ici la version de procd.mdb exactement dans l'état ou elle devrait être à la fin de cette leçon.