Il est de bon ton de se souhaiter la bonne année. Mais vous, et vous seul, pourrez faire en sorte que cette année soit bonne, meilleure que celle qui vient de s'écouler. Apprenez à ne compter que sur vous, car personne n'est plus qualifié que vous-même pour bâtir, réparer ou améliorer votre propre vie. Personne ne fera les choses à votre place. D'ailleurs, tout ce que les autres peuvent faire, c'est souhaiter que vous le fassiez. Et ne croyez pas que tout ceux qui vous entourent vous apporteront des solutions : certains font juste partie de vos problèmes. Transformez vos résolutions en actes, et dans douze mois, retournez-vous et souriez-vous fièrement : C'était long. C'était difficile. Mais ça y est : 2017 était une bonne année, merci Moi.

Leçon 4
 
Champs texte et mémo, mise en forme de tables

Dans cette leçon, nous allons étudier deux types de données : texte (le type par défaut), et Mémo.

Nous allons voir que ces deux types de données sont complémentaires, et s'utilisent différemment.

Nous allons également voir comment mettre en forme une table (Polices, couleurs, gras, italique, etc.)

 
Sommaire

Ouvrez Formagiciel.accdb, et ouvrez T_Client en mode Création.

Le type de données Texte

Jusque là, nous avons utilisé des champs de type texte : . C'est le type de champ utilisé par défaut. Nous verrons un peu plus tard les autres types de champs.

 

Dans un champ de type texte, on peut stocker ce qu'on veut : des chiffres, des lettres et des caractères spéciaux tels que &, %, ç, (, =? etc. Mais on ne peut pas dépasser 255 caractères !

Plus exactement, on ne peut pas dépasser le nombre de caractères précisé dans les propriétés des champs.

Dans cet exemple, j'ai cliqué sur VilleHabitation, afin d'avoir ses propriétés de champs, en dessous :

N'oubliez pas de sélectionner le champ qu'on veut avant d'aller changer ses propriétés ! On a tendance à oublier !

Ca veut dire qu'on peut indiquer une valeur maximale moindre que 255 caractères.

Taille des champs et performance

Quel est l'intérêt, me direz-vous ? Autant disposer d'un maximum de place !

L'intérêt, c'est de ne pas gaspiller de place, justement.

