Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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!!
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" <mrpunk@sympatico.ca> a écrit dans le message de news:e4cddfcc.0307071544.73a1ee25@posting.google.com...
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)
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)