[SQL/VBA]: Problème entre Access et Excel

Résolu
Messages postés
56
Date d'inscription
vendredi 4 mars 2005
Statut
Membre
Dernière intervention
4 octobre 2006
-
Messages postés
56
Date d'inscription
vendredi 4 mars 2005
Statut
Membre
Dernière intervention
4 octobre 2006
-
Bonjour à tous,

mon problème est le suivant: je souhaiterais utiliser sous Excel une requête SQL exécutée sous Access.
Sous Access, la requête fonctionne normalement et me renvoie un tableau d'environ 18000 lignes.
Sous Excel, en VBA, j'ouvre avec succès la connexion avec la base de données, je réussis à ouvrir un Recordset en utilisant la même requête SQL que sous Access,  mais malheureusement, le Recordset sous Excel est vide (propriété .RecordCount = 0)!

Y a-t-il une différence de langages entre les requêtes SQL sous Access et celles sous Excel ???
Quelles pourraient être les sources d'erreurs ?

Merci d'avance pour toutes vos suggestions/solutions.

Amateurement vôtre... 

4 réponses

Messages postés
56
Date d'inscription
vendredi 4 mars 2005
Statut
Membre
Dernière intervention
4 octobre 2006

Re-Bonjour,

Merci à tous.
Je viens en fait de découvrir mes erreurs: la même requête SQL sous Access et sous Excel est écrite selon des syntaxes légères différentes. Ces différences passent a priori inapercues, même pour la machine, mais font planter la macro. Par exemple, dans une requête SQL sous Access, les chaînes de caractères sont écrites entre " " , alors que sous Excel, cela doit être entre ' '. De même, pour préciser la fin indéfinie d'une chaîne de caractère sous Access, on utilise * (ex: tous les noms commencant par mi: mi*), alors que sous Excel, cela devient: % (donc, dans mon exemple: mi%).
Ces petites différences, imperceptibles pour une machine, peuvent parfois engendrer des grandes prises de têtes!!!

Molenn: Merci encore pour cette solution. Je ne savais pas qu'une fois exportées d'Access, les valeurs dans Excel pouvaient être actualisées. Je voulais travailler directement dans Excel, pusique je devais ensuite à partir de ces données faire des calculs (statistiques,..) et les représenter graphiquement, ce qui est moins pratique sous Access, à moins de bien gérer les formulaires...

BasicInstinct, tbbuim1 : j'ouvrais bien mon Recordset de la manière dont BasicInstinct l'a décrit. Donc il fonctionnait correctement, et sa propriété .RecordCount aussi.: c'était simplement la requête SQL qui n'était pas correctement formulée. Donc il ne trouvait rien et me renvoyait un Recordset vide. Voilà.

Encore merci pour vos conseils.

Amateurement vôtre... 
Messages postés
797
Date d'inscription
mardi 7 juin 2005
Statut
Membre
Dernière intervention
23 février 2011
7
Petite question qui ne t'apportera pas de réponse, mais qui pourra peut être t'aider : Pourquoi sous EXCEL, tu t'embêtes à recréer ta requête ?

Si ta requête SQL est crée sous ACCESS et fonctionne, il te suffit de l'importer directement dans EXCEL (Menu Données\Données externes\Importer un fichier). Tu vas chercher ta base ACCESS et le nom de la requête.
Une liaison sera crée et si tu modifiées la base de données, il te suffira d'actualiser les données dans EXCEL pour récupérer les infos.

Molenn
Messages postés
1471
Date d'inscription
mardi 5 février 2002
Statut
Membre
Dernière intervention
20 octobre 2014
12
salut

selon ta facon d'ouvrir ton recordset, la propriete recordcount n'est pas géré.

essaie :

dim rs as new recordset
rs.cursorlocation=aduseclient
rs.open "select....."
msgbox rs.recordcount

BasicInstinct
Messages postés
940
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
3 février 2011
9
ou alors tu peux toujours lancer une requête qui calcule le nombre de ligne de ta requête
du genre:

select count(*) from tarequête
TBBUIM