Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Excel et Access

R

Rémi

Guest
Bonjour,

Je veux faire une macro qui ira chercher des données qui sont dans des tables Access. Les données de cette table auront été créées pas une requête création de table. Je ne suis pas très avancé en VBA et l'enregistreur de macro ne marche pas pour ce genre de manoeuvre. Je sais comment ouvrir Access et le fichier dont j'ai besoin mais je ne sais pas comment lui faire éxécuter la requête et ensuite prendre les données dans la table et venir les coller dans ma feuille Excel.

J'ai besoin de votre aide et merci à tous ceux qui me répondront!

Rémi
 
B

Bobby72

Guest
Bonjour Rémi

Tu dois déclarer un objet recordset (Dim rst as Recordset). N'oublie pas la référence dans le menu Outils : Microsoft Activex Data Object Library 2.5.

Tu ouvre ton recordset : rst.Open "Select [selection] from
",cnx,...

cnx est la connexion à ta base Access (là je suis pas sûr de moi) :
dim cnx as Connection
set cnx = [je ne sais plus]

ensuite

rst.MoveFirst (première de ta table)
[ta cellule] = rst.Fields("[le nom de ton champ]")

pour tout mettre dans ta feuille :

dim ligne, col as Integer

rst.MoveFirst
do
ligne = 1
for col = 1 to [nombre de champ]
Cells (ligne, col) = rst.Fields(col)
ligne = ligne + 1
rst.MoveNext 'ligne suivante de la table Access
Next col
Loop until rst.EOF 'jusquà la fin de ta table

rst.close
Set rst = Nothing
Set cnx = Nothing

Je dis pas que tout est bon mais voilà l'idée à suivre.

Sinon t'aurais pas une idée pour mes macros sous Excel 2000
(question posée aujourd'hui vers 10h45)
Merci
 
M

Michel_M

Guest
Salut Remi et Bobby

J'avoue que je ne comprends pas ta demande car L 'enregistreur de macro fonctionne pour aller chercher des données sur Access

Je viens d'essayer en récupérant en cellule F5 le champ " nom" (triés dans l'ordre)et le champs "prénom" d'une database access "cheptel.mdb"

Fais un essai sans enregistrer en effectuant la commande "données-créer une requete" et en suivant les consignes de l'assistant msquery

Bobby montre la méthode en programmation mais si tu débutes en VBA et si tu n'a pas des rudiments de SQL, il se pourrait que…

Voici ce qu'a écrit l'enregistreur

Sub Macro1()
'
' Macro1 Macro
' Macro enregistrée le 21/01/2004 par Michel_M
'

'
With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
"ODBC;DSN=MS Access Database;DBQ=c:\mes documents\archives\cheptel\cheptel.mdb;DefaultDir=c:\mes documents\archives\cheptel;DriverId=" _
), Array("25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;")), Destination:= _
Range("F5"))
.CommandText = Array( _
"SELECT T_stagiaires.Nom, T_stagiaires.Prénom" & Chr(13) & "" & Chr(10) & "FROM `c:\mes documents\archives\cheptel\cheptel`.T_stagiaires T_stagiaires" & Chr(13) & "" & Chr(10) & "ORDER BY T_stagiaires.Nom" _
)
.Name = "Lancer la requête à partir de MS Access Database"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:=False
End With
End Sub


voila, voila

Bon courage, amitiés
Michel
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…