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

recupérer des données d'access

  • Initiateur de la discussion Initiateur de la discussion al
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

A

al

Guest
Bonjour à tous

je cherche le code pour ouvrir à partir d'excel une base de donnée access et importer des données.
merci

à bientôt

al
 
Bonsoir Al,

Ah!, Ah! un utilisateur d'Access
Pour importer des données à partir d'un fichier Access vers Excel, c'est très simple :
tu ouvres un classeur Excel
Tu choisis dans le menu, données, données externes, importer des données, une boite de dialogue apparaît, tu réponds aux différentes questions (Dans quelle cellule la première donnée doit-elle s'inscrire, tes données sont-elles issues d'une table, d'une requête, laquelle, etc ...) et tout se fait tout seul
Maintenant si tu veux le code correspondant il te suffit de créer (sous Excel) une nouvelle macro, d'effectuer la procédure et de lire le code qui sera associé à cette nouvelle macro
En cas de problème, rappellle moi
Léa
 
bonjour léa

d'abord merci de ta réponse.

j'ai déjà fait exactement ce que tu dis, mon pb est que je desire recupérer avec une boucle for each plusieurs données différentes se situant dans une base access.
or l'objet Querytables possède une propriété "command.text" ou "sql" selon les versions excel qui n'accepte pas de variable même si cette dernière reproduit une chaine texte identique à celle utilisée par la macro.

à bientôt

al
 
OK,

Donc tu ne veux pas résupérer une table (ou une requête) complète mais certains enregistrement de cette table (ou requête) qui répondent à un critère que tu imposes
Est-ce bien cela ?
Léa
 
bonsoir Al, Léa and so one

Hé bé, Quand on parle d'access-excel notre amie Léa arrive suivi du toujoursenretard Michel et c'est bien sympa. Ca va Léa depuis ce WE? Merci pour ta réponse très gentille.

Ci joint une démo que j'avais envoyé sur THE forum en juin ou juillet 2004 et montrant comment créer sur Excel les requêtes pour l'import de données Access et ce en utilisant DAO. En prime il y a la même punition avec Word...

Le + efficace et Hachement rapide est d'utiliser SQL mais la syntaxe est ch... SQL=Séquelle suivant un vieux slogan.

Si tu cherches de l'aide sur DAO et SQL, il faut chercher dans l'aide Access (et bien sûr le forum si tu sèches toujours...)

N'oublie pas de cocher la ref "Microsoft DAO 3.6 library" (texte exact dans PJ)
dans le menu "outils" de l'éditeur VBA

Allez, le marchand de sable vient de passer

A+
Michel
 
Bonjour Michel,

Hier soir j'avais fermé les lumières, vidé les poubelles et fermé les fenêtres comme on me l'avais conseillé au cas où je traînerais un peu tard sur le Forum, mais je ne mettais pas rendu compte que tu étais encore là.
En effet je me sens plus à l'aise avec Access, mais les tournures d'excel (tout au moins en VBA) commencent à entrer
Pour ce qui est d'une importation à partir d'Access je suis d'accord avec toi, mais comme tu le dis il ne faut pas, si on utilise D.A.O., oublier d'activer la ref "Microsoft DAO 3.6 library. C'est pourquoi lorsque je donne un petit coup de pouce lors d'une question je préfère utiliser SQL. Certes c'est ch..... car le moindre oubli ou erreur de syntaxe, fait foirer ton code et de plus quand tu fais une erreur dans ta ligne sql qui bien souvent est complexe, c'est la croix et la bannière pour la trouver.
Toutefois SQL a un avantage pour les novices, il suffit qu'avec l'assistant des créations de requête, ils créent leur requête et lisent ensuite le code SQL pour pouvoir le transcrire.
Voila quelques petites réflexions personnelles qui bien sur n'engagent que moi

Aujourd'hui j'ai une journée assez chargée (bien qu'elle ne commence qu'à 12 heures) donc nous n'aurons pas beaucoup l'occassion de nous croiser sur le Forum. Mais on se retrouvera bien "un jour ou l'autre".

Léa
 
Bonjour al,

Pour donner suite à ta question, il me faut quelques renseignements sur ta base Access
Que veux tu importer vers Excel : une table ou une requête
Veux tu faire un "tri" avant l'importation ? Quel tri ? sur quel(s) champ(s) ? et selon quel(s) critère(s) ?

En fonction de ta réponse j'étudierai ce problème, mais pas avant ce soir
Léa
 
Bonsoir

un petit exemple à adapter pour interroger une base access en sql et integrer les infos obtenues dans excel.

http://www.excel-downloads.com/html/French/forum/read.php?f=1&i=140147&t=140021


A+
 
salut Léa et tt le monde

voici des informations sur la bdd elle est constituée d'une seul table qui elle même est composée de 6 champs "N°d'article, N° de facture, Montant etc..".
cette table comporte plus de sept cent mille lignes d'enregistrements.
compte tenu du nombre d'enregistrements il n'est pas aisé d'utiliser excel.
mon souhait serait de pouvoir faire des requêtes à partir d'excel en selectionnant un certain nombre de N°d'article (il y en a 250 environ).
Pour cela j'ai enregistré une macro d'impotation de données externes elle fonctionne très bien à condition de modifier la chaine sql c a d rentrer a chaque fois le n° d'article à la main.
j'ai essayer de mettre l'expression sql dans une variable excel la refuse.

voilà tout

à bientôt

al
 
Bonsoir Al,

C'est parfait tout cela
Pour répondre à ton désir il suffit de paraméter le "n° d'article" et de demander à l'utilisateur de taper le numéro d'article recherché dans un InputBox par exemple
Envoie moi ton expression sql et pourquoi pas ton bout de code complet, j'y remédierais
Léa
 
salut Léa

voici le code sur lequel je galère


Sub import()

Dim bd As Database ' nom de la table "req" les noms de champs "fact,nb,article,etc..
Dim donn As Recordset
Dim chem As String
Dim etab As Object

chem = ActiveWorkbook.Path
Set bd = DBEngine.OpenDatabase(chem & "\connect2.mdb")
Set etab = Sheets("feuil1").Range("a1:a3") ' articles que je veux filtrer et importer en excel

For Each etab In etab
sSQL = """SELECT article,fact,nb FROM req WHERE article ='" & etab & "'"

Set donn = bd.OpenRecordset(sSQL)
Worksheets.Add.Name = etab
Range("a2").CopyFromRecordset donn
Next

donn.Close
bd.Close

End Sub

voici le message d'erreur que je reçois
le moteur de base de données jet ne trouve pas la table ou la requête répondant au nom "req"

à bientôt
 
essaie ceci

sSQL = "SELECT article.req,fact.req,nb.req FROM req WHERE (article.req ='" & etab & "');"

sans certitude car je n'ai pas pu tester

sinon je peux te prposer ceci, c'est le mode de connexion que j'utilise habituellement :

With ActiveSheet.QueryTables.Add(Connection:=Array("OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & chem & "\connect2.mdb;"), Destination:=Range("A1"))

.Sql = Array("SELECT article.req,fact.req,nb.req FROM req WHERE (article.req ='" & etab & "');")
.CommandType = xlCmdTable
.CommandText = Array("RqClasses")
.FieldNames = True
.Refresh BackgroundQuery:=False
End With

Cordialement
léa
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
13
Affichages
491
  • Question Question
Microsoft 365 Power Query
Réponses
7
Affichages
297
  • Question Question
Réponses
12
Affichages
354
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…