exportation Access vers Excel problème

akmer

XLDnaute Junior
Bonjour,
Je suis entrain de faire des tests pour faire appel à des données Access depuis Excel.
Il y a un problème qui est le suivant:
Je peux faire appel a une requête où il ne faut pas définir de paramètre, cependant dès que je fais appel à une requête où normalement sous Access il faut entrer dans un boite de dialogue un paramètre, les donnés n'arrivent pas sous Excel. Je pensais que sous Excel j'aurais la même boite de dialogue que lorsque je suis sous Access et que j'aurais pu saisir le paramètre voulu.
J’espère avoir été le plus clair possible et que quelqu'un pourra m'aider
Merci d’avance
 

Caillou

XLDnaute Impliqué
Re : exportation Access vers Excel problème

Bonjour,

un début peut-être :
Dim db As DAO.Database
Dim rq As DAO.QueryDef

Set db = DBEngine.OpenDatabase("Commandes Duval.mdb")
Set rq = db.QueryDefs("rq_Param_Total d'une commande")
rq.Parameters(0).Value = InputBox("Valeur du paramètre")

Nb : Parameters(0) correspond au 1er paramètre de la requête et peut être remplacé (je pense) par Parameters("Nom du paramètre")

Bon courage,

JP
 

akmer

XLDnaute Junior
Re : exportation Access vers Excel problème

Merci de votre aide, mais j'ai essayé votre code vba et cela n'a pas marché.
Voila ce que j'ai mis

Sub exportation3()

Dim db As DAO.Database
Dim rq As DAO.QueryDef

Set db = DBEngine.OpenDatabase("Z:\projet 2 programme archivage\ENGAGE.mdb")
Set rq = db.QueryDefs("11)état décision en rentrant parametre").Sql
rq.Parameters(0).Value = InputBox("Valeur du paramètre")

End Sub

Et voila ma Sql (il y a 2 paramétre) :

SELECT LIGNE.CLINOM, LIGNE.CLIACT, LIGNE.CLICOM, LIGNE.AGENUM, LIGNE.Type_Client, LIGNE.Not_OMERIS, LIGNEDEMANDE.DEMNUM, SOUSDEMANDE.SOUSLIB, LIGNEDEMANDE.LDSOM, LIGNEDEMANDE.LDSIGN, LIGNE.DECNUM, LIGNE.AUTNUM, LIGNE.TRAITNOM, LIGNE.DECDAT
FROM (LIGNE INNER JOIN LIGNEDEMANDE ON LIGNE.LIGNUM = LIGNEDEMANDE.LIGNUM) INNER JOIN SOUSDEMANDE ON LIGNEDEMANDE.SOUNUM = SOUSDEMANDE.SOUNUM
WHERE (((LIGNE.DECDAT)>=[Entre le] And (LIGNE.DECDAT)<=[Et le]));

Si vous pouviez m'apporter encore plus d'aide je vous serai très reconnaissant.
 

Caillou

XLDnaute Impliqué
Re : exportation Access vers Excel problème

Re,

Quel est l'objectif de ce programme ? que se passe t-il dans Excel avec la requête ?

car pour le fait qu'il y ait 2 paramètres, tu peux écrire :
rq.Parameters(0).Value = InputBox("Entre le :")
rq.Parameters(1).Value = InputBox("Et le :")

par contre sur la ligne
Set rq = db.QueryDefs("11)état décision en rentrant parametre").Sql
il ne faut pas le .sql final

JP
 

akmer

XLDnaute Junior
Re : exportation Access vers Excel problème

Je viens d'essayer votre proposition mais cela ne marche pas.
L'objectif de ce programme et de faire appel à une requéte sous access qui normalement quand on n'est sous access il faut rentrer des 2 paramétre(date de début et de fin).
Les données répondant à cette requéte doivent allez dans la feuil1.
 

Caillou

XLDnaute Impliqué
Re : exportation Access vers Excel problème

