Lancement requête Access depuis Excel

g6k

XLDnaute Nouveau
Bonjour,
Je suis en stage et je dois créer un programme assez complexe..
Je vais essayer d'expliquer mon problème le plus clairement possible:

Je dispose de :
=>un fichier excel comprenant 3 colonnes: "numéro fournisseur" ; "date de départ" et "date de fin".

=>une base de données Access très volumineuse comprenant un chiffre d'affaire pour chaque numéro fournisseur

=>une requête Access qui trie la base de donnée selon 3 paramètres(ou critères) : lorsqu'on lance cette requête, il faut entrer un numéro fournisseur, une date de départ et une date de fin

Mon objectif : Excel lance la requete Access existante et entre les paramètres présents sur le fichier Excel (numéro,dates). UNE requete access aboutit à UN chiffre d'affaire. Il faut donc que excel répète la manipulation pour chaque ligne de mon fichier.
J'obtiendrais au final un fichier excel pour lequel chaque ligne(soit chaque numéro) correspondrait à un chiffre d'affaire (extrait sous access)
C'est difficil!!
Je pense que pour répéter le lancement de la requete il faudra faire un peu de vba. Mais pour l'instant j'aimerais déjà savoir lancer la requete paramétrée.

Merci d'avance pour l'intérêt que vous porterez à ma demande. J'ai vraiment besoin d'aide!
:eek:
g6k
 

RaceX

XLDnaute Junior
Re : Lancement requête Access depuis Excel

Re,

Moi je reste convaincu qu'on pourrait faire des choses sympathiques sans VBA et sans SQL tordu, simplement en utilisant les fonctionnalités des données externes et de MS Query, mais bon...

Salut,

Tu as probablement raison mais je n'ai jamais vraiment utilisé cette fonctionnalité. Pour ma part je n'utilise SQL dans VBA que depuis quelques mois mais j'en apprécie vraiment les possibilités et la simplicité (une fois que l'on a compris le principe).

Bonne journée à tous.
 

g6k

XLDnaute Nouveau
Re : Lancement requête Access depuis Excel

Re,

Sans le code SQL de la requête, pas évident de pouvoir t'aider efficacement.

Voilà tout de même un début de réponse:



Je n'arrive pas à ouvrir le document. Mais peu importe car j'ai quelque chose qui fonctionne, écris en vba sous excel, que je comprend d'avantage, alors je vais faire avec ça!
Mon problème c'est que la ligne en rouge présente une erreur..
Quelqu'un sait-il pourquoi cette ligne bloque??
Je pense que le problème est lié à la déclaration de la variable "rs", j'ai essayé de la mettre entre les (), .. mais c'est pas ça.

Sub RequeteAccess(d1, d2, n$)

Dim bd As DAO.Database
Dim rs As Recordset

Set bd = OpenDatabase("R:\DOP\ACH\INT\Reporting\Bases ACCESS\Copie_ACCESS-MAXPROD-ACHATS.mdb")
Set q = bd.QueryDefs("JD - CA par fournisseur (hors taxes)") 'nom de ma requête

q.Parameters("[Nom du Fournisseur (en MAJUSCULES) ?]") = "n$"
q.Parameters("[Date début période ?]") = "d1"
q.Parameters("[Date fin période ?]") = "d2"

Set rs = q.OpenRecordset
Cells(i, 7) = rs.Fields("CA_hors_taxes").Value
End Sub

sachant que ceci est une sous procédure et que les variables i, n$, d1 et d2 sont définies dans la procédure de départ.
Merci beaucoup
ps: j'ai eu quelques pb de mot de passe, alors je n'ai pas pu répondre avant.
g6k
 

tototiti2008

XLDnaute Barbatruc
Re : Lancement requête Access depuis Excel

Bonjour,

d1, d2 et n$ étant des variables, tu ne peux pas mettre de guillemets autour de leurs noms. et de mémoire, les paramètres se définissent avec leur nom mais sans crochets. un truc comme ça, je pense :

q.Parameters("Nom du Fournisseur (en MAJUSCULES) ?") = n$

et idem pour les 2 autres.
 

g6k

XLDnaute Nouveau
Re : Lancement requête Access depuis Excel

Bonjour,

d1, d2 et n$ étant des variables, tu ne peux pas mettre de guillemets autour de leurs noms. et de mémoire, les paramètres se définissent avec leur nom mais sans crochets. un truc comme ça, je pense :

q.Parameters("Nom du Fournisseur (en MAJUSCULES) ?") = n$

et idem pour les 2 autres.

C'est vrai, les crochets sont inutiles ;merci. Mais si je lance la macro avec F8, c'est bien la ligne rouge qui bloque!
Je ne comprend pas pourquoi, elle est censé simplement afficher le résultat!
Qu'est-ce que vous en pensez?
Merci
 

g6k

XLDnaute Nouveau
Re : Lancement requête Access depuis Excel

Re,