Dans notre cas, nous mettons des noms de ville dans ce champ... Imaginons un nom de ville particulièrement long : Llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch (Je n'invente rien ! C'est le nom d'une ville du Pays de Galles !), elle ne fait "que" 58 lettres. Nous sommes loin des 255 caractères possibles ! Ainsi, si nous mettons des villes d'une dizaines de lettres en moyenne, nous "inutilisons" 245 caractères par enregistrement.

Vous allez me dire que sur un disque dur de 300 Go, c'est du pipi de minet ! Oui, mais... Lorsque vous avez des milliers de clients, ça commence à faire de la place, et si votre base de données se trouve sur un lecteur de réseau, c'est autant de données vides et inutiles à trimballer !

Autrement, la restriction du nombre de caractères peut être utile pour assurer l'intégrité des données... Je m'explique : si vous avez un champ Matricule qui contient systématiquement 4 caractères, ni plus ni moins, le fait de réduire le nombre de caractères à 4 permet d'assurer que personne ne pourra mettre un caractère en trop (en trop peu, oui, mais en trop, non).

Que se passe-t-il si nous réduisons exagérément un champ texte qui contient déjà des données ? Essayez : réduisez le nombre de caractères maximum de VilleHabitation à 4.

Lancez la table en mode saisie de données. Après l'habituel message "La table doit être enregistrée", vous avez un autre message :

Une fois que vous avez répondu Oui, vous vous retrouvez avec des villes systématiquement tronquées à 4 caractères (Si certaines villes avaient eu moins de 4 caractères, elles n'auraient pas changé).

Impossible d'ajouter des caractères... C'est bloqué de chez bloqué !

Et impossible d'annuler, bien sûr !

Que se passe-t-il si on remet 20 caractères maximum ? Pensez-vous qu'on va récupérer nos précieuses données ? Essayez !

Eh non ! Nous avons toujours Genè, Laus, Neuc et Laus... Par contre, maintenant, on peut re-compléter à la main les villes manquantes !

Allez-y, remettez les villes complètes ! Eh non, on n'a pas fait de backup de la table, c'est ballot, hein ?

Là, ça va ! On a juste 4 misérables villes à réécrire... Imaginez qu'on ait fait la même opération avec une table composée de trois cent mille enregistrements : vous comprenez l'utilité des backups.

Le type de champ Mémo

Et si on a besoin de plus de 255 caractères pour un champ ?

Par exemple, imaginons un champ Remarque, qui pourrait contenir, disons pour Michael Jackson :

"Surnommé The King of Pop, il a battu nombre de records de l'industrie du disque. Au total, ses ventes s'élèvent à environ 1 milliard d'exemplaires, ce qui le classe parmi les trois plus gros vendeurs de disques de tous les temps, avec les Beatles et Elvis Presley"

                   (263 caractères).

Dans ce cas, nous ne devons plus utiliser le type de champ Texte, mais Mémo :

Un champ Mémo peut contenir 65'535 caractères (ça va aller, là !)

Je vous proposer de copier-coller le texte ci-dessus sur Michael Jackson (Surnommé the king of pop, etc.) dans sa remarque maintenant définie en Mémo.

 

  1. Sélectionnez le texte avec votre souris, directement dans le navigateur internet (ne copiez pas les "guillemets")
  2. Appuyez sur pour copier
  3. Allez dans votre table en mode saisie de données, cliquez sur la remarque de Michael Jackson, et appuyez sur pour coller le texte.

Taille des lignes et des colonnes

On constate que la cellule qui contient le champ est trop petite en largeur et en hauteur. Vous savez déjà comment faire pour élargir la colonne. Ca ne sert à rien de double-cliquer sur cette double flèche, ça ne ferait qu'élargir le champ sur toute la largeur de l'écran, et il serait de toute façon encore trop étroit.

Elargissez juste un peu la remarque, en glissant la double-flèche à la main vers la droite.

 

 

Pour agrandir la ligne en hauteur, c'est pareil, dans l'autre sens.

Constatez qu'il est possible de redimensionner les colonnes différemment les unes des autres. par contre, pas les lignes !

 

Elargir une ligne signifie : élargir toutes les lignes (Contrairement à Excel, qui, lui, permet le redimensionnement individuel des colonnes et des lignes).

Saut de ligne dans un champ Mémo

Vous avez la possibilité, dans un champ de type Mémo, de forcer le retour à la ligne. Par exemple, on voudrait que "Au total ses ventes s'élèvent..."  commence en début de ligne : Cliquez juste à gauche du "A" de "Au total", et appuyez sur CTRL ENTER.

N'utilisez pas le type Mémo à tort et à travers.

C'est un type de champ qui prend de la place. Mais relativisez : ça ne devient important qu'à partir de milliers de données, stockées sur un serveur, accédé par beaucoup d'utilisateurs à la fois, on n'en n'est pas là.

Tri des champs Mémos

De plus, un champ Mémo ne peux pas être trié dans une table. Pour trier un champ, c'est simple, ça se passe dans l'en-tête de colonne. Voici comment trier la table par ordre alphabétique de NomClient.

Si vous essayez de trier le champ Remarque, les options de tri sont grisées (inaccessibles) :

Par contre, dans les requêtes, nous pourrons trier les champs Mémo (nous verrons ça quand nous attaquerons les requêtes). Pourquoi pas dans les tables ? Je n'en sais rien !

Ceci dit, un champ Mémo est un champ généralement utilisé pour une description "verbeuse". Il n'y a généralement aucun intérêt à trier sur ce type de champ.

Nous reviendrons sur ces tris et filtres un peu plus tard.

Mise en forme esthétique de la table

Revenons à nos moutons : réduisez la taille des lignes pour retrouver un aspect "normal" à notre table.

Peut-on colorer une partie du texte ? Que se passe-t-il si je veux mettre The king of pop en gras et en rouge ?

 

Essayez : Sélectionnez en noir The king of pop, et mettez le en gras comme ceci :

 

Ah ... Ca n'a pas marché du tout ! Il a tout mis en gras, y compris les titres des champs !

Excel permet, lui, dans ses tableaux, d'avoir toutes les mises en forme possible. C'est ainsi... D'une manière globale, si on veut vraiment parler niveau "finition", on observera toujours un temps d'avance sur Excel par rapport à Access (ça doit être notamment dû au fait qu'Excel est largement plus utilisé qu'Access).

 

 

C'est parce que nous sommes dans une table. Une table est étudiée pour stocker les données, et pas pour les mettre en forme. par contre, dans les formulaires et les états, nous ferons absolument tout ce qu'on veut au niveau de la mise en forme.

Ainsi, vous pouvez vous amuser à mettre en forme les caractères de votre table avec les différentes options de mise en forme. Essayez ceci :

Soyez attentifs à quelques bizarreries !

  • Le souligné, le style de police Comic Sans MS et la taille 12 ont été correctement appliqués à tout (Noms de champs et données)
  • La couleur rouge ne s'est appliquée au'aux données (pourquoi ? je ne sais pas !)
  • Comme j'étais dans la colonne VilleHabitation lorsque j'ai effectué mes mises en forme, l'alignement à droite ne s'est appliquée qu'à cette colonne, et même pas au titre VilleHabitation (Allez comprendre !)
Si vous voulez revenir en affichage "Normal" (vous débarasser de cette mise en forme), vous pouvez fermer la table, et à la question, répondez Non, et rouvrez votre table.

 

 

En bref : ne vous amusez pas à faire trop de fioritures avec ces tables ! ça ne fonctionne pas toujours comme on l'espèrerait.

Couleurs de fond alternées

Puisque nous en sommes dans les couleurs, jetons un oeil aux couleurs de fond !

Vous avez la possibilité de changer la couleur de fond de votre table en mode saisie de données (pas en mode création, mais bon, y aurait-il un grand intérêt à modifier les couleurs et les polices de la création des champs ?).

Avant de vous lancer dans ce coloriage, ajoutez 2 clients :

Mettez la couleur de fond en violet.

Vous constatez que toute votre table est en violet, et même les "fausses colonnes supplémentaires" à droite et les "fausses lignes supplémentaires" en bas :

Ce qui n'est pas en violet :

  • Une ligne sur deux, qui est en beige
  • La ligne sur laquelle on se trouve (Spielberg Steven), qui est en bleu
  • Le champ sur lequel on se trouve (Lausanne) n'est pas bleu mais est soit beige, soit violet selon sur quelle ligne on se trouve.
  • Les noms des champs en titre de colonne, qui restent en gris, sauf la colonne sur laquelle on est qui est en orange
  • Les petits carrés gris sur le côté gauche, sauf le petit carré de Steven Spielberg qui est en orange.

 

Cette ligne sur deux qui n'est pas en violet est la couleur alternative (permettant une lecture plus aisée).

Choisissez du vert comme couleur de ligne alternative.

Je suis sur Patrick Bruel, une ligne censément être Vert tendre, mais comme c'est la ligne dans la quelle je me trouve, le vert est un peu plus "soutenu", sauf Fribourg, car je suis dedans.

Si vous ne désirez pas de couleur de fond alternative, il vous suffit de choisir "Aucune couleur" (faites-le)

 

Quadrillage

Et enfin, nous avons le quadrillage.

Vous pouvez choisir de l'afficher ou pas, ou seulement les lignes ou seulement les colonnes. Essayons de n'afficher que les lignes :

Comme vous le voyez, il n'y a alors que des lignes horizontales qui séparent les enregistrements, mais il n'y a pas de lignes verticales pour marquer les colonnes.

On ne peut pas choisir la couleur ni l'épaisseur du quadrillage (pourquoi ? Je ne sais pas ! ... Ca paraîtrait pourtant logique.).

Bien. Affichez le quadrillage horizontal et vertical.

Mise en forme enrichie des champs Mémo

Toutes ces considérations colorées nous ont emmené bien loin de notre champ Remarque. Je vous rappelle qu'à la base, nous voulions tout innocemment mettre King Of Pop en gras et en rouge.

Bonne nouvelle ! Ca va être possible !

Ca se passe dans les propriétés du champ, en bas de l'écran. Nous avons déjà regardé cette liste lorsque nous avons modifié les tailles de champ texte. Je vous ai dit que pour le Mémo, par contre, on ne précise pas le nombre de caractères. Du coup, selon le type de champ, nous n'avons pas les mêmes propriétés !

Si vous cliquez dans VilleHabitation, comme c'est un champ de type texte, vous voyez sa propriété Taille du champ : 20.

Par contre, si vous cliquez sur Remarque, qui est un champ de type Mémo, cette propriété n'a plus de raison d'être.

Ainsi, vous avez des propriétés communes, comme Format, ou Légende, et d'autres, qui n'existent que dans le cadre de tel ou tel type de champ : La propriété Masque de saisie n'existe que pour le texte, tandis que Format du texte n'existe que pour les champs Mémo. Nous n'avons pas encore étudié ces propriétés Format, Masque de saisie ou Légende, ça viendra.

Lisez bien le texte sur la droite : il vous informe que si vous désirez partager cette base de données avec Access 2003 ou antérieur, il ne faut pas choisir cette option. Qu'est ce que ça peut vous faire ? Vous ne comptez pas utiliser Access 2003, si ? ... Disons que si vous désirez ensuite partager votre base de données sur votre réseau d'entreprise, et que certaines personnes qui vont y accéder ont Access 2003 sur leur poste de travail, il va y avoir un souci, tout simplement parce que cette fonctionnalité de texte enrichi n'a été implémentée qu'à partir de la version 2007, du coup, Access 2003 ne saurait pas comment gérer cette mise en forme.

 

 

 

 

 

 

C'est la propriété Format du texte qui nous intéresse. Actuellement, elle est définie sur Texte brut. ça veut dire qu'il n'est pas possible de mettre le texte en forme (gras, italique, taille, couleur, ...).

Choisissez Texte enrichi (ça veut dire : Texte qu'on peut enrichir de gras, italique, couleurs, etc.).

HTML

Access vous prévient de ce qu'il va faire. Répondez Oui :

Et maintenant, comme tout à l'heure :

Sélectionnez en noir The king of pop, et mettez le en gras comme ceci :

Ca maaaaaaaaaaarche !!!

Mettez le aussi en rouge :

Ce champ a été converti en HTML. Mais qu'est-ce que ce HTML ? En gros, C'est le langage de mise en forme utilisé dans toutes les pages web que vous voyez. Par exemple, cette page que vous êtes en train de lire (oui, oui cette leçon 4), c'est grâce à HTML que j'arrive à mettre du texte en gras, en couleur , aligner les images, etc.

Pour vous en convaincre, vous pouvez afficher le code source de cette page web. Pour afficher le code source (code HTML), chaque navigateur a sa commande spécifique. J'utilise le navigateur Google Chrome (voir schéma à gauche - Je vous laisse chercher sur votre navigateur la commande équivalente si le coeur vous en dit)

Et voici donc un extrait du code HTML de cette page Web :

Comme vous le constatez, ce code HTML est bien caché. On ne le débusque que lorsqu'on le cherche vraiment. Mais il est omniprésent dans notre vie sur internet, et, dans notre cas, c'est du code HTML qui se cache derrière notre champ Mémo.

Ce que vous voyez :

Surnommé The King of Pop , il a battu (tout le reste du texte)...

ce qui est stocké, en réalité, bien caché dans la base de données :

<div>Surnommé <font color=red><strong>The King of Pop</strong></font>, il a battu (tout le reste du texte)...</div>

Vous pourriez me dire : "Je m'en fiche un peu de ce code HTML... Du moment que ça marche, peu m'importe ce qu'il se passe en coulisses !"

Oui mais, dans certains cas tout à fait particuliers, vous pouvez voir resurgir ce code (en cas de programmation par exemple, mais nous n'en sommes pas là)

Ou alors dans une requête. Nous n'avons pas encore vu les requêtes, ce sont des filtres, mais juste pour vous dire : Si vous cherchez les enregistrements qui contiennent le texte : "Surnommé The King", il risque de ne pas vous le trouver, car, pour Access il aurait fallu chercher : "Surnommé <font color=red><strong>The King".

En bref, soyez prudent avec ces champs mémos mis en forme, et ne les utilisez que quand vous en avez réellement besoin, pas juste "parce que c'est la mode".

Historique des changements dans les mémos

Pour en terminer avec ces champs mémos, ils ont la possibilité d'historiser leurs changements !

 

Une petite démo vaut mieux qu'un long discours :

Allez dans T_Client en mode Création, Allez dans la toute dernière propriété du champ remarque (utilisez l'ascenseur vertical pour la voir), et choisissez Oui dans la liste déroulante de la propriété Ajouter uniquement (Je trouve cette appellation bizarre ! Personnellement, j'aurais mieux compris "Historiser les changements", mais bon...)

 

 

 

Ensuite, lancez la table en mode saisie de données.

  1. Mettez une remarque dans Charlie Chaplin : (D'accord, il n'a pas quitté la Suisse en 2010, mais bon, on n'a qu'à dire que c'était un autre Charlie Chaplin)
  2. Enregistrez cette remarque (par exemple avec CTRL-S)
  3. Modifiez la remarque comme suit :
  4. Enregistrez cette remarque (par exemple en cliquant sur la disquette)
  5. Mettez du stabilo jaune sur Suisse, grâce à cette icône :
  6. Enregistrez ce changement jaune (par exemple en cliquant sur un autre enregistrement)
  7. Remplacez 2010 par 2009
  8. Enregistrez cette modification (par exemple avec SHIFT-ENTER)

Maintenant, cliquez avec le bouton droit de votre souris sur ce champ remarque, et choisissez
Afficher l'historique des colonnes :

(Cette option n'existe que par le fait qu'on a mis la propriété Ajouter uniquement à Oui)

La boîte de dialogue suivante s'affiche :

Il y a eu 4 modifications, avec la date, l'heure, et la modif en question : La première modification à eu lieu le 30 décembre 2011, à minuit quarante-sept et vingt-quatre secondes (oui, j'ai travaillé tard pour mettre au point cette leçon, mais quand on aime, on ne compte pas). En fait, c'est la première saisie :

30.12.2011 00:47:24 Saisie initiale : A quitté la Suisse en 2010
30.12.2011 00:47:33 Modification : on a ajouté Est revenu en 2011
30.12.2011 00:47:41

Cette modification semble montrer qu'on a rien changé.

En fait, c'est quand on a mis le jaune sur Suisse. Les modifications esthétiques ne sont donc pas journalisées, et peuvent même donner l'impression d'une erreur. Plus exactement, les modifications étant incluses dans le HTML, elles ne sont pas visible dans ce message.

30.12.2011 00:48:53 Dernière modif en date : il faut être attentif pour voir que c'est juste 2010 qui a été changé en 2009

Et voilà ! C'est donc une fonctionnalité bien sympathique qui permet de savoir ce qui s'est passé dans un champ au fur et à mesure du temps qui passe.

Par contre, cette propriété ne s'applique que aux champs mémos, et qui ont la propriété Ajouter Uniquement à Oui. ça n'existait pas du temps d'Access 2003. Une autre limitation est qu'on ne sait pas qui a fait la modification ! Bon, oui, c'est vous, d'accord, mais si votre base de données est destinée à être utilisée en réseau, vous saurez quand on a modifié quoi, mais pas par qui.

Même si vous fermez et rouvrez Access, vous pourrez revoir tout l'historique de vos modifications (ça ne s'efface pas)

Personnellement, je trouve cette option bien pratique, mais fort dommage qu'elle n'existe que pour les champs Mémo... c'est comme ça !

Dans cette leçon, nous avons vu les différences entre le type Texte (prévu pour les saisies plutôt courtes), et Mémo (pour les longs textes). Nous avons constaté que le type Texte est moins gourmand en mémoire, et se laisse trier. Le type mémo, par contre, permet la mise en forme des caractères et l'historisation des saisies (si on lui demande). Nous avons également vu qu'il est possible de mettre la table en forme en  mode Saisie de données, mais que cette mise en forme est limitée.

Exercice

L'exercice consiste à créer une base de données ExerciceLecon004.accdb. Créez-y une table T_ArticleJournal, avec les deux champs suivants :

  • Titre  (Texte, 50 caractères)
  • Contenu (Mémo)

Installez-y les données suivantes :

Titre : Tempête Andréa

Contenu : Météosuisse lance mercredi un avertissement de degré 3: une violente tempête nommée Andrea frappera la Suisse jeudi matin. L'institut de prévision météo précise toutefois que la perturbation sera moins forte que la tempête Joachim, passée le 16 décembre dernier sur la Suisse.

Titre : Volcan réveillé

Contenu : Il s'appelle Laacher See, il dort sous les eaux du lac du même nom entre Bonn et Coblence et menace de se réveiller. Si c'est le cas, son éruption pourrait faire autant de dégâts que le Pinatubo aux Philippines en 1991.

Titre : demi-tour à cause d'un portable

Contenu : Un appareil d'Air France reliant Houston à Paris a été contraint à un demi-tour. En cause: la découverte d'un téléphone portable dont le propriétaire n'a pu être identifié à bord.

Titre : Elle agresse les passants

Contenu : Lundi, une femme habillée en noir, armée d'un couteau de cuisine et souffrant de troubles psychiatriques a agressé deux passantes pour leur prendre de l'argent.

La table, en mode saisie de données, doit ressembler à peu près à ceci :

Quizz
1. Dans un champ de type Texte, on peut stocker :
Des lettres et des espaces
Des lettres, des chiffres et des espaces
Des lettres et des chiffres, mais pas d'espaces
Des lettres, des chiffres, des espaces et tous les autres caractères spéciaux (%, &, ç, !, ?, Etc.)
2. La taille maximum d'un champ de type texte est
21 caractères
255 Caractères
65'535 Caractères
Il n'y a pas de limite
3. La taille maximum d'un champ de type mémo est
21 caractères
255 caractères
65'535 caractères
Il n'y a pas de limite
4. J'écris un long texte dans un champ mémo. Au milieu du texte, je veux insérer une nouvelle ligne (un retour-chariot). Comment puis-je faire ?
J'appuie sur ENTER
J'appuie sur CTRL-ENTER
Je clique sur le bouton droit de la souris, et je choisis "Insérer Nelle Lig dans champ"
On ne peut pas insérer de ligne dans un champ mémo
On ne peut insérer de ligne dans aucun type de champ
5. Dans ma table en mode saisie de donnée, puis-je afficher mes lignes en couleur de fond différentes ?
Oui : je peux afficher une ligne d'une certaine couleur de fond, et la ligne suivante d'une autre couleur, alternativement
Oui : je peux même avoir jusqu'à quatre couleurs de fond alternativement
Non : je peux avoir des lignes de différentes couleurs de fond seulement en mode création
Non
6. J'ai un champ de type texte. Je compte y écrire de longues phrases, et je voudrais mettre certains mots en bleu, que dois-je faire avant tout ?
Je met sa propriété Format du texte à Texte enrichi
Je le transforme en type Mémo
Je précise que sa taille doit être égale à 65'535 caractères
7. J'ai un champ CasierJudiciaire, de type Mémo, qui va être appelé à être régulièrement mis à jour, et je voudrais savoir ce qui était précédemment écrit dans ce champ au fur et à mesure que je le complète au fil du temps, que dois-je faire ?
Commencer par le transformer en type Texte
Mettre sa propriété Ajouter Uniquement à Oui
Mettre sa propriété Ajouter Uniquement à Non
Mettre sa propriété Historiser à A chaque modification