si, cela doit fonctionner (il n'y à pas de raison!)

1. soit une base access nommée "Commandes Duval" contenant une requête paramétrée nommée "rqParam"
correspondant au code SQL suivant:
SELECT tblCommandes.IdCde, tblCommandes.DateCde
FROM tblCommandes
WHERE (((tblCommandes.DateCde)>=[Entre le] And (tblCommandes.DateCde)<=[Et le]));

2. dans un module de mon classeur excel, j'ai le code suivant :
Sub exportation2()

Dim db As DAO.Database
Dim rq As DAO.QueryDef
Dim rs As DAO.Recordset
'connexion à la bdd et à la requête
Set db = DBEngine.OpenDatabase("E:\Commandes Duval.mdb")
Set rq = db.QueryDefs("rqParam")
'spécification des valeurs des paramètres
rq.Parameters(0).Value = InputBox("Entre le ")
rq.Parameters(1).Value = InputBox("Et le ")

'accès aux données de la requête
Set rs = rq.OpenRecordset

'ci-dessous une boucle pour balayer tous les enregistrements du recordset (de la reqête paramétrée)
'l'exemple ci-dessous est a adapter en fonction du nbre de colonnes à récupérer, ...
'(là je recupére le 1er champ de la requête et je dépose dans la colonne A)
Range("A1").Select
Do While Not rs.EOF
ActiveCell.Value = rs.Fields(0)
ActiveCell.Offset(1).Select
rs.MoveNext
Loop

End Sub

3. j'associe le code à un bouton sur la feuille où je veux déposer les données

N'hésites pas, si je peux encore t'aider

JP
 

akmer

XLDnaute Junior
Re : exportation Access vers Excel problème

Merci beaucoup effectivement cela marche mieu, mais il fallait activer DAO dans outils- référence, cependant un petit problème se pose (surement car je suis débutant et j'ai mal compris).
La 1ére colonne de donnée se copie bien sous Excel, cependant je n'arrive pas à faire copier toutes les colonnes de la requétes.
J'ai écris le code suviant mais cela ne marche pas car sa ne copie seulement la 1ér colonne

'ci-dessous une boucle pour balayer tous les enregistrements du recordset (de la reqête paramétrée)
'l'exemple ci-dessous est a adapter en fonction du nbre de colonnes à récupérer, ...
'(là je recupére le 1er champ de la requête et je dépose dans la colonne A)

Range("A7").Select
Do While Not rs.EOF
ActiveCell.Value = rs.Fields(0)
ActiveCell.Offset(1).Select
rs.MoveNext
Loop

Range("B7").Select
Do While Not rs.EOF
ActiveCell.Value = rs.Fields(1)
ActiveCell.Offset(1).Select
rs.MoveNext
Loop

Merci pour ton aide précieuse.
Et si cela ne te dérange quand tous cela marchera j'aurai peut être d'autre question pour des petites améliorations
 

Caillou

XLDnaute Impliqué
Re : exportation Access vers Excel problème

Re,

C'est normal que cela ne marche pas, car la 1ere boucle parcoure les enregistrements jusqu'à la fin (EOF) donc lorque la 2ème boucle arrive on est déjà à la fin du jeu d'enregistrements.
Ce qu'il faut faire, c'est tout recupérer en une seule boucle (c'est plus élégant et plus rapide).
Ce qui donne à peu près ça :

Range("A7").Select
Do While Not rs.EOF 'Répéter tant qu'on est pas à la fin
ActiveCell.Value = rs.Fields(0) 'on écrit le contenu du champ 1
ActiveCell.Offset(0,1).Value = rs.Fields(1) 'à droite celui du champ 2
ActiveCell.Offset(0,2).Value = rs.Fields(2) '2 colonne à droite celui du champ 3
ActiveCell.Offset(1).Select 'lorqu'on a ecrit tout on descend
rs.MoveNext 'on passe à l'enreg suivant (access)
Loop 'et on recommence

Pour faire encore plus élégant, on pourrait aussi faire une boucle sur les champs à l'intérieur de la boucle sur les enregistrements.


Bon courage, tiens moi au courant

JP
 

akmer

XLDnaute Junior
Re : exportation Access vers Excel problème

Ta formule marches, merci beaucoup,
Voila ce que j'ai rajouté car yavé 13 colonnes ds la requéte
Range("A7").Select
Do While Not rs.EOF 'Répéter tant qu'on est pas à la fin
ActiveCell.Value = rs.Fields(0) 'on écrit le contenu du champ 1
ActiveCell.Offset(0, 1).Value = rs.Fields(1) 'à droite celui du champ 2
ActiveCell.Offset(0, 2).Value = rs.Fields(2) '2 colonne à droite celui du champ 3
ActiveCell.Offset(0, 3).Value = rs.Fields(3)
ActiveCell.Offset(0, 4).Value = rs.Fields(4)
ActiveCell.Offset(0, 5).Value = rs.Fields(5)
ActiveCell.Offset(0, 6).Value = rs.Fields(6)
ActiveCell.Offset(0, 7).Value = rs.Fields(7)
ActiveCell.Offset(0, 8).Value = rs.Fields(8)
ActiveCell.Offset(0, 9).Value = rs.Fields(9)
ActiveCell.Offset(0, 10).Value = rs.Fields(10)
ActiveCell.Offset(0, 11).Value = rs.Fields(11)
ActiveCell.Offset(0, 12).Value = rs.Fields(12)
ActiveCell.Offset(0, 13).Value = rs.Fields(13)
ActiveCell.Offset(1).Select 'lorqu'on a ecrit tout on descend
rs.MoveNext 'on passe à l'enreg suivant (access)
Loop 'et on recommence

on pourrait aussi faire une boucle sur les champs à l'intérieur de la boucle sur les enregistrements: que voulait tu entendre par ceci??

Est-il possible de mettre un masque de saisie ( c'est à dire de taper une date valide dans les inputbox car on peut taper n'importe quoi)

Est il possible de régler la taille de la inputbox et faire des modif "esthétique"??

Quand on clic sur annuler sur la 1ére inputbox cela ouvre la 2éme inputbox, serait il possible que qd on clic sur ce bouton annuler que sa ne fase pas apparaitre la 2ème inputbox et que sa ferme donc que la 1ére?

Encore merci pour votre aide
 

Caillou

XLDnaute Impliqué
Re : exportation Access vers Excel problème

Non les inputbox sont des boites de dialogues intégrées et ne sont pas modifiables.
Par contre tu peux créer dans Visual Basic Editor un formulaire que tu vas dessiner et programmer à ta convenance.
Pour celà, Insertion/Userform dans Visual Basic Editor
Je peux t'aider vers 17heures si tu veux

JP
 

Caillou

XLDnaute Impliqué
Re : exportation Access vers Excel problème

Voir dans le fichier joint un petit exemple utilisant un userform et quelques tests.

Tu as juste le nom de la bdd, le nom de la requete et la cellule de départ à adapter ; le reste devrait fonctionner (j'ai rajouté une boucle pour prendre tous les champs de la requête)

A te lire

JP
 

Pièces jointes

  • ExcelAccess.zip
    14.7 KB · Affichages: 78

akmer

XLDnaute Junior
Re : exportation Access vers Excel problème

Veuillez m'excuser pour hier soir, j'ai eu des gros problème de connexion internet :)
Je ne peux pas ouvrir les fichiers winzip, pourriez vous me mettre un lien permettant d'ouvrir ou d'enregistrer directement le fichier que vous souhaité m'envoyer ou de le mettre sur Accueil de Cjoint.com.
Merci encore pour votre aide, je suis disponible toute la journée jusqu'a 4h environ
 

Discussions similaires

Réponses
10
Affichages
306
T
  • Résolu(e)
Microsoft 365 pb effacement macro
Réponses
8
Affichages
368
Themax
T

Statistiques des forums

Discussions
314 586
Messages
2 110 963
Membres
110 985
dernier inscrit
fabienpuyba50