Leçon 61 (Incomplète) : Conversion de données par Excel

0 commentaires

Sommaire

  1. Utilisation de l'outil "Données/Convertir" d'Excel pour scinder les données d'un champ dans 2 champs distincts
  2. Importation de données Excel dans une table déjà existante
  3. Injection de données dans une table en provenance d'une autre table, elle même importée d'Excel

Utilisation de l'outil "Données/Convertir" d'Excel pour scinder les données d'un champ dans 2 champs distincts

Cette leçon nécessite qu'Excel soit installé sur votre PC.
Rappel : dans T_Employe, vous avez bien le prénom et le nom des élèves dans un seul champ : Le nom. ce qui évidemment ne va pas.

Bon, on peut toujours faire des couper/coller pour remettre les éléments dans leur bon champ...

Evidemment. Ce serait en plus facile, car vous n'avez que quelques enregistrements. Mais si vous en aviez 3 ou 4'000, ça change la donne !

Je conçois en effet...

Alors, j'ai une bonne et une mauvaise nouvelle à vous annoncer... La mauvaise c'est qu'Access n'a pas vraiment d'outils prévus pour remédier à ça...

Oooooooooh !!!

... Mais Excel, Oui !

Aaaaaaaaah !!!

Vous avez vu dans la leçon 18 à quel point c'est facile d'interchanger des données Access/Excel. Je vous conseille de revoir cette leçon si vous ne vous en souvenez plus très bien.

C'est bon.

Bien. Alors sélectionnez votre table T_Employe, et copiez-là dans une nouvelle feuille Excel. Ca donne à peu près ceci : . Supprimez toutes les colonnes sauf le nom, et élargissez un peu la colonne du nom et rétrécissez la hauteur des lignes, histoire d'avoir un tableau qui ressemble à ceci (Je vais partir du fait que vous savez un peu utiliser Excel): 
Maintenant, sélectionnez les cellules de A2 jusqu'à A11 : . Allez ensuite dans le menu Données/Convertir : . C'est ici que la magie va opérer : Nous allons préciser que nons données doivent être converties de manière délimitée. Ce n'est pas compliqué : Excel va simplement analyser chacune de nos lignes qui contiennnent les élèves, et préciser que chaque fois qu'il voit un espace, il doit changer de colonne. Vous allez mieux comprendre. Cliquez sur Suivant : . Dans cet écran, vous allez enlever la coche Tabulation, et cocher Espace à la place : C'est donc pour qu'il crée des colonnes différentes chaque fois qu'il rencontre un espace. D'ailleurs on constate dans le tableau-exemple juste en dessous que Ca marche... Sauf pour le 3ème élève : BonécouteYvan... Tout simplement parce qu'on a oublié de mettre un espace entre son nom et son prénom...
Comme vous voyez dans les cases à cocher, vous pouvez avoir pas mal de possibilités, et même une case Autre, pour définir vous même le caractère de séparation. Par exemple, vous pourriez très bien avoir des données comme ceci : ViveXlesXvacances... Pour séparer les 3 mots, vous mettez X dans Autre, et le donctionnement est identique. D'ailleurs vous aurez un exercice dans ce style plus bas.
Remarque : Si vous revoyez la leçon 18, vers la fin, nous avons fait exactement l'inverse de ce que nous venons de faire : Nous avons exporté les données d'une table dans un format texte délimité. Je vous invite à y jeter à nouveau un coup d'oeil.

