IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

exportation Access vers Excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 64
    Par défaut exportation Access vers Excel
    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

  2. #2
    Expert confirmé
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Par défaut
    Hello,

    c'est normal, je pense que tu devrais travailler sur le SQL de la requête pour remplacer le paramètre par une variable
    exemple avec la référence DAO 3.x

    avec une requête du type :
    Code sql :
    ... WHERE [champ] = [nomparamètre] ...

    ça donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    dim db as dao.database
    dim rs as dao.recordset
     
    set db=dao.opendatabase("chemin de ma base.mdb",false,false)
    strSQL = db.querydefs("ma requete").sql
    strSQL = replace(strSQL, "[nomparamètre]", Inputbox("Entre le paramètre"))
    set rs = db.Openrecordset(strsql, dao.dbopensnapshot)
    range("A2").copyfromrecordset rs
    rs.close
     
    set rs=nothing
    set db=nothing

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 64
    Par défaut
    Merci de votre aide, mais j'ai essayé votre code vba et cela n'a pas marché.
    Voila ce que j'ai mis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub exportation2()
     
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
     
    Set db = DAO.OpenDatabase("Z:\projet 2 programme archivage\ENGAGE.mdb", False, False)
    strsql = db.QueryDefs("11)état décision en rentrant parametre").Sql
    strsql = Replace(strsql, "[nomparamètre]", InputBox("Entre le paramètre"))
    Set rs = db.Openrecordset(strsql, DAO.dbopensnapshot)
    Range("A2").CopyFromRecordset rs
    rs.Close
     
    Set rs = Nothing
    Set db = Nothing
    Et voila ma Sql (il y a 2 paramétre) :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    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.

  4. #4
    Expert confirmé
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Par défaut
    Moak ... [nomparamètre] était un exemple !!!
    dans ton cas, il faut mettre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    strsql = Replace(strsql, "[Entre Le]", "#" & format(CDate(InputBox("Entre le")),"mm/dd/yyyy") & "#")
    strsql = Replace(strsql, "[Et Le]", "#" & format(CDate(InputBox("Et le")),"mm/dd/yyyy") & "#")

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 64
    Par défaut
    Cela ne marche toujours pas, j'ai bien vérifié l'écriture.
    Quand je clique sur le bouton qui lance le sub sa m'envoi directement dans vba et sur le code
    Voila le code dans ds sa totalité, je vois pas où est l'erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Sub exportation2()
     
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
     
    Set db = DAO.OpenDatabase("Z:\projet 2 programme archivage\ENGAGE.mdb", False, False)
    strsql = db.QueryDefs("11)état décision en rentrant parametre").Sql
    strsql = Replace(strsql, "[Entre Le]", "#" & Format(CDate(InputBox("Entre le")), "mm/dd/yyyy") & "#")
    strsql = Replace(strsql, "[Et Le]", "#" & Format(CDate(InputBox("Et le")), "mm/dd/yyyy") & "#")
    Set rs = db.Openrecordset(strsql, DAO.dbopensnapshot)
    Range("A2").CopyFromRecordset rs
    rs.Close
     
    Set rs = Nothing
    Set db = Nothing
     
     
    End Sub
    Excusez moi si je comprens pas tous car je suis débutant ;-)

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Bonjour

    Il serait utile de préciser sur quelle ligne le code s'arrête.

    La référence à DAO est-elle bien cochée dans Outils/Références?

    La variable strsql n'est pas déclarée dans ton code...

    Attention que la casse (majuscules/minuscules) n'est pas identique dans la fonction de remplacement et dans le texte de la requête

    Le champ sur lequel sont appliqués les critères est-il bien un champ de type Date?

    La requête fonctionne-t-elle sous Access?


    Une autre technique est de remplacer la date saisie en paramètre par un entier long. Avec cette technique, je n'ai jamais rencontré de problème.

    De plus, pour la clarté du code, je préfère travailler avec des variables, plutôt que d'utiliser InputBox à l'intérieur de la fonction Replace. Cela me permet de vérifier que les dates sont saisies de façon correcte (par de permutation entre les jours et les mois).

    Le code devient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Dim strsql As String
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim DateDebut As Date
    Dim DateFin As Date
     
    DateDebut = CDate(InputBox("Date de début"))
    DateFin = CDate(InputBox("date fin"))
    Set db = DAO.OpenDatabase("Z:\projet 2 programme archivage\ENGAGE.mdb", False, False)
    strsql = db.QueryDefs("11)état décision en rentrant parametre").Sql
    strsql = Replace(strsql, "[entre le]", CLng(DateDebut))
    strsql = Replace(strsql, "[et le]", CLng(DateFin))
    Set rs = db.Openrecordset(strsql, DAO.dbopensnapshot)
    Range("A2").CopyFromRecordset rs
    rs.Close
    et il fonctionne bien chez moi (avec les adaptations que j'ai dû réaliser pour créer une base de test...)
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. exportation access vers excel
    Par osia1 dans le forum VBA Access
    Réponses: 44
    Dernier message: 18/04/2008, 16h40
  2. Export ACCESS vers EXCEL
    Par BAYRAL dans le forum VBA Access
    Réponses: 2
    Dernier message: 21/11/2007, 16h13
  3. Réponses: 5
    Dernier message: 15/07/2007, 23h49
  4. Export Access vers Excel nb de champs variable
    Par SylvainJ dans le forum Access
    Réponses: 4
    Dernier message: 05/03/2007, 14h55
  5. export access vers excel en asp
    Par oniric dans le forum ASP
    Réponses: 9
    Dernier message: 24/03/2006, 15h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo