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

Résolu
cs_nico39 Messages postés 56 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 4 octobre 2006 - 8 sept. 2006 à 09:22
cs_nico39 Messages postés 56 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 4 octobre 2006 - 8 sept. 2006 à 11:25
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

cs_nico39 Messages postés 56 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 4 octobre 2006
8 sept. 2006 à 11:25
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... 
3
Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 7
8 sept. 2006 à 09:42
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
0
BasicInstinct Messages postés 1470 Date d'inscription mardi 5 février 2002 Statut Membre Dernière intervention 20 octobre 2014 12
8 sept. 2006 à 09:43
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
0
tbbuim1 Messages postés 940 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 3 février 2011 9
8 sept. 2006 à 09:47
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
0
Rejoignez-nous