Pour revenir à nos noms et prénoms, ça ne marche évidemment pas si c'est tout collé... C'est normal... Et si on avait un nom et prénom complexe comme par exemple "Jean Pascal de La Colline", il va nous faire 5 colonnes alors ? (puisqu'il y a 5 espaces)

Oui, c'est certain. Et évidemment, si nous avions 1000 ou 2000 noms à traiter, il y a forcément des exceptions, mais on n'imagine qu'il n'y en aura pas beaucoup... C'est facile de les corriger à la main dans Excel...
Cliquez sur Suivant : la dernière boîte de dialogue n'est pas très intéressante, cliquez sur Terminer : . Et voilà : aussi simple que ça. Il ne reste plus qu'à titrer notre 2pme colonne : Prénom, et corriger à la main "BonécouteYvan" : . Maintenant, nous allons rebalancer ce tableau finalisé dans Access. Dans la leçon 18, nous avons vu comment faire depuis Access (Fichier/Données externes/importer). Utilisons une autre méthode : Sélectionnez la colonne A et B :  .
ATTENTION : C'est très important de bien sélectionner la COLONNE A et B, et pas simplement les cellules A1 jusqu'à B11, surtout si vous utilisez Office 97 : Il y a un Bug dans ce cas, et vous ne pourrez pas coller les données dans Access.
Faites ensuite Edition/Copier, et retournez dans Access, dans votre base de données habituelle, et faites évidemment ... Edition/Coller : Il vous demande si la première ligne de données contient les en-têtes de colonnes, c'est à dire est-ce que Nom et Prénom sont bien les noms des champs, ou est-ce que ce sont déjà des élèves ? Répondez Oui : . Et voilà : Il vous dit que ça a été importé avec succès. Dites OK : 

Importation de données Excel dans une table déjà existante

Super, mais j'ai le souvenir que quand on passe par la classique commande Fichier/Données externes/Importer, à un moment donné, il nous demande si on veut importer dans une nouvelle table ou une table existante (). Ca n'aurait pas été plus simple ?

Dans notre cas, non. D'ailleurs souvent ce n'est pas pratique parce qu'il faut que la table d'accueil (T_Employe en ce qui nous concerne) ait EXACTEMENT les mêmes noms de champs que le fichier importé. Et ce n'est déjà pas le cas, parce que T_Employe contient IDEmploye, NomEmploye, Prenom, TelInterne et DateNaissance... La feuille Excel importée Feuil1 était titrée Nom et Prénom... Ca se serait donc très mal passé, c'est sûr.
Tandis que la méthode de la requête Ajout que nous allons utiliser (Vous vous en rappelez ? Leçon 59) va permettre d'injecter des champs dans T_Employe, même s'ils ont des noms différents.
Si vous ouvrez Feuil1, vous constatez qu'elle représente exactement ce qu'on désirait : . Constatez juste en mode création la petite particularité :  : Les textes sont ajustés à 255 caractères. C'est dû au fait qu'Excel ajuste le texte de ces cellules à 255 caractères.

C'est bizarre... J'ai pourtant l'impression que dans Excel on peu écrire bien plus que ça dans une cellule !

Oui, mais c'est géré de manière transparente. Quand vous avez des cellules de plus de 255 caractères, il change de manière interne de procéder. Et d'ailleurs l'importation dans Access se passerait peut-être moins bien... Rien ne prouve qu'il penserait simplement à installer un champ mémo (Leçon 6).
Bref... Passons maintenant à l'étape suivante : Injecter le contenu de la table copiée depuis Excel Feuil1 dans T_Employe. Pour commencer, videz la table T_Employe (effacez tous ses enregistrements). Fermez-là, et compactez la base de données, histoire de réinitialiser son IDEmploye en NuméroAuto à 0 (Leçon 60).
Créez ensuite une nouvelle requête basée sur Feuil1, que vous transformez en requête Ajout, en choisissant évidemment T_EMploye. Mettez le Nom dans NomEmploye et le Prénom dans Prenom : .

Injection de données dans une table en provenance d'une autre table, elle même importée d'Excel

Exécutez la requête (). Il vous informe que vous allez ajouter 10 lignes, ce qui est parfait, et c'est terminé. On n'aurait même pas besoin d'enregistrer la requête pusiqu'on en aura plus jamais besoin. Mais faisons-le quand même juste pour le plaisir de la garder : R_InjectionNomPrenomDepuisExcel. (D'ailleurs, la table Feuil1 pourrait être aussi détruite).
Voilà, c'est terminé : Notre table T_Employe est maintenant parfaite : . Il ne reste plus qu'à remplir les champs vides :  (Vous n'êtes pas obligé de le faire, puisqu'à la fin de chaque leçon, vous pouvez télécharger la base de données comme elle devrait être). D'ailleurs, je vais en profiter pour ajouter quelques employés : 
Nous allons nous arrêter là pour cette fois.

Bon... Hem... On peut résumer ?

Ce n'estpas parce qu'on utilise Access qu'on doit tout à coups êtes fâché avec Excel : La preuve, il nous a ici bien rendu service avec sa fonctionnalité de séparation des données suivant tel ou tel caractère, fonctionnalité absente d'Access. Nous avons révisé un peu le transfert de données Access-Excel-Access, ainsi que la requête Ajout. La table Feuil1 et la requête ajout n'étaient d'ailleurs utiles seulement que dans cette leçon : C'est un exemple d'objet temporaire qui peut être détruit après usage, comme un mouchoir en papier...

Avez-vous bien compris ?

  1. Question 1
    a.
    b.
    c.
    d.

  2. Question 2
    a.
    b.
    c.
    d.

  3. Question 3
    a.
    b.
    c.
    d.

  4. Question 4
    a.
    b.
    c.
    d.

  5. Question 5
    a.
    b.
    c.
    d.

  6. Question 6
    a.
    b.
    c.
    d.

0 commentaires:

Enregistrer un commentaire

Copyright 2013 © 2 Rattrapage