s'il ne comprend pas les paramètres, il y a des chances que ton champ ait la valeur Null et on ne peut pas écrire Null dans une cellule, je crois.

La valeur null?? Cela signifie que la cellule de la colonne CA_hors-taxes est vide? C'est ça?
Pourtant quand je lance la requete à la main avec le premier numéro(nom fournisseur) , j'ai bien un CA qui s'affiche : la requete n'aboutit pas à une cellule vide!
?????
 

tototiti2008

XLDnaute Barbatruc
Re : Lancement requête Access depuis Excel

Re,

mais si, comme dans ton code proposé, tu lui demande un chiffre d'affaire entre la date "d1" et la date "d2" pour le fournisseur "n$", comme "n$", "d1" et "d2" sont du texte il ne risque pas de trouver grand chose...
 

g6k

XLDnaute Nouveau
Re : Lancement requête Access depuis Excel

Re,

mais si, comme dans ton code proposé, tu lui demande un chiffre d'affaire entre la date "d1" et la date "d2" pour le fournisseur "n$", comme "n$", "d1" et "d2" sont du texte il ne risque pas de trouver grand chose...

J'ai essayer avec des paramètres "fixes"
Sub RequeteAccess(d1, d2, n$)

Dim bd As DAO.Database
Dim rs As Recordset

Set bd = OpenDatabase("R:\DOP\ACH\INT\Reporting\Bases ACCESS\Copie_ACCESS-MAXPROD-ACHATS.mdb")
Set q = bd.QueryDefs("JD - CA par fournisseur (hors taxes)") 'nom de ma requête

q.Parameters("[Nom du Fournisseur (en MAJUSCULES) ?]") = "CCTA"
q.Parameters("[Date début période ?]") = "01/01/2008"
q.Parameters("[Date fin période ?]") = "31/12/2008"

Set rs = q.OpenRecordset
Cells(i, 7) = rs.Fields("CA_hors_taxes").Value
End Sub

Et c'est toujours la ligne rouge qui bloque!
Les paramètres, la macro les passent quand on exécute ligne par ligne..

Et j'ai fait un autre test, avec juste la sous procédure et là ça fonctionne parfaitement!
Sub ReqParamDAO()

Dim bd As DAO.Database
Dim rs As Recordset

Set bd = OpenDatabase("R:\DOP\ACH\INT\Reporting\Bases ACCESS\Copie_ACCESS-MAXPROD-ACHATS.mdb")
Set q = bd.QueryDefs("JD - CA par fournisseur (hors taxes)") 'nom de ma requête


q.Parameters("[Nom du Fournisseur (en MAJUSCULES) ?]") = "CCTA"
q.Parameters("[Date début période ?]") = "01/01/2008"
q.Parameters("[Date fin période ?]") = "31/12/3008"
Set rs = q.OpenRecordset
Feuil1.Cells(1, 1).Value = rs.Fields("CA_hors_taxes")

End Sub

Pourtant la seule différence c'est le i!
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA!!!
sayé, j'ai trouvé en meme temps que j'écris le message!!
C'est parsk le i il faut le mettre dans les paranthèse de la sous procédure parce qu'il est déclaré dans la procédure de départ
J'essaie et je reviens!!
 
Dernière édition:

g6k

XLDnaute Nouveau
Re : Lancement requête Access depuis Excel

Re,

et quand ça plante, si tu met un espion sur rs.Fields("CA_hors_taxes").Value
ça te donne quoi comme réponse ?

Je ne connais pas les espions
Comment dois-je m'y prendre?

Est-ce que vous sauriez où je peux trouver un pti article qui explique la déclaration de variables dans les () des procédures? Parce que ça j'ai pas bien compris!
Merci

J'ai trouvé pour l'espion, ça me met:
valeur : <hors contexte> et type : variantempty
Qu'est ce que ça veut dire??
 
Dernière édition:

g6k

XLDnaute Nouveau
Re : Lancement requête Access depuis Excel

Je ne connais pas les espions
Comment dois-je m'y prendre?

Est-ce que vous sauriez où je peux trouver un pti article qui explique la déclaration de variables dans les () des procédures? Parce que ça j'ai pas bien compris!
Merci

J'ai trouvé pour l'espion, ça me met:
valeur : <hors contexte> et type : variantempty
Qu'est ce que ça veut dire??


Bonjour à tous,
J'ai réussi à faire ce que je voulais!! Merci beaucoup à tous pour votre aide!

Il me reste un dernier point à traiter :
Mon programme est en réalité un outil de suivi, et je dois inclure dans mon fichier excel une fenêtre qui explique brièvement comment on s'en sert.
Comment puis-je configurer cela. Je parle de fenêtre mais je ne sais pas trop ce qui est possible de faire.
Connaissez-vous quelque chose qui pourrait me convenir??
Merci d'avance
g6k
 

Discussions similaires

Réponses
3
Affichages
781

Statistiques des forums

Discussions
312 505
Messages
2 089 103
Membres
104 032
dernier inscrit
akram.job