Sans macro: Données/Données externes/Créer une requête
On peut ensuite rafraichir avec données/actualiser
Cordialement JB
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
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" <matsan@discussions.microsoft.com> a écrit dans le message de news: 35F20E3C-EC1C-4E94-B195-DB8F02F32095@microsoft.com...
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.
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.