Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Intégration dans Excel d'une table Access

2 réponses
Avatar
matsan
Bonjour à tous,

Je cherche à intégrer, sur demande d'un utilisateur, les données d'une table
Access dans un classeur Excel via une macro.

Je ne suis pas un pro de VBA donc, SVP, postez vos réponse en langage simple
et explicite.

Merci à tous

2 réponses

Avatar
JB
Bonjour,

Sans macro: Données/Données externes/Créer une requête

On peut ensuite rafraichir avec données/actualiser

Cordialement JB
Avatar
michdenis
Bonjour Matsan,

Pour ajouter une bibliothèque, tu ouvres la fenêtre de l'éditeur de code,
barre de menu / outils / références / et tu sélectionnes dans la liste :
'Microsoft activex data objects 2.x librairy

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

'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
Dim Arr()

'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
'Adapter le chemin et le nom de la base de données.
cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:Mes Documentsbd2.mdb;"

'Requête déterminant la valeur du recordset
'Remplacer Etudiant par le nom de la table à importer
rst.Open "Select * From Etudiant", cnt, adOpenStatic

'Si la table contient des enregistrements :
If rst.RecordCount > 0 Then
'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
Else
MsgBox "Aucun enregistrement trouvé"
End If

'libérer l'espace mémoire des objets utilisés dans la procédure:

Set MyRange = Nothing: Set rst = Nothing

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


Salutations!




"matsan" a écrit dans le message de news:
Bonjour à tous,

Je cherche à intégrer, sur demande d'un utilisateur, les données d'une table
Access dans un classeur Excel via une macro.

Je ne suis pas un pro de VBA donc, SVP, postez vos réponse en langage simple
et explicite.

Merci à tous