http://www.info-3000.com/access/supportdecours/lecon18/lecon18.htm

Leçon 18 : Importation/Exportation

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

Résumé de la leçon précédente

La fois passée, nous avons passé en revue les différentes options des relations lorsqu'une intégrité référentielle lie les tables, ce qui permet rigueur et souplesse à la fois au niveau des différentes tables

Aperçu de cette leçon

Dans cette leçon, nous alons apprendre qu'Access est une porte ouverte sur le monde, et que c'est un "ami d'enfance" d'Excel. En effet, Access et Excel ne sont pas du opposés, mais au contraire, très complémentaires, ils peuvent marcher main dans la main : En effet, Access et Excel ont chacun leurs atouts, et l'un n'exclut pas l'autres ... Là ou Access permet une sécurité accrue, Excel permet une souplesse inégalée. Là ou Excel offre les tableaux croisés dynamiques d'excellente facture, Access nous offre une interface utilisateur (les frmulaires, que nous n'avons pas encore vu) impeccable. Bien entendu, il faut que vous disposiez d'Excel, et que vous le connaissiez au moins un tout petit peu pour suivre cette leçon, mais bien rares sont les gens ou les entreprises qui disposent d'Access mais pas Excel (Par contre l'inverse est plus courant : Certaines entreprises n'ont qu'Excel)

Si j'ai une liste de fournisseurs qui existe déjà sous Excel, puis-je la transférer sous Access ?

Absolument. C'est le sujet de cette leçon. Marche à suivre :

  1. Lancez Excel
  2. Recopiez ce tableau :
  3. Renommez l'onglet Feuil1 en "Liste de fournisseurs" (Il suffit de cliquer 2 fois sur l'onglet, et d'écrire le nouveau nom) :
  4. Enregistrez votre classeur sous le nom "Tableau Fournisseurs" (Fichier/Enregistrer) : (Retenez l'endroit ou vous enregistrez. Normalement, ce devrait être dans "Mes Documents")
  5. Quittez Excel
  6. Ouvrez Access (si ce n'est déjà fait), et ouvrez procd.MDB (Votre base de données habituelle, rien de sorcier)
  7. Dans Access, allez dans le menu : Fichier/Données externes/Importer
  8. Dans la zone "Type de fichiers", choisissez "Microsoft Excel" (NE PAS OUBLIER !!!)
  9. Cherchez votre fichier "Tableau Fournisseurs" (A vous de savoir ou il est - probablement dans Mes Documents)
  10. Sélectionnez-le , et cliquez sur
  11. Sélectionnez l'onglet "Liste de fournisseurs" , et cliquez sur "Suivant"
  12. Dans cette boîte de dialogue : , "Première ligne contient les en-têtes de colonnes" veut simplement dire que si vous la cochez, la première ligne d'Excel contient les champs : C'est à dire qu'il y a un champ NomFournisseur et un champ Téléphone. Si vous retirez cette coche, celà voudra dire que vous avez votre premier fournisseur qui s'appelle réellement NomFournisseur, et que son téléphone est réellement "Téléphone". Bon, dans notre cas, c'est bien la première ligne qui contient les en-têtes de colonnes (les champs). Cliquez sur Suivant
  13. Cette boîte de dialogue permet éventuellement d'ajouter les données d'Excel dans une table existante. Par exemple, si ce n'était pas des fournisseurs, mais des clients que nous aurions voulu ajouter aux clients existants, nous aurions choisi "Dansune table existante" et chosi "T_Client", mais cette option est très rarement utilisée. D'ailleurs dans notre cas, nous allons cocher "Dans une nouvelle table" et cliquer sur "Suivant"
  14. Cette boîte de dialogue n'est pas d'une grande utilité. Elle permet de détailler la manière dont sont importés les champs : Faut-il les indexer (nous n'avons pas vu cette option), faut il changer les noms des champs ? Y a-t-il des champs qu'il ne faut pas importer (sauter), etc. Ne nous attardons pas ici, car si on veut personnaliser la table, nous aurons bien le temps de le faire après, une fois importée. Cliquez tout de suite sur "Suivant"
  15. Ici, , Access essaye de nous influencer, et coche par défaut "Laisser Access ajouter une clé primaire", ce qui aurait pour effet de simplement ajouter un champ en NuméroAuto. Bon, maintenant, nous sommes assez grand pour savoir gérer nous même les clés primaires. Nous nous en occuperons après. Choisissez "Pas de clé primaire", et cliquez sur "Suivant"
  16. Cette dernière boîte de dialogue nous demande simplement le nom de la table qui servira d'accueil à nos données Excel. Par défaut, il donne le nom de l'onglet "Liste des fournisseurs". Changez ce nom en "T_Fournisseur", et cliquez sur Terminer
  17. Bravo ! Cliquez sur OK

Vous voici en possession de votre nouvelle table, comme si vous l'aviez créée dans Access : . Vous pouvez la remodeler comme bon vous semble. Par exemple, nous allons remplacer le champ Téléphone par Tel et mettre une clé primaire sur NomFournisseur : . En outre, vous constaterez que les deux champs sont en texte de taille ... 255 ! ce qui est un peu grand, vous en conviendrez. Ramenez cette valeur à 50 pour chacun des champs, et lancez en mode saisie de données :

Parfait ! Et y a-t-il un moyen, au contraire, de passer une table Access vers Excel

Oui, et c'est plus simple.

  1. Fermez toutes vos tables (Vous devez être dans Access, avec juste votre base de données ouverte, mais rien d'autre)
  2. cliquez sur T_Client
  3. Allez dans le menu Edition/Copier
  4. Ouvrez Excel
  5. Dans Excel, faites le menu Edition/Coller

Et voilà ! Votre table est maintenant sous Excel !

Excellent ! Ca marche !!! Mais alors, on ne peut pas faire la même chose d'Excel vers Access, c'est à dire de sélectionner un tableau dans Excel, faire Edition/Copier, revenir dans Access et faire Edition/Coller ?

Alors oui, théoriquement ce devrait être possible, mais j'ai constaté que très souvent Access (ou Excel je n'en sais rien) est buggé. Nous allons essayer tout de même.

  1. Lancez Excel
  2. Recopiez le tableau suivant :
    (Il s'agit un tableau de meubles - Le champ meuble contient Canapé, chaise et armoire comme enregistrements)
  3. Sélectionnez es cellules de A1 jusqu'à A4
    (tout le tableau qui va servir à créer la table dans Access)
  4. Allez dans le menu d'Excel Edition/Copier
  5. Revenez dans Access
    (N'allez dans aucune table, soyez simplement dans votre base de données habituelle procd)
  6. Allez dans le menu Edition/Coller
  7. Vous avez ce message : . Dites Oui (pour que "Meuble" soit considéré comme le nom du champ, pas comme un meuble)
  8. Théoriquement, Access devrait vous renvoyer au point 12 de la première marche à suivre de ce début de leçon
    (Cliquez ici pour y aller directement)

Mais quand j'essaie, j'obtiens ce message d'erreur qui était déjà présent lorsque j'utilisais Access 97 :

Ce qui fait que pour passer d'Excel à Access, on doit, dans Access, faire Fichier/Données externes/Importer... C'est comme ça... Bon ce n'est pas vraiment gênant !

Bien. Bon, je suppose que je peux passer des tables d'une base de données vers une autre ?

Bien entendu. C'est évidemment le plus facile.

Comme je connais un peu le fonctionnement de Windows, je suppose qu'une fois dans Access, on ouvre les deux bases de données : Celle ou on va chercher la table, et l'autre ou on veut placer cette table, et avec un simple copier coller, je passe la table de l'une à l'autre, non ?

Presque. Mais il faut juste savoir qu'Access, contrairement à Word et Excel et bien d'autres programmes, n'accepte PAS d'ouvrir 2 bases de données à la fois. Si vous avez une base de données déjà ouverte, et que vous essayez de faire Fichier/Ouvrir une autre base de données, Access va fermer la précédente.

Ah bon... Pas très pratique !

Non. Par contre, vous pouvez lancer 2 fois Access, et dans chacun des 2 Access ouverts, vous pouvez ouvrir une base de données différente.

D'accord, ce qui revient preque au même que d'ouvrir 2 bases de données dans le même Access.

Quasiment. Mais ceci dit, nul besoin d'ouvrir 2 bases de données en même temps... On peut très bien ouvrir une base, copier la table qu'on désire mettre dans l'autre, fermer la base, ouvrir l'autre base, et coller la table. Je m'explique par un cas pratique : Admettons que vous désirez passer votre table T_Client que vous avez dans votre base habituelle procd.mdb vers une nouvelle base de données qui s'appellerait par exemple Nouveau.MDB. Marche à suivre :

  1. Ouvrez Access
  2. Ouvrez votre base habituelle procd (si ce n'est déjà fait)
  3. Sélectionnez T_Client
  4. Faites Edition/Copier
  5. Fermez procd.MDB (Fichier/Fermer)
  6. Créez une nouvelle base de données que vous appellerez Nouveau.MDB (Je suppose que vous savez comment faire...)
  7. Une fois dedans, faites simplement Edition/Coller
  8. Dans cette boîte : , donnez un nom à la table (T_TrucMachin)
  9. Cliquez sur OK

Et voilà. Vous vous retrouvez avec une copie conforme de T_Client dans votre nouvelle base de données

Et si par exemple, je voulais copier toutes les tables ?

Bon dans ce cas, autant carrément aller dans l'explorateur et copier toute la base de données procd.MDB sous un nouveau nom !

Oui bien sûr, mais admettons que j'ai une base de données dans laquelle j'ai déjà conçu 5 ou 6 tables, et que j'aimerais importer toutes les tables en plus de procd.MDB ? Je dois chaque fois copier coller table par table comme on vient de le voir ?

Non. Il y a une autre méthode pour faire des importations massives. C'est simplement Fichier/données externes importer. Allez dans une nouvelle base de données, et je vais vous expliquer comment faire pour importer toutes les tables de procd.mdb d'un seul coup :

  1. Une fois dans une nouvelle base de données (Nouveau2.MDB par exemple), faites Fichier/Données externes/Importer
  2. Allez chercher votre base habituelle procd.mdb, et cliquez sur "Importer"
  3. Dans cette boîte , cliquez sur l'onglet Table, et cliquez sur les différentes tables que vous voulez importer (Par exemple, T_Ami, T_Fournisseur et T_Pays)
  4. Cliquez sur OK

Et si par exemple j'avais déjà une table appelée T_Pays, il l'aurait écrasée avec la nouvelle table ?

Non. Il aurait renommé la nouvelle table importée en T_Pays1

Je vois qu'il y a d'autres onglets (Requêtes, formulaires, etc.) Ca veut dire que je peux importer autre chose que les tables ?

Exactement. Vous allez pouvoir importer n'importe quels objets de n'importe quelle base de données vers n'importe quelle autre base de données. Mais nous n'avons pas encore vu ces autres objets

Autre chose maintenant : Est-ce que depuis Access, je peux importer des données d'ailleurs que dans Excel ? depuis Paradox* par exemple ?

*Paradox est un autre programme de bases de données, concurrent d'Access

Oui. Pour visualiser les différents formats d'importation, dans Access, allez dans le menu Fichier/Données externes/importer, et cliquez sur la liste du bas "Type de fichiers" : pour visualiser les différents formats pris en compte : (Vous ne les voyez pas tous à la fois, il faut que vous cliquiez sur l'ascenseur vertical à droite)

Mais ceci dit, il est tout de même possible que vous n'ayez pas tous ces formats possibles. En fait, il s'agit d'une opération assez exceptionnelle que de devoir importer des données d'autres formats. Par exemple, vous pouvez très bien ignorer totalement Paradox, et n'avoir absolument aucune utilité de l'importation de Paradox. Aussi, lors de l'installation d'Access (En fait, la plupart du temps quand vous installez Office), Microsoft à jugé bon de ne pas incorporer tous les formats de conversion parce que mine de rien, ça prend de la place sur le disque, tous ces additifs...

En fait, il y a toute une série de choses dans le genre qu'Office n'installe pas lorsqu'on demande une installation "Standard". Personnellement, j'ai pris l'habitude d'installer Office (et surtout Access) avec TOUTES les options. C'est vrai qu'il y en a certaines dont je ne me servirai jamais, mais au moins je suis tranquille. Et puis avec la taille des disques dur actuels, pourquoi se priver !

Voici donc la marche à suivre pour ajouter tout ce qui manque à Office 2000* :

* Pour Office 97, la présentation est un tout petit peu différente, mais le principe est le même

ATTENTION : Si vous désirez suivre cette procédure, vous devez tout éteindre, y compris internet (C'est conseillé en tout cas). Imprimez ou retenez à peu près par coeur la marche à suivre, et allez-y, une fois qu'il n'y a plus aucun programme ouvert.

Il va vous falloir vous munir de votre CD d'installation d'Access (ou d'Office) Eh oui... Il faut que vous l'ayez, et une fois que vous l'avez inséré dans votre lecteur de CD ROM, après quelques secondes, vous avez une boîte de dialogue qui apparait. Cliquez sur , puis sur OK (ou Installer.., enfin bref le bouton en bas à droite), et dans la boîte de dialogue suivante cliquez sur "Microsoft Office", ce qui fera apparaître un menu. Choisissez "Tout exécuter à partir du disque dur", et sur le bouton "Mettre à jour": . Suivez ensuite les instructions, et tout à la fin revenez dans Access. Vous devriez avoir alors d'autres formats présents lorsque vous faites Fichier/Données externes/importer.

Très bien, mais admettons que je travaille avec un système quelconque, par exemple, ... hem je ne sais pas, admettons "Basopro" ?

C'est quoi ça Basopro ????

C'est n'importe quoi, c'est un exemple, c'est un système de base de données imaginaire très peu répandu, dans ce cas, on ne peut pas transférer les données vers Access, puisque Access, il ne connait absolument pas Basopro ?

OK. Bon admettons que vous travaillez avec Basopro, qui est, on va dire un système de bases de données très peu répandu. Alors, non, Access ne peut pas importer Basopro, mais peut être que Basopro, peut ... EXPORTER vers Access

Ah d'accord ! Donc si dans Basopro j'ai une commande exporter, et qu'il accepte de m'exporter au format Access, je suis sauvé !

Eh oui... tout simplement

Et s'il n'y a pas de commande exporter, ou que le format Access est inconnu par Basopro ?

Alors, dans ces cas là, dans Basopro, je copie les tables, ou les tableaux de Basopro, et je les colle dans Excel. Une fois les données dans Excel, on est sauvé, parce qu'Access reconnait Excel.

Donc, dans Access aussi alors, je peux exporter des tables sous des formats de bases de données différentes ?

Oui. vous cliquez sur la table que vous désirez exporter par exemple en Paradox, et pour la transformer, vous choisissez Paradox dans "Type de fichiers" : .

Ah oui ! C'est génial... On peut même choisisr quelle version de Paradox on veut !

Exactement. Après, vous donnez un nom au fichier (Il donne T_Client par défaut si vous avez sélectionné T_Client - ce sera un fichier T_Client.db)

Oui, finalement, on est jamais coincé : Quand on veut passer d'un programme à l'autre, soit on exporte depuis l'un, soit on importe vers l'autre !

Vous avez tout compris. Et heureusement qu'il y a cette souplesse... Sinon vous vous rendez compte comme tout serait rigide... Là, vous pouvez changer de système de bases de données comme vous voulez : Tout à coup vous ne voulez plus travailler avec Access, mais vous avez eu le coup de foudre pour DBase par exemple, et vous voulez récupérer vos données qui étaient sous Access : C'est possible.

Bon, je vais être tordu, mais admettons que j'ai une table sous Access, et je voudrais par exemple la mettre sur disquette pour la donner à un collègue (ou lui envoyer par E-Mail). Mais... Il n'a ni Access, Ni Excel, ni aucun système de base de données. Là, on ne peut rien faire je suppose ?

Mais il a un ordinateur quand même, votre collègue ?

Oui, mais une version de base : Il a juste le bloc-notes dessus

Ah oui, pas grand chose effectivement*

*Le bloc-notes est un tout petit petit traitement de texte qui est fourni avec Windows que vous trouvez si vous faites Démarrer/Programmes/Accessoires/Bloc-notes

Et bien si ! On peut lui envoyer une table malgré tout. Nous allons pour ce faire exporter la table en format texte, qui est le format le plus basique qu'on puisse trouver, et qui a donc l'immense avantage de pouvoir être lu par n'importe quel ordinateur.

Même si mon collègue à un Mac Intosh ?

Absolument, oui. C'est réellement un format universel. Pour ce faire, et pour bien comprendre, vous allez créer une table T_Ami, comme ceci : , que vous allez remplir comme ceci :

Ensuite, vous quittez cette table, et vous la sélectionnez simplement en cliquant une fois dessus : et vous faites Fichier/Exporter.

Choisissez l'endroit ou vous voulez placer ce fichier texte :

Comme nom de fichier, écrivez ListeAmi, et Type de fichier, choisissez "Fichiers Texte (*.txt; *.csv; *.tab; *.asv), et cliquez sur Enregistrer.

Vous arrivez dans la boîte de dialogue suivante : . Choisissez "Délimité - Des caractères (tabulation, virgule, ...) séparent chaque champ". Vous avez un exempe de ce que ça va donner dans le fichier texte résultant dans "Format d'exportation exemple" : "Androssi";"Alberto";"Angoulème", c'est à dire que les données vont être encadrées par des guillemets. Si vous cliquez sur "Longueur fixe" (Vous pouvez essayer pour voir), alors, les données vont être bien alignées. On pourrait trouvrer que cest plus esthétique, mais ça dépend des cas, car avec l'histoire des guillemets et des points virgules, on voit bien que pour Eugène. le premier et le 3ème champ sont vides ("";"Eugène",""), tandis qu'avec Longueur Fixe, c'est peut être moins net.

Cliquez sur "Suivant".

Vous arrivez ici : . Choisissez Point-Virgule pour le délimiteur qui séparera vos champs (Essayez de cliquer sur Virgule ou Espace pour voir ce que ça donnerait si vous les choisissiez).

Mettez une coche dans "Inclure les noms de champs sur la première ligne", ce qui va inclure comme première ligne "NomAmi";"Prenom";"Ville".

Délimiteur de texte : Laissez le "guillemet". Si vous Choisissez 'l'apostrophe', ce sera simplement une apostrophe qui séparera chaque champ. Cliquez sur Suivant.

Nous sommes au bout de nos peines : . Access nous demande juste de bien vérifier le nom et l'emplacement du fichier de destination (C:\Mes Documents\ListeAmi.txt). Cliquez sur Terminer : , et OK.

Vous avez maintenant à votre disposition un fichier ListeAmi.txt qui contient la table T_Ami. Nous n'allons pas voir ici comment l'envoyer par E-Mail car ça sortiraiut du cardre du cours, mais nous allons surtout voir si on peut effectivement l'ouvrir avec le bloc-notes.

Ouvrez le bloc-notes (Démarrer/Programmes/Accessoires/Bloc-notes). Dans le bloc-notes, faites Fichier/Ouvrir, allez chercher ListeAmi.txt là ou vous l'avez mis (). Vous devriez obtenir ce résultat :

"NomAmi";"Prenom";"Ville"
"Androssi";"Alberto";"Angoulème"
"Barras";"Bernard";"Bruxelles"
"Channey";;"Cologne"
;"Daniel";"Dublin"
;"Eugéne";

Les champs vides étant remplacés par rien. Pour rappel, table d'origine ressemblait à ceci :

Et voilà...

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

Access est ouvert sur le monde : Avec parfois un peu d'astuce, il est possible d'importer n'importe quoi dans Access, et d'exporter les tables Access vers n'importe quoi. La commande Fichier/Données externes/Importer permet d'importer des données depuis un grand nombre de formats, tandis que Fichier/Exporter permet d'envoyer les tables Access dans un grand nombre de formats de données. Si on ne trouve pas un certain fromat de fichier dans Fichier Exporter, il est possible de réinstaller Office avec toutes les options. Et quand bien même on aimerait envoyer une table à une personne qui n'a aucun système de gestion de bases de données, on a toujours la possibilité de lui envoyer les tables en format texte. Pour passer des données vers Access alors que celles-ci ne sont pas vraiment bien "rangées" - par exemple si elles sont sous forme de liste mal fichue sous word, et difficilement importables directement dans Access, on peut toujours utiliser le très souple Excel, qui va permettre de remettre les données sous forme de tableau bien "rangé", et va ainsi jouer le rôle de "metteur en forme intermédiaire"

Avez-vous bien compris ?

  1. Vers quel programme n'est il pas possible d'exporter des tables ?
    a. Vers le bloc-notes
    b. Vers Excel
    c. Vers le démineur *** (C'était facile ;-) )
    d.
    Vers DBase 3
  2. Puis-je exporter toutes mes tables d'un seul coup vers Excel ?
    a. Non, il faut les exporter une par une ***
    b. Oui : Fichier/Exporter toutes les tables/Excel (*.xls)
    c. Oui. Et d'ailleurs on ne peut pas exporter une seule table

  3. Est-il possible d'envoyer une simple table par E-Mail à une personne qui possède également Access ?
    a. Oui
    b. Non, ou alors il faut la recopier dans une base de données entièrement vide, et envoyer cette base de données à la personne qui possède Access ***

  4. Puis-je importer dans Access des données provenant d'un fichier Texte ? (Essayez pour voir)
    a. Oui ***
    b. Non

  5. Puis-je exporter une table d'Access 2000 vers Access 95 ?
    a. Oui : Fichier/Exporter/Type de données : Access 95 (*.mdb)
    b. Oui, mais il faut la sélectionner, faire Edition/Copier, aller ensuite dans Access 95, ouvrir la base dans laquelle la table doit être placée, et faire Edition/Coller *** (C'était dur, j'avoue)

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.

Exercice

L'exercice consiste à créer une nouvelle base de données que vous appellerez Importation.mdb. Dans cette base entièrement vide, vous allez importer un fichier qui a été créé dans un format de base de données que je ne vous révèle pas. Avant de l'importer, il faut bien entendu que vous le téléchargiez. Cliquez ici pour télécharger ce fichier surprise.

Une fois téléchargé, vous l'importez dans votre base Importation.mdb, et vous lui donnerez le nom T_Surprise (Pour renommer une table, cliquez simplement dessus avec le bouton droit de la souris, et choisissez Renommer)

La 2ème partie de l'exercice consiste à Exporter cette nouvelle table T_Surprise dans un fichier en format texte (txt) nommé ExportSurprise.TXT (Ne pas inclure les noms de champs sur la première ligne, Délimité, Délimitation du texte " et Caractères de séparation ; )

La 3ème partie de l'exercice n'a pas grand chose à voir avec Access, c'est seulement pour illustrer la facilité de changement de programme : Ouvrez simplement ce fichier ExportSurprise.TXT avec Excel

Téléchargez les fichiers de solution : Importation.MDB et ExportSurprise.TXT

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.

Aperçu de la leçon suivante

Lors de la prochaine leçon, nous changeons totalement de sujet. Nous allons voir comment trier et filtrer les tables dans tous les sens sans jamais aucun risque de mélange ! Mais pour trier ou filtrer des données, nous avons besoin d'une certaine masse de données : Plutôt que de les saisir vous-même, j'ai créé une table à votre intention qu'il faudra importer dans votre base de données... D'ou lutilité de cette leçon qui va vous servir immédiatement dans la leçon suivante ! A la find e la leçon suivante, vous ne pourrez plus perdre vos données, même si vous en avez plusieurs centaines de milliers !