Toute l'actualité de [self-access.com] en direct sur votre ordinateur !  Vous êtes ici : Accueil » Access » Assistants » Assistant EspacesConnexion
 


Une histoire d'atomes

Normalement, quand on construit une table dans une base de données, il y a un ensemble de règles techniques à respecter. L'une d'elles dit que les champs doivent être "atomiques", c'est-à-dire qu'ils ne doivent représenter  qu'une seule information simple.

Par exemple :

  • "Hervé" est une information atomique ;
  • "Inisan" est une information atomique ;
  • "Hervé Inisan" n'est pas une information atomique.

Imaginons que vous n'ayez pas respecté cette règle : vous avez créé un champ Nom dans lequel on peut taper le nom et le prénom. Et vous vous rendez compte que c'est ingérable, parce que les opérateurs de saisie n'ont aucune contrainte, que les tris sont faussés...

Les habitués se disent déjà : en utilisant les fonctions de chaînes (InStr, Left et Mid), couplées à une requête Mise à jour, on va régler ce problème en deux temps trois mouvements. Il suffit de trouver un espace entre le nom et le prénom, et hop, on coupe en deux !

Sur le principe, c'est bien ce qu'on va faire... Mais la réalité fait que vous allez peut-être hériter d'une table comme celle-ci :

Là, les utilisateurs se sont bien lâchés Smiley, en profitant du défaut de construction. On peut traiter certains cas en automatique, mais vous devrez quand même faire quelques pointages manuels : il y a trop de cas particuliers !

Installer l'Assistant

Si vous n'avez que quelques exceptions, passez votre chemin et retraitez les manuellement ! Mais si vous en avez une bonne liste, l'Assistant de l'Espace (ou Space Jam Smiley) devrait vous dépanner.

  1. Téléchargez le fichier wzSpaceJam2003.zip (pour Access 2003 ; 40 Ko) ou wzSpaceJam2007.zip (pour Access 2007 ; 40 Ko).
  2. Décompactez-le sur votre disque dur.
  3. Installez l'Assistant "Space Jam" dans Access (voir la fiche Installation d'un Assistant pour plus de détails).

Info
L'Assistant devrait fonctionner également sur Access 2002, même si je ne l'ai pas testé. Le code utilisé est en principe compatible. Par contre, certaines portions ne sont strictement pas compatibles avec Access 2000 et 97.

Préparation de la table

Space Jam ne fait aucune modification de structure sur vos tables. Comme vous allez découper un champ en 2, et répartir son contenu dans 2 autres champs, c'est à vous de préparer ces 2 champs destination :

  1. Ouvrez la table en mode Création.
  2. Créez 2 champs de type Texte, de taille appropriée. Nommez ces champs comme vous le voulez.
  3. Enregistrez la table.

Space Jam : l'Assistant de l'Espace

  1. Dans Access, ouvrez la base de données à retraiter.
  2. Cliquez sur le menu Outils / Macros complémentaires / SA Assistant Espaces (pour Access 2007 : onglet Outils de base de données, sur le ruban, puis bouton Compléments).Vous devriez obtenir l'écran de Space Jam.

  3. Dans les 2 listes déroulantes les plus à gauche, sélectionnez une table de votre base, ainsi qu'un champ de cette table (celui à découper).
  4. Cliquez sur le bouton Initialiser.
    Le champ non atomique de la table s'affiche alors.

    Ce champ a été "pré-découpé" sur son 1er espace, quand il y en avait un, dans les colonnes "Partie A" et "Partie B". Il s'affiche en bleu quand aucun espace n'a été détecté, en vert pour 1 espace (le cas standard... en principe !) et en orange pour plus d'1 espace (les enregistrements à traiter avec plus de vigilance).

    Vous pouvez utiliser la liste de droite (Afficher les champs) pour n'afficher que les lignes bleues, vertes ou orange.

  5. Dans ces colonnes "Partie A" et "Partie B", sélectionnez les 2 champs de destination (ils doivent être différents l'un de l'autre).
  6. Selon les cas, cochez ou décochez la case Scinder. Lorsque cette case est cochée, le champ va être découpé sur l'un de ses espaces. Sinon, le champ d'origine est maintenu.
  7. Utilisez ensuite la liste déroulante Sens pour indiquer de quelle manière ventiler les données. Ceci peut être utile si une saisie s'est faite dans le sens Nom/Prénom, et une autre dans le sens Prénom/Nom.
  8. Enfin, utilisez les 2 boutons "<" et ">" pour choisir à quel endroit découper le champ. Ces boutons se positionnent automatiquement d'espace en espace, pratique non ?
  9. Une fois que vous êtes prêt, cliquez sur le bouton Valider. C'est fini !

