OVH Cloud OVH Cloud

BDD Acces

4 réponses
Avatar
Emcy
Bonjours,

Comment faire avec Excel (en Vba) pour sortir dans une feuille Excel une
table faite sous Acces

4 réponses

Avatar
jb
1-On peut s'attacher à une table ou une requête Access avec
Données/Données Externe/Créer une requête

2:En VBA DAO (penser à cocher Outils/Réfrences DAO 3.6)
Sub RecordsetX()
Dim db As Database
Dim dt As Recordset
Set db = OpenDatabase(ActiveWorkbook.Path & "access2000.mdb")
Set dt = db.OpenRecordset("client")
i = 2
Do While Not dt.EOF
Cells(i, 1) = dt!nom_client
Cells(i, 2) = dt!ville
dt.MoveNext
i = i + 1
Loop
End Sub

JB
Avatar
docm
Bonjour.

On peut aussi utiliser la méthode CopyFromRecordset (Excel seulement).

'Créer d'abord une référence à Microsoft DAO
Sub SortirDossiers()

Dim db As DAO.Database
Dim RS As DAO.Recordset
Dim f As DAO.Field
Dim ws As DAO.WorkSpace

Set ws = DBEngine(0)
'Ouvrir la BDD
Set db = ws.OpenDatabase("c:Office97OfficeExamplesNorthwind.MDB")
'Ouvrir la table Commandes
Set RS = db.OpenRecordset("Commandes")

'Récupérer le nom des champs
For Each f In RS.Fields
Worksheets(1).Cells(1, f.OrdinalPosition + 1).Value = f.Name
Next

'Utiliser la méthode CopyFromRecordset (Excel seulement)
Worksheets("Feuil1").Range("A2").CopyFromRecordset RS

End Sub

docm


"Emcy" a écrit dans le message news:
#
Bonjours,

Comment faire avec Excel (en Vba) pour sortir dans une feuille Excel une
table faite sous Acces




Avatar
michdenis
Bonjour Emcy,

Voici un exemple avec ADO

'---------------------------------
Sub GetDataWithADO()

'Ajouter la bibliothèque suivante :
'Microsoft activex data objects 2.0 librairy

'Attention, si access possède un champ mémo
'Limitation à 1823 caractères le nombre de
'caractère importé dans Excel

Dim A As Long, B As Long, C As Integer
Dim cnt As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim MyRange As Range


'détermine la cellule supérieur gauche où
'le recordset va être copié

With Worksheets("Feuil1")
Set MyRange = .Range("g4") 'A définir
End With

'La chaîne de connexion à une base de donnée Access
cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:Mes Documentsbd2.mdb;"

requete = "Select * From NomDeMaMaTable"

'Requête déterminant la valeur du recordset
rst.Open requete, cnt, adOpenStatic

'Si tu es intéressé de récupérer directement les noms
'des champs de ton recordset, tu peux utiliser ce
'qui suit :
Do
MyRange.Offset(, C) = rst.Fields(C).Name
C = C + 1
x = x + 1
Loop Until x = rst.Fields.Count

'Cette ligne de code copie tous les enregistrements du recordset
'vers ta plage de cellule définie au début de la procédure.
'Cette ligne n'est pas valide pour une version plus agée qu'excel 2000
'La méthode version 97 fonctionne un peu différemment.
MyRange.Offset(1, 0).CopyFromRecordset rst

'libérer l'espace mémoire des objets utilisés dans la procédure:
Set MyRange = Nothing: Set rst = Nothing

End Sub
'---------------------------------------


Salutations!




"Emcy" a écrit dans le message de news: %
Bonjours,

Comment faire avec Excel (en Vba) pour sortir dans une feuille Excel une
table faite sous Acces
Avatar
anonymousA
Bonjour,

possible aussi en utilisant MSQuery que l'on peut appeler par VBA.

A+

Bonjours,

Comment faire avec Excel (en Vba) pour sortir dans une feuille Excel une
table faite sous Acces