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 :

Requete EXCEL ACCESS


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 8
    Par défaut Requete EXCEL ACCESS
    Bonjour a tous!

    Je suis en stage et j'ai une requête EXCEL a faire et je m'y connais pas assez en SQL pour accomplir ma tache...

    Je dois en effet faire une requête EXCEL afin qu'il me retourne un variant d'apres une base de données ACCESS.

    En introduisant une date de début, une date de fin, et le nom d'une colonne, je veux que ma requête me retourne le variant colonne associé avec la date)
    Voici en gros mon fichier ACCESS.


    Date Open High Low CLose

    14/05/1988 15.9 15.8 72.4 15.7
    15/05/1988 ....
    16//05/1988 ...



    J'ai commencé avec les tutos a faire le code mais je n'avance pas...

    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
    Function fnYahooQuery(Datedebut As Char, Datefin As Char, colonne As Char)
        Dim Db As DAO.Database
        Dim Rs As DAO.Recordset
        Dim strSQL As String
     
        Set Db = DAO.OpenDatabase("C:\Users\Fichier.mdb", False, False)
     
        strSQL = "SELECT Date, Open FROM [AC#PA] where year(Date)='Datedebut '"
     
        Set Rs = Db.OpenRecordset(strSQL, DAO.dbOpenSnapshot)
     
        Sheets("Feuil3").Range("A2").CopyFromRecordset Rs
     
        Db.Close
     
    End Function

    Merci a tous!

  2. #2
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour.

    Peux-tu préciser le nom des champs, car il y a une contradiction entre la descriptin de la table et la requête que tu as faite. Si tu a un champ qui s'appelle Date, tu peux commencer par le renommer, par exemple DateSeance.
    Je ne vois pas pourquoi tu as fait une fonction, puisqu'elle ne renvoie rien.
    Si tu veux les cours de DteDEbut à DateFin, il va falloir le mettre dans la requête.
    L'argument Colonne sert à quoi?
    Pour quoi type Char pour les arguments? Ca n'existe pas en VBA

    Avec ce que tu as fait, il se passe quoi?

    Cordialement,

    PGZ

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 8
    Par défaut
    En gros , l'utilisateur entre la date de début, la date de fin, la table correspondante, et (open/high/low ou close) dans les champs de la fonction fnYahooQuery et celui lui retourne le tableau de valeur correspondant aux dates et a la colonne demandée sur une feuille Excel.

    Ne faut t il pas un type char dans ma fonction si je dois entrer justement le nom de ma colonne?

    Pour l'instant j'obtiens beaucoup de message d'erreur...

    Merci!

    J'ai ecris mon code sans utiliser de fonction tout d'abord

    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
    19
    20
    Sub import3()
     
        Dim Db As DAO.Database
        Dim Rs As DAO.Recordset
        Dim strSQL As String
     
        Set Db = DAO.OpenDatabase("E:\Projet GDP\Requete\base.accdb", False, False)
     
     
     
        strSQL = "SELECT Date, Open FROM [AC#PA] where (year)Date<'14/01/2011' AND year(Date)> 14/01/2010  "
     
     
     
        Set Rs = Db.OpenRecordset(strSQL, DAO.dbOpenSnapshot)
        Sheets("Feuil1").Range("A2").CopyFromRecordset Rs
     
        Db.Close
     
    End Sub
    ET il ne tourne pas mais je pense que ma syntaxe est mauvaise...

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 8
    Par défaut
    Je n'arrive toujours pas a faire fonctionner ce code.
    Mes champs ici sont Date et open
    Cela me retourne un variant sous excel mais qui ne correspond pas aux dates choisies.

    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
    19
    20
    21
    Sub import3()
     
        Dim Db As DAO.Database
        Dim Rs As DAO.Recordset
        Dim strSQL As String
     
        Set Db = DAO.OpenDatabase("E:\Projet GDP\Requete\base.accdb", False, False)
     
     
     
        strSQL = "SELECT Date, Open FROM [AC#PA] where year(Date) BETWEEN '2010-05-01' AND '2011-01-01'"
     
     
     
     
        Set Rs = Db.OpenRecordset(strSQL, DAO.dbOpenSnapshot)
        Sheets("Feuil2").Range("A2").CopyFromRecordset Rs
     
        Db.Close
     
    End Sub

  5. #5
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut,je crois que le format d'une date dans une requête doit ressembler à qqch comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "#" & Format(DateDebut, "mm/dd/yyyy") & "#"

  6. #6
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Re,

    Encore une fois, tu devrais renommer le champ "Date" car Date est réservé.

    DOnc, je fais comme si le champs s'appelle DateSeance
    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
    19
    20
    21
    22
    23
    Sub import3(ByVal dteDeb As Date, ByVal dteFin As Date, ByVal sChamp As String)
     
    Dim Db As DAO.Database
    Dim Rs As DAO.Recordset
    Dim strSQL As String
     
    Set Db = DAO.OpenDatabase("E:\Projet GDP\Requete\base.accdb", False, False)
     
    strSQL = "SELECT DateSeance, " & sChamp & " FROM [AC#PA] Where (DateSeance >= #" & Format(dteDeb, "mm/dd/yyyy") & _
            "#) AND (DateSeance <= #" & Format(dteFin, "mm/dd/yyyy") & "#);"
     
    Set Rs = Db.OpenRecordset(strSQL, DAO.dbOpenSnapshot)
    With ThisWorkbook.Worksheets("Feuil2")
        .Range("A2").CopyFromRecordset Rs
        .Range("A1") = "Date"
        .Range("B1") = sChamp
    End With
     
    Db.Close
    Set rst = Nothing
    Set Db = Nothing
     
    End Sub
    A mettre au point.

    PGZ

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 8
    Par défaut
    Merci beaucoup pour cette réponse!

    J'ai essayer d'adapter ce programme dans une fonction. Je ne sais pas si la syntaxe est correcte. Il ne m'indique pas de message d'erreur quand j'execute la sub, mais me renvoie seulement le nom des colonnes Date et Open(sChamp)





    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    Function import3(ByVal dteDeb As Date, ByVal dteFin As Date, ByVal sChamp As String)
     
    Dim Db As DAO.Database
    Dim Rs As DAO.Recordset
    Dim strSQL As String
     
    Set Db = DAO.OpenDatabase("E:\Projet GDP\Requete\base.accdb", False, False)
     
    strSQL = "SELECT DateSeance, " & sChamp & " FROM [AC#PA] Where (DateSeance >= #" & Format(dteDeb, "mm/dd/yyyy") & _
            "#) AND (DateSeance <= #" & Format(dteFin, "mm/dd/yyyy") & "#);"
     
    Set Rs = Db.OpenRecordset(strSQL, DAO.dbOpenSnapshot)
    With ThisWorkbook.Worksheets("Feuil2")
        .Range("A2").CopyFromRecordset Rs
        .Range("A1") = "Date"
        .Range("B1") = sChamp
    End With
     
    Db.Close
    Set rst = Nothing
    Set Db = Nothing
     
     
    End Function
     
     
    Sub essai1()
    Call import3(3 / 14 / 2010, 1 / 14 / 2010, "Open")
    End Sub

  8. #8
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    RE,

    Pour appeler la procédure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub essai1()
    Call import3(#1/14/2010#,#3/14/2010#, "Open")
    End Sub
    Sans oublier que dteFin > = dteDeb, sinon tu n'auras rien...


    PGZ

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 8
    Par défaut
    Merci beaucoup pour votre patience! Bonne soirée!

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

Discussions similaires

  1. [VBA EXCEL / ACCESS] : Resultat d'une requete
    Par forsay1 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 17/07/2009, 12h00
  2. Execution de requete Excel via Access
    Par MuadDib_II dans le forum VBA Access
    Réponses: 8
    Dernier message: 11/08/2008, 15h27
  3. Requete en access exporter vers excel
    Par Kalvin_20 dans le forum VBA Access
    Réponses: 3
    Dernier message: 15/05/2008, 13h51
  4. Requete Excel Access
    Par Kalvin_20 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/05/2008, 15h42
  5. Requete Excel --> Access
    Par Jah78 dans le forum Access
    Réponses: 2
    Dernier message: 23/02/2006, 18h12

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