OVH Cloud OVH Cloud

imprimer une table Access à partir de MS Excel

1 réponse
Avatar
mrpunk
Bonjour,

Je voudrais savoir comment imprimer l'ensemble d'une table Access en
utilisant un code VBA de microsoft Excel.

(Le formulaire excel est déja connecter sur la table access, il ne me
resqu'à faire un bouton d'impression de la table sur mon formulaire
excel)

Merci!!

1 réponse

Avatar
michdenis
Bonsoir Sébastien,

Tu peux utiliser la macro suivante pour importer toutes les données de ta table de ta base de données. Si tu le désires, tu
peux ajouter un complément pour formater la plage des données avant de lancer l'impression.


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

Il te faut définir dans la procédure :

A ) Le nom de la feuille qui recevra les données

B ) Adapter le nom de la base de données et son chemin selon ton application.

C ) Dans la requête, modifier le nom de la table pour celle de ton application.


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

'Si ta table dans Access contient un champ "OleObject"
'Il faut l'exclure de la requête...sinon ça va planter !!!

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

Dim x As Integer, 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("A1") '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;" 'A définir

'Requête déterminant la valeur du recordset
rst.Open "Select * From Etudiant", cnt, adOpenStatic 'A définir


'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!



"Sebastien" a écrit dans le message de news:
Bonjour,

Je voudrais savoir comment imprimer l'ensemble d'une table Access en
utilisant un code VBA de microsoft Excel.

(Le formulaire excel est déja connecter sur la table access, il ne me
resqu'à faire un bouton d'impression de la table sur mon formulaire
excel)

Merci!!