Importation dans Excel du résultat d'une requête paramétrée d'Access

cs_pacomo Messages postés 8 Date d'inscription mardi 3 octobre 2006 Statut Membre Dernière intervention 5 octobre 2006 - 3 oct. 2006 à 13:05
kems31 Messages postés 1 Date d'inscription lundi 6 octobre 2008 Statut Membre Dernière intervention 7 octobre 2008 - 7 oct. 2008 à 12:53
Bonjour !

J'ai créé une base de données dans Access pour enregistrée des informations sur plusieurs tables.
Dans le but de créer de faire de belles stats dans Excel, j'ai créé une requête contenant les infos issues de ces différentes tables.
Si, dans Excel, je fais "Données / données externes / importer des données", je récupère mes infos correctement.

Là où ça ne fonctionne plus c'est si je transforme ma requête simple en requête paramétrée (en l'occurence, je ne veux extraire que les informations reçues sur une période précise : date de début / date de fin).
Quand j'essaie d'importer cette requête dans Excel, j'ai un message d'erreur "Trop peu de paramètres. 2 attendus".

J'ose espérer qu'un peu de VBA résoudrait mon problème.

Si quelqu'un peut m'aider / conseiller, ce serait top !!

(j'ai cherché une réponse sur le net et ici bien sûr sans la trouver. Pour Info, je travaille sur Excel et Access 2003).



Pacomo

Vébéiste en herbe

15 réponses

cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
3 oct. 2006 à 13:16
 Bonjour,

Dès que le mot "Date" apparait dans un topic concernant Access, on pense
tout de suite au "#" pour délimiter la variable.

Si tu mets un bout de ton script, accompagné du code erreur généré, tu augmenteras,
fortement,  tes chances de réponses favorables à ton topic.

bonne programmation.
jean-marc
0
cs_pacomo Messages postés 8 Date d'inscription mardi 3 octobre 2006 Statut Membre Dernière intervention 5 octobre 2006
3 oct. 2006 à 14:24
Bonjour Jean-Marc !



Merci pour cette réponse si rapide mais... euh...... je  ne comprends pas !

En fait, je suis débutante de chez débutante et je ne sais pas par où commencer !

Ton "#", je dois l'écrire où ?

Si tu (ou quiconque bien sûr) pouvais me donner un petit coup de pouce, ce serait super sympa.

Peut-être existe-t-il un site pour les "pôves" comme moi ? (je me suis peut-être trompée de forum et celui-ci est peut-être réservée au "pro" avec de vraies bonnes questions ?)

En tous cas, merci d'avance au as où...

Cordialement  




Pacomo

Vébéiste en herbe
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
3 oct. 2006 à 16:15
 Bonjour à tous....

ô que nenni, il y a des questions de tout niveau de difficulté.
Ce Forum est très conviviable.
Le tout, c'est de bien exposer (et cibler) son problème, avec
exemple à l'appui, si possible.
Ne pas oublier de préciser les languages utilisés (versions VB, Access...). 

Et surtout, utiliser le moteur de recherche.
ex:
http://www.vbfrance.com/recherche.aspx?r=Access+date&tr=source

bonne continuation.
jean-marc
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
3 oct. 2006 à 17:04
Pour le coup du #, habituellement lorsque l'on fait référence à un champ au format date dans une requette, il faut encadrer de # la date spécifiée

au lieu de mettre "jj/mm/aaaa", tu met "#jj/mm/aaaa#". A mois que ce ne soit "#mm/jj/aaaa#" (date au format américain)

Pour ta remarque, tu es exactement sur le bon forum. Ici c'est un forum d'entraide convivial plutot + orienté "pas pro" justement.

Parcontre attention au thème choisi. Ici tu aurais plutot dû choisir VB6/Base de données/SQL

Si ce n'est pas déjà fait, va faire un tour sur le règlement (le lien rouge juste au dessus de la box)

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
3 oct. 2006 à 17:48
Déplacé sur vbfrance !












<hr size="2" />




VC# forever
0
cs_pacomo Messages postés 8 Date d'inscription mardi 3 octobre 2006 Statut Membre Dernière intervention 5 octobre 2006
3 oct. 2006 à 20:05
Bonsoir !

Je reviens un peu tard car j'ai du abandonner momentanément pour autre chose.

Merci pour votre accueil et vos réponses.

Je reviens lire tout ça et mettre en euvre dès demain matin  (en me connectant sur le bon forum...) car là le devoir (familial) m'appelle !

Bien amicalement à tous





Pacomo

Vébéiste en herbe
0
cs_pacomo Messages postés 8 Date d'inscription mardi 3 octobre 2006 Statut Membre Dernière intervention 5 octobre 2006
3 oct. 2006 à 20:05
Bonsoir !

Je reviens un peu tard car j'ai du abandonner momentanément pour autre chose.

Merci pour votre accueil et vos réponses.

Je reviens lire tout ça et mettre en euvre dès demain matin  (en me connectant sur le bon forum...) car là le devoir (familial) m'appelle !

Bien amicalement à tous





Pacomo

Vébéiste en herbe
0
cs_pacomo Messages postés 8 Date d'inscription mardi 3 octobre 2006 Statut Membre Dernière intervention 5 octobre 2006
4 oct. 2006 à 14:36
Bonjour à tous !



Bon, et bien j'ai "tout" lu, rechercher dans Excel, Access et VBA ce qui pouvait correspondre où me donner des bouts de code que j'aurais assemblé mais rien ne fonctionne.



Voilà ce que j'ai écrit, mais évidemment, ça bug
Pour info, mon idée était de -puisque je ne peux pas insérer de requête paramétrée- d'insérer une requête simple et VBA me supprimait les lignes dont je n'avais pas besoin (et encore là c'est une date fixe qu'il faudrait que je change à chaque fois directement dans le code et j'ai pas prévu les lignes où la date est supérieure à... )



(je vous le donne mais merci de ne pas trop rigoler !!)


sub
    With ActiveSheet.QueryTables.Add(Connection:=Array( _
        "OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data Source=G:\SMS\Experience Feedbacks\LISTEF\ListEF.mdb;Mode=Share " _
        , _
        "Deny Write;Extended Properties="""";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Database Password="""";Jet OLE" _
        , _
        "DB:Engine Type=5;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet " _
        , _
        "OLEDB:New Database Password="""";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Loca" _
        , _
        "le on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False" _
        ), Destination:=Range("A1"))
        .CommandType = xlCmdTable
        .CommandText = Array("R - EF - Global2")
        .Name = "ListEF"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .SourceDataFile = "G:\SMS\Experience Feedbacks\LISTEF\ListEF.mdb"
        .Refresh BackgroundQuery:=False
    End With
    Sub Sélection()
' Selectionne colonne A
' recherche les celleles sont la valeur est une date inférieure au 01/01/2005
' en sélectionne la ligne
' puis les efface
    Columns("A:A").Select
Sub recherche()
VLookup (Value < 1 / 1 / 2005)
Sub Selection()
Rows.Select
Sub Suppression()
Selection.Delete Shift:=xlUp
End Sub

Je jette l'éponge, je vais copier coller le résultat de ma requête paramétrée dans Excel et faire mes stats à la main

Pleurer pour moi (!!), je me mettrai à VBA quand je serai à la retraite !!

Merci encore

See you !
Pacomo
Vébéiste en herbe
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
4 oct. 2006 à 16:26
 Bonjour,

Je ne pratique ni le VBA, ni le VB6, mais en parcourant ton code, 
VLookup (Value < 1 / 1 / 2005) me choque, mais, bon, c'est peu-être normal.
VLookup (Value < "01/01/2005") me parait plus logique.

Bon courage et bonne continuation.
jean-marc
 
0
cs_pacomo Messages postés 8 Date d'inscription mardi 3 octobre 2006 Statut Membre Dernière intervention 5 octobre 2006
4 oct. 2006 à 19:17
Bonsoir Jean-Marc,

J'avais laissé comme ça car j'avais essayé avec les # (avant et après la date) comme tu en parles au début mais ça n'avait pas marché.

Pour l'instant, comme il faut que je sorte mes stats, je fais "données, insérer.. etc" et je supprime les lignes dont je n'ai pas besoin, mais c'est pas top.

Ceci étant, je suis têtue et j'espère bien trouver !!

@ plus tard et merci à toi et à tous ceux qui pourraient m'aider !!

Pacomo
Vébéiste en herbe
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
4 oct. 2006 à 23:31
Plutôt que d'utiliser le menu d'Excel, qui n'est pas mauvais en soi, tu
pourrais utiliser la technologie DAO ou ADO. Tu pourrais te créer un
Recordset pour récupérer les données que tu souhaites et utiliser la
fonction CopyFromRecordset pour copier les données d'Access dans Excel.


Tu dois commencer par créer une référence au "moteur" que tu
utiliseras, ici DAO 3.6 ou la plus récente version que tu as sur ton
ordi.


En début de procédure

Dim Db as database, Rs as recordset, strSQL as string

set Db = Workspaces(0).OpenDatabase("CheminEtNomDuFichierMDB", False, False)

strSQL = "Select * from MaTable Where MonChamp ..."

Set Rs = Db.OpenRecordset(strSQL)

If rs.Recordcount > 0 then

Sheets("NomDeFeuille").Range("A1").CopyFromRecordset Rs

else

msgbox "Aucune donnée de trouvée"

end if


db.Close

Set rs = Nothing

Set db=Nothing


À partir de cet exemple simple, il te reste à changer les noms des
fichiers, feuilles et Range et modifier le Recordset selon tes besoins.


Tu pourrais écrire tes paramètres dans des cellules et faire quelque chose comme

("Select * from MaTable Where MaDate >= #" & range("A1") & "# and <= #" & range("B1") & "#")


Mais là on parle de date... jamais facile... Il faut que la date soit au modèle anglais, voire américain mm-jj-aaaa

Il faut d'abord que tu saches si ton champ Date est bien de type Date ou Texte. Ça fait toute la différence


Donc, pour tester un premier coup, tu ferais mieux d'essayer sans
clause Where , puis faire un test avec un Where sur un champ autre que
Date pour finalement tester sur la date. Si ça fonctionne bien au
début, tant mieux. Mais ça devrait planter lorsque tu utiliseras des
dates... du moins jusqu'à ce que tu reviennes avec des détails sur
l'erreur et le type de champ...

MPi
0
cs_pacomo Messages postés 8 Date d'inscription mardi 3 octobre 2006 Statut Membre Dernière intervention 5 octobre 2006
5 oct. 2006 à 09:18
Bonjour à tous,

Merci Mpi.



Bon, je copie/colle tout ça dans word et vais faire des tests. Je reviendrai avec les résultats.
Cependant : deux questions
1/.c'est quoi les technologies DAO ou ADO (aurais-tu une réf de bouquins par exemple qui l'expliquerai ?)



2/. Sur nos échanges, il y a un bouton vert "réponse acceptée", à quoi sert-il ? (je ne clique pas dessus de peur que ça ferme la discussion...)



@ bientôt avec mon avancement,



Cordialement à tous





Pacomo

Vébéiste en herbe
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
5 oct. 2006 à 10:57
DAO et ADO sont deux technologies avec lesquelles tu peux te brancher à
divers types de base de données. ADO est plus récente mais je suis plus
à l'aise avec DAO. Si tu ne connais ni une ni l'autre, je te
conseillerais d'étudier ADO plutôt que DAO, parce que plus adapté aux
nouvelles technologies comme le Web, .NET...


La technique (syntaxe) de branchement est différente d'un à l'autre,
mais le résultat est le même. Tu pourrais chercher sur ce site; tu
pourrais trouver d'autres discussions, des petits programmes ou
snippets,... qui pourraient t'aider. Pour les bouquins, je ne sais pas
trop, il y en a tellement...


Le bouton vert sert probablement à marquer le Post comme "Accepté" si
tu as trouvé la réponse à ton problème. Ça permet aux gens qui te
répondent ou à ceux qui font des recherches de savoir justement si le
Post a été utile.

MPi
0
cs_pacomo Messages postés 8 Date d'inscription mardi 3 octobre 2006 Statut Membre Dernière intervention 5 octobre 2006
5 oct. 2006 à 14:06
Merci MPi !



Je vais donc suivre tes conseils et vous tiendrai informés.
Les nuits vont être courtes !! (;-))
@ bientôt





Pacomo

Vébéiste en herbe
0
kems31 Messages postés 1 Date d'inscription lundi 6 octobre 2008 Statut Membre Dernière intervention 7 octobre 2008
7 oct. 2008 à 12:53
Bonjour tout le monde,








 




J'ai un soucis avec l'import de données d'access vers excel. En effet, j'ai une requête dans ma base de données que je souhaite importer dans excel, (Données / Données Externes / Import de données) cependant lors de l'importation, les critères de tri de données ne sont pas pris en compte. Comment faire pour avoir excatement les mêmes résultats que lors de l'excecution de la requête sous access?





En vous remerciant d'avance de votre aide.







 




Cordialement
0
Rejoignez-nous