OVH Cloud OVH Cloud

requête access dans une cellule

3 réponses
Avatar
charly
Est il possible d'effectuer une requ=EAte dans une base de=20
donn=E9es access =E0 partir d'excel pour obtenir une valeur=20
dans une cellule.

Merci

3 réponses

Avatar
Pierre Fauconnier
Bonjour

Le plus simple, à mon avis, est d'utiliser MSQuery ( Menu Données/Données
externes/Créer une requête )... MSQuery utilise une syntaxe proche de SQL
mais dispose d'un graphisme proche d'access et d'un assistant (moyen...)...

Cela convient-il??


--
Pierre Fauconnier ()
Les sept laids tuent ( Lewis Carol )
Remplacez nospam.nospam par pfi.be pour répondre. Merci

"charly" a écrit dans le message de
news:1fa0801c45829$32cb3c60$
Est il possible d'effectuer une requête dans une base de
données access à partir d'excel pour obtenir une valeur
dans une cellule.

Merci
Avatar
anonymous
oui. Plusieurs méthodes existent. celle-ci march

Attention: il faut que tu référencies la bibliothèque Microsoft Access object Library dans ton projet . Grace à cela , Excel saura reconnaitre tous les mots clés de VBA sous Access et une fois instancié Access, tu pourras parler en Access à VBA

Dim appAccess As Access.Application, rs as recordse

'instancie Access pour Access 200

Set appAccess = CreateObject("Access.Application.9"

'Ouvre la base de données que tu as désignée dans la fenêtre Microsoft Access.IL faut que tu déclares nombase1 comme un chemin complet d'accès à ta base de données .md

appAccess.OpenCurrentDatabase nombase

'ici 2 solutions s'offrent à toi si tu cherches à récupérer des élements via une requête sur une table: soit tu connais le nom de la requête qui existe et qui t'interesse dans le .mdb et tu peux l'appeler directement en déclarant son nom (NOMREQUETE) comme décrit dans l'instruction 1er cas ou bien tu construis ta requête de toute pièce en utilisant une instruction SQL auquel cas les instructions sont celles du 2eme ca

1er cas : Set rs = appAccess.CurrentDb.OpenRecordset(NOMREQUETE, , dbReadOnly

2eme cas: par exempl
nomreqsql="SELECT [Nom de ta table].[Nom du champ N°1 de ta table], [Nom de ta table].[Nom du champ N°2 de ta table] FROM [Nom de ta table] WHERE ((([Nom de ta table].[Nom du champ N°1 de ta table])="ton critère de requete"));
Set rs = appAccess.CurrentDb.OpenRecordset(nomreqsql, , dbReadOnly

'ensuite une fois ouverte ta requête et suivant la nature des élements qu'elle retourn
'inscrire le résultat d'un champ du 1er enregistrement de ton recordse

Thisworkbook.sheets("Feuil1").cells(1,1).value= rs.Fields("Nom du champ N°1 de ta table").valu

'si tu veux récupérer l'ensemble des enregistrements pour 1 champ donné et faire une addition p.e , il te faut faire une boucle sur l'ensemble des enregistrements d'un champ donné

rs.movefirs
D
Thisworkbook.sheets("Feuil1").cells(1,1).value= rs.Fields("Nom du champ N°1 de ta table").value+ Thisworkbook.sheets("Feuil1").cells(1,1).valu
Loop until rs.eof=tru

'ensuite il faut fermer l'ensemble des élements ouverts sous Access et liberer les variable

rs.clos
set rs=nothin

With appAcces
.CloseCurrentDatabas
.Qui
End Wit

set appaccess=nothin

Voilà. J'espère que ça peut t'aider
Avatar
anonymous
j'ai oublié le rs.movenext dans la boucle Do -> Loop de mon message précédent.