Et si je me suis trompé ?
Space Jam ne garde pas la trace de vos réglages. Si vous avez validé trop vite, il faudra les refaire un par un. Mais il  n'y a aucun problème pour lancer Space Jam plusieurs fois de suite sur la même table.

Si vous êtes sceptique, vous avez de toute façon déjà préparé une sauvegarde de votre base, non ? Smiley

Un dernier point...
Une fois votre table vérifiée, vous pouvez supprimer le champ non atomique (et modifier les requêtes, formulaires et états qui l'utilisaient).

Une démo !

Le paragraphe précédent a dû vous endormir Smiley
Que diriez-vous d'une petite démo pour voir Space Jam en action ?

Questions / Réponses

Et si ma table ne contient pas de clef primaire ?

Ben dites, elle est vraiment mal construite, votre table ! Dans ce cas, une liste déroulante supplémentaire s'affichera dans Space Jam, et vous devrez y choisir un champ de la table qui peut faire office de clef (c'est-à-dire dont toutes les valeurs sont différentes).

Si aucun champ ne peut faire office de clef, vous devez ajouter un champ dans la table impérativement.

Est-ce que je peux utiliser Space Jam dans Excel ?

Non, pas directement. Mais on peut s'arranger !

  1. Excel n'a pas de notion de clef primaire. Donc vous devez prévoir, dans votre tableau Excel, une colonne qui pourra remplir ce rôle.
  2. Prévoyez aussi les 2 champs destination.

  3. Ouvrez une base Access quelconque (une base vide, pourquoi pas).
  4. Liez la feuille Excel grâce au menu Fichier / Données externes / Lier les tables. Vous devrez sélectionner le classeur Excel, puis la feuille, et préciser si cette feuille contient une ligne de titres ou non.
  5. Toujours à partir de votre base Access, démarrez Space Jam et procédez comme dans le cas ci-dessus (table sans clef primaire).

Le retraitement des données s'effectuera sur la feuille Excel, indirectement.

Access et Excel 2007
Lorsque vous liez une feuille Excel 2007 à une base Access 2007, le fichier Excel est en lecture seule uniquement. Ce qui fait que Space Jam ne peut en modifier les données.

Il reste la solution d'importer les données dans Access 2007, de les modifier dans Space Jam, puis de les réexporter vers Excel 2007.

Est-ce que je peux utiliser Space Jam dans d'autres bases de données ?

L'un des intérêts d'Access est qu'il peut se connecter assez facilement à différentes sources de données. A partir du moment où cette liaison est établie, vous devriez pouvoir utiliser Space Jam de la même manière.

A titre d'exemple, j'ai fait un test rapide sur une base Oracle. Une fois la table Oracle liée à Access (sur le même principe que pour la liaison Excel ci-dessus, mais avec une liaison ODBC cette fois), elle peut être traitée par Space Jam.

Info
Vous trouverez dans le grenier du site quelques articles qui abordent la liaison Access / Oracle.

Bug Report

Si vous avez détecté un bug quelconque, vous pouvez bien sûr m'écrire, en détaillant les symptômes.


Mes livres sur Access...
[cliquez pour plus d'infos]





Hit-Parade 
 
[ Copyright 1997-2018 hervé inisan, self-access.com Reproduction interdite ]