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
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Lancement requête Access depuis Excel

Bonjour,


Exemple :
Code:
Sub ReqParamDAO()
    Dim bd As DAO.Database
    Dim rs As Recordset
    Set bd = OpenDatabase(ThisWorkbook.Path & "\Access2000.mdb")
    Set q = bd.QueryDefs("R_param_ville")
    q.Parameters("nomville") = "paris"
    Set rs = q.OpenRecordset
    Do While Not rs.EOF
       MsgBox rs!nom_client
       rs.MoveNext
    Loop
End Sub

JB
Formation Excel VBA JB
 

g6k

XLDnaute Nouveau
Re : Lancement requête Access depuis Excel

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



J'avais effectué des recherches et j'avais trouvé des infos sur "query" et "ADO".
Mais je ne sais pas comment m'y prendre!

Pour ce qui est de la création de nouvelle requête par l'intermédiaire de l'onglet "Données", j'avais tenté : Données=> Données externes => créer une nouvelle requête=> puis j'avais choisi ma base de données => j'avais choisi ma requête Access => et message d'erreur "trop peu de paramètre".

De plus, j'ai l'impression qu'une telle manipulation ne prend pas en compte les paramètres de ma requête Access. Ou peut-être que je me trompe quelque part...!
Qu'en pensez-vous?
 

tototiti2008

XLDnaute Barbatruc
Re : Lancement requête Access depuis Excel

Bonjour à tous,

à priori, il faut se baser sur une requête Access sans paramètres et créer les paramètres dans Query. Il sera ensuite possible de lier les paramètres de Query à des cellules Excel...

Edit : ceci pour une solution sans VBA, avec VBA, évidement, d'autres possibilités s'ouvrent comme nous le propose l'ami Boisgontier ;)
 
Dernière édition:

g6k

XLDnaute Nouveau
Re : Lancement requête Access depuis Excel

Bonjour à tous,

à priori, il faut se baser sur une requête Access sans paramètres et créer les paramètres dans Query. Il sera ensuite possible de lier les paramètres de Query à des cellules Excel...

Edit : ceci pour une solution sans VBA, avec VBA, évidement, d'autres possibilités s'ouvrent comme nous le propose l'ami Boisgontier ;)


Merci beaucoup pour toutes vos indications!

J'ai essayé d'adapter la macro de BOISGONTIER de la manière suivante, pour un premier essai :
Sub ReqParamDAO()

Dim bd As DAO.Database
Dim rs As Recordset

Set bd = OpenDatabase(ThisWorkbook.Path & "\Access2000.mdb")
Set q = bd.QueryDefs("JD - CA par fournisseur (hors taxes)") 'nom de ma requête
q.Parameters("Nom du Fournisseur") = "*" 'joker signifie tous les fournisseurs q.Parameters("Date début période") = "01/01/2008"
q.Parameters("Date fin période") = "31/12/3008"
Set rs = q.OpenRecordset


End Sub

Mais dès le premier "Dim" j'ai un message "erreur de compilation : type défini par l'utilisateur non défini"

C'est exactement de cette manière que je voudrais faire!!! Lancer la requête Access avec vba!!! Ce serait super!

Pouvez vous m'aider à correctement écrire la macro??
Est ce que je dois changer quelque chose à la ligne
Set bd = OpenDatabase(ThisWorkbook.Path & "\Access2000.mdb")
Est ce que là je dois bien mettre le nom de la requete Access??
Set q = bd.QueryDefs("JD - CA par fournisseur (hors taxes)")

Merci d'avance
g6k
 

tototiti2008

XLDnaute Barbatruc
Re : Lancement requête Access depuis Excel

Re,

Moi, à ta place, j'essaierais sans VBA pour commencer et pour voir si ça ne suffit pas. Sinon, pour le bug du Dim, il faut activer une référence dans l'éditeur visual Basic :
Menu Outils - Références et cocher Microsoft DAO Object 3.6 Library

le OpenDatabase doit contenir le chemin complet de ta base Access
le QueryDefs doit bien contenir le nom de ta requête
le joker "*" ne fonctionnera que si ton paramètre Nom du fournisseur est précédé d'un Comme (Like)
Pour les dates, je ne sais pas trop mais j'essaierais un truc du type

q.Parameters("Date début période") = CDate("01/01/2008")
 

g6k

XLDnaute Nouveau
Re : Lancement requête Access depuis Excel

Re,

Moi, à ta place, j'essaierais sans VBA pour commencer et pour voir si ça ne suffit pas. Sinon, pour le bug du Dim, il faut activer une référence dans l'éditeur visual Basic :
Menu Outils - Références et cocher Microsoft DAO Object 3.6 Library

le OpenDatabase doit contenir le chemin complet de ta base Access
le QueryDefs doit bien contenir le nom de ta requête
le joker "*" ne fonctionnera que si ton paramètre Nom du fournisseur est précédé d'un Comme (Like)
Pour les dates, je ne sais pas trop mais j'essaierais un truc du type

q.Parameters("Date début période") = CDate("01/01/2008")



Merci beaucoup, je vais essayer tout ça cet après midi!!

Le chemin complet de ma base c'est : R:\DOP\ACH\INT\Reporting\Bases ACCESS
et le nom de la base c'est ACCESS-MAXPROD-ACHATS
Je peux pas écrire ça après Set bd = OpenDatabase
Comment dois-je faire?
 
Dernière édition:

g6k

XLDnaute Nouveau
Re : Lancement requête Access depuis Excel

Salut,

Personnellement j'utiliserais une requête SQL basée sur ta requête ACCESS et une boucle sur ton fichier pour générer les requêtes pour chaque ligne.

Le problème c'est que SQL pour moi c'est du chinois. Je me débrouille en vba mais le reste c'est difficil.
Est-ce que tu penses que pour un débutant c'est faisable? Si oui je veux bien essayer!
Merci
 

RaceX

XLDnaute Junior
Re : Lancement requête Access depuis Excel

Dans ACCESS, lorsque tu ouvre ta requête, tu peu passer en mode SQL pour récupérer le code (l'icône Mode Création, Mode Feuille de Données, etc). Si tu pouvez nous poster ça + quelques lignes de ton fichier Excel, peut être pourrait on essayer de t'aider à créer la macro.
 

g6k

XLDnaute Nouveau
Re : Lancement requête Access depuis Excel

Dans ACCESS, lorsque tu ouvre ta requête, tu peu passer en mode SQL pour récupérer le code (l'icône Mode Création, Mode Feuille de Données, etc). Si tu pouvez nous poster ça + quelques lignes de ton fichier Excel, peut être pourrait on essayer de t'aider à créer la macro.

Je ne peux pas poster la base de données, ni la requête, les informations contenues ne doivent pas être divulguées de la sorte.
Et je ne trouve pas l'icone Mode. J'ai la version 2003 d'Access Peut-être est-ce pour cela?


Merci
 

RaceX

XLDnaute Junior
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:
 

Pièces jointes

  • RequeteAccess.zip
    7.6 KB · Affichages: 422

Discussions similaires

Réponses
3
Affichages
780

Statistiques des forums

Discussions
312 488
Messages
2 088 840
Membres
103 972
dernier inscrit
steeter