D’Excel à Access et retour

Un exemple


 
Les données présentées ici sont issues des travaux de Séverine Sofio, que nous remercions grandement – d’autant que ces données datent d’il y a longtemps : depuis, elle maîtrise ces logiciels et bien d’autres !

Les deux types d’individus concernés sont des peintres et des tableaux.

Données d’origine

Image1

Proposition de recodage en deux bases de données

Ces propositions suivent autant que possible les conseils proposés dans nos « Dix Commandements de la saisie » (voir le « Repères » !).

Image2

Image3

Résultat possible

Si on veut mettre ensemble, à un moment ou un autre, toutes ces informations, on peut obtenir quelque chose comme ça.

Image4

Un mode d’emploi pour débutants

Le problème

On dispose d’une part de données sur des tableaux (sujet, support…), d’autre part de données sur des peintres (domicile, statut matrimonial…). Chaque peintre a en général peint plusieurs tableaux. Or on voudrait à terme croiser les données provenant de la base « tableaux » et celles de la base « peintre ». Par exemple : est-ce que les femmes mariées peignent plus de sujets historiques… ou tout simplement, on voudrait, pour chaque peintre, synthétiser de façon chiffrée la répartition de ses tableaux par type de sujet et de support.

Dans les données d’origine, le codage privilégie les peintres (une ligne par peintre) : du coup, plusieurs tableaux sont mentionnés dans la même case, par leurs numéros, titres, sujets etc. (colonnes « œuvres » et « G », pour genre). De ce fait, on ne peut pas automatiser les comptages concernant sujets, supports, etc., qui doivent être faits à la main. C’est envisageable sur 10 peintres mais pas sur 100 !

Comment peut-on alors améliorer à la fois le codage et, par la suite, le comptage ?

D’abord, créer un tableau par type d’individu statistique

Ici, on a deux types d’individus statistiques : les peintres et les tableaux. Pourquoi ? Parce que d’une part certaines caractéristiques qui nous intéressent s’appliquent aux peintres et certaines autres aux tableaux ; d’autre part, chaque peintre a fait plusieurs tableaux (si on avait un seul tableau par peintre, on pourrait s’en tenir à une seule ligne pour tous les renseignements correspondants).

Donc, au stade où on rentre les données, mieux vaut le faire dans deux tableaux différents (par exemple deux feuilles d’un même classeur Excel), un pour les peintres et un pour les tableaux. Remarquez qu’en plus de séparer les données sur les peintres de celles sur les œuvres, on a attribué un numéro unique à chaque peintre (« idp ») et un à chaque œuvre (« ido ») : c’est important pour la suite de la manœuvre. Du coup, chaque tableau a un « ido » unique et correspond à un « idp » (numéro de son peintre), qu’il partage éventuellement avec les autres œuvres du même peintre. Remarquez en outre qu’on a appliqué les bons principes de séparation maximale de l’information aux noms et aux adresses, pour faciliter les tris.

Ensuite, si on veut regrouper les données, il faut passer par un logiciel de type Access

Tout cela est bien joli, mais si maintenant je veux chercher les thèmes des œuvres des célibataires, comment faire, puisque les thèmes sont dans le tableau « œuvres » et le statut matrimonial (potentiellement) dans le tableau « peintres » ?

En fait, mes deux tableaux sont « liés » implicitement par la mise en correspondance des « ido » et des « idp » : elles indiquent quelle peintre correspond à quels tableaux.

À partir de là, Access (ou logiciel similaire) sait fabriquer un nouveau tableau, avec une ligne par oeuvre, mais reprenant toutes les caractéristiques de sa peintre en même temps (cf. « résultat possible » ci-dessus). Vous me direz qu’on peut faire ça avec un copier-coller dans Excel, mais ce n’est vrai que si on a peu de données…

Seul ce tableau permet de faire des « tableaux croisés dynamiques » variés très simplement (nombre d’œuvres de tel genre pour chaque peintre, etc.).

Comment faire, concrètement, avec Access

Soit on apprend vraiment à s’en servir (cela peut être utile !), soit, si on ne veut pas faire cet investissement on s’en sert seulement pour lier des feuilles de calcul Excel et obtenir une feuille de synthèse, comme je le propose ici. C’est pénible la première fois, mais ça devient vite machinal.

  • Ouvrir Access

  • Créer une nouvelle base de données (fichier> nouveau ou créer une base vide dans la colonne de droite, selon versions), lui donner un nom.

  • Faire fichier>données externes> importer, signaler qu’on veut un fichier Excel et dire où il est.

  • Importer la première feuille (ici les peintres) : il faut importer feuille par feuille. Dire que les premières lignes contiennent bien les en-têtes et qu’on veut stocker les données dans une nouvelle table. Ne pas se préoccuper des « options des champs » ni des « clés primaires » (Access met automatiquement un numéro unique mais vous en avez déjà un : vous pouvez le laisser rajouter ou choisir le vôtre, peu importe pour ce qu’on va faire).

  • Faire exactement la même chose pour la deuxième feuille Excel (ici les œuvres).

  • Dire à Access que les deux « tables » créées sont liées : menu Outils>Relations. Une boîte de dialogue « Afficher » s’ouvre. Cliquer successivement sur les deux tables puis sur « ajouter ». Si tout va bien, s’affichent les listes de « champs » (colonnes) des deux tables. Il faut maintenant signaler à Access que le « idp » de la table des peintres est identique au « idp » de la table des œuvres (c’est le cœur de la manœuvre). Pour cela, cliquer sur le « idp » de la table des peintres, garder le doigt appuyé, glisser jusqu’au « idp » de la table des œuvres, lâcher le doigt. Si tout va bien, une liaison symbolisée par un trait se crée d’un champ à l’autre. Pour cela, vous avez juste à cliquer sur « Créer » dans la boîte de dialogue. Vous pouvez maintenant fermer la fenêtre « Relations » en disant d’enregistrer la nouvelle relation.

  • Obtenir en Access la table joignant les deux précédentes : faire Insertion>Requête. Choisir « Assistant requête simple ». Faire passer de la colonne de gauche à la colonne de droite, à l’aide des flèches, tous les champs de la table peintre, puis tous les champs de la table œuvres. Choisir une requête détaillée. S’affiche alors sous le nom de « Requête quelque chose » la table finale que l’on recherchait (sauf qu’il y a sans doute plusieurs fois la colonne « idp » dedans : il suffira d’en enlever une).

  • Repasser illico en Excel : lorsque la table résultant de la requête est ouverte, faire Fichier>Exporter, choisir le format Excel, créer un fichier Excel avec le résultat (qu’on peut recopier ensuite en tant que feuille dans un autre classeur Excel, si on préfère).

Et si certains tableaux sont anonymes ? Dans cette manip, ils disparaissent de la base. Pour y remédier, au lieu de cliquer sur « Créer » directement, on va alors explorer le bouton « Type de jointure… » dans cette boîte de dialogue et dire qu’on veut tous les enregistrement de la table « œuvres », même ceux qui n’ont pas de correspondance dans la table « peintres ».

Et si non seulement les peintres ont plusieurs tableaux, mais certains tableaux ont plusieurs peintres ? (c’est rare en peinture, d’accord, mais le problème se pose pour d’autres types de données). Il faut alors légèrement modifier la manip. Je vous laisse chercher...