Comment faire pour récupérer une table à partir d'Access dans Excel à l'aide de DAO

Traductions disponibles Traductions disponibles
Numéro d'article: 146406 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Résumé

Dans les versions de Microsoft Excel répertoriés ci-dessus, vous pouvez utiliser DAO (Data Access Objects) dans Visual Basic pour applications pour récupérer une table à partir de Microsoft Access.

Pour fournir un exemple de la manière dont vous pouvez utiliser DAO pour extraire une table à partir de Microsoft Access, la macro décrite dans cet article utilise la base de données Northwind livrée avec Microsoft Office Professionnel pour Windows 95, version 7.0 et Microsoft Office 97 Professional pour Windows. Si vous avez sélectionné les options par défaut lorsque vous avez installé Microsoft Office Professionnel pour Windows 95, version 7.0, la base de données se trouve dans :
   \MSOffice\Access\Samples\Northwind.mdb
				
si vous avez sélectionné les options par défaut lorsque vous avez installé Microsoft Office 97 Professional pour Windows, la base de données se trouve dans :
   \Program Files\Microsoft Office\Office\Samples\Northwind.mdb
				
si la base de données Les Comptoirs se trouve dans un dossier différent sur votre ordinateur, vous devrez également modifier le code fourni ci-dessous avant de l'exécuter.

Pour utiliser DAO dans votre macro, vous devez référencer la bibliothèque d'objets DAO de Microsoft ou que vous receviez l'erreur «User-defined type non défini». Pour faire référence à cette bibliothèque dans Microsoft Excel version 7.0, activer une feuille de module, cliquez sur Références dans le menu Outils et activez la case à cocher "Bibliothèque d'objets Microsoft DAO 3.0". Pour faire référence à cette bibliothèque dans Microsoft Excel version 97, cliquez sur Références dans le menu Outils dans Visual Basic Editor et vérifier la «Microsoft DAO 3.5 Object Library".

Plus d'informations

Microsoft fournit des exemples de programmation à des fins d'illustration uniquement, sans garantie expresse ou implicite. Cela inclut, mais n'est pas limité à, les garanties implicites de qualité, d'adéquation à un usage particulier. Cet article suppose que vous êtes familiarisé avec le langage de programmation présenté et les outils utilisés pour créer et déboguer des procédures. Les techniciens du support technique Microsoft peuvent vous aider à comprendre la fonctionnalité d'une procédure particulière, mais ils ne modifieront pas ces exemples pour fournir des fonctionnalités supplémentaires ou créer des procédures répondant à vos besoins spécifiques. Pour récupérer une table à partir de Microsoft Access, procédez comme suit :

  1. Établissez un objet de base de données.
  2. Établissez un objet Recordset.
  3. Récupérer les en-têtes (si vous le souhaitez).
  4. Récupérer les données à partir de la table.
Une fois les données sont récupérées, vous devez fermer tous les objets que vous avez ouvert en émettant des commandes .Close.

Pour récupérer une table à partir de Microsoft Access par programme, utilisez Visual Basic suivant code VBA :
Sub GetTable()
'This sub will retrieve all the data in the "Customers" table in
'Northwind

   'Declare variables
   Dim Db As Database
   Dim Rs As Recordset
   Dim Ws As Object
   Dim i As Integer
   Dim Path as String

   'This line will define the Object "Ws" as Sheets("Sheet1")
   'The purpose of this is to save typing Sheets("Sheet1")
   'over and over again
   Set Ws = Sheets("Sheet1")

   'Set the Path to the database. This line is useful because
   'if your database is in another location, you just need to change
   'it here and the Path Variable will be used throughout the code
   Path = "c:\msoffice\access\samples\northwind.mdb"

   'This set of code will activate Sheet1 and clear any existing data
   'After clearing the data it will select cell A1
   Ws.Activate
   Range("A1").Activate
   Selection.CurrentRegion.Select
   Selection.ClearContents
   Range("A1").Select

   'Set the Database, and RecordSet  This Table exists in the database
   Set Db = Workspaces(0).OpenDatabase(Path, ReadOnly:=True)

   'This will set the RecordSet to all records in the Customers table
   Set Rs = Db.OpenRecordset("Customers")

   'You could instead set the RecordSet to, for example, the records
   'where the Country Code is "UK", without quotes. To do this, replace
   'the line above: Set Rs = Db.OpenRecordset("Customers") with the
   'following:
   '
   'Set Rs = _
   'Db.OpenRecordset("SELECT * FROM Customers WHERE Country = 'UK';")


   'This loop will collect the field names and place them in the first
   'row starting at "A1"
   For i = 0 To Rs.Fields.Count - 1
      Ws.Cells(1, i + 1).Value = Rs.Fields(i).Name
   Next I

   'The next line simply formats the headers to bold font
   Ws.Range(Ws.Cells(1, 1), Ws.Cells(1, Rs.Fields.Count)).Font.Bold=True

   'The next line will get the data from the recordset and copy it
   'into the Worksheet (Sheet1).
   Ws.Range("A2").CopyFromRecordset Rs

   'This next code set will just select the data region and
   'auto-fit the columns
   Sheets("Sheet1").Select
   Range("A1").Select
   Selection.CurrentRegion.Select
   Selection.Columns.AutoFit
   Range("A1").Select

   Rs.Close
   Db.Close
End Sub
				

Références

Pour plus d'informations sur l'accès aux données, cliquez sur l'onglet Index dans l'aide de Microsoft Excel, tapez le texte suivant :
accès aux données dans DAO
puis double-cliquez sur le texte sélectionné pour aller à la rubrique «Accessing External Databases with DAO».

Propriétés

Numéro d'article: 146406 - Dernière mise à jour: mercredi 11 octobre 2006 - Version: 2.3
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Excel 97 Standard
  • Microsoft Excel 95 Standard
Mots-clés : 
kbmt kbdtacode kbhowto kbinterop kbprogramming KB146406 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 146406
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.
Exclusion de responsabilité concernant les contenus obsolètes dans la Base de connaissances
Cet article concerne des produits pour lesquels Microsoft n'offre plus de support. Il est par conséquent fourni « en l'état » et ne sera plus mis à jour.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com