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

Access Discussion :

[VBA] Automation et requete


Sujet :

Access

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2006
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 49
    Points : 28
    Points
    28
    Par défaut [VBA] Automation et requete
    Bonjour,

    J'essaye d'exporter des données provenant d'un requete de selection R_devis vers un document excel pour cela, j'ai commencé ce code:

    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
    Public Function insert_excel()
    Dim db As Database
    Dim qd As DAO.QueryDef
    Dim rst As DAO.Recordset
    Dim compteEnr As Long, chMsg As String
    Dim varRetournée As Variant, lngX As Long
    Dim appexcel As Excel.Application
    Dim wbexcel As Excel.Workbook
    Dim temp As Variant
    Set db = CurrentDb()
    Set appexcel = CreateObject("Excel.Application")
     
    '-> Si true excel s'affiche à l'écran
    appexcel.Visible = True
     
    '->ouverture du fichier excel,
    Set wbexcel = appexcel.Workbooks.Open("F:\User\AGENCE CENTRE EST\ANNEE 2006\Groupe eau potable - légionelles\Pierre\DEVIS PMCA.xls")
     
    '->selection de la feuille,
    appexcel.Sheets("FICHE de MESURE Légio NFT ").Select
     
    '-> ouverture de la requete de selection
    Set qd = db.OpenQuery("R_devis")
    Malheuresement, je n'arrive pas à ouvrir la requete de selection malgré l'aide que m'as donné la FAQ et le code de caféine.

    Le deboggeur de donne l'erreur suivante sur la derniere ligne "menbre de methode ou de données introuvable."

    Quelqu'un pourrait-il m'expliquer quel la bonne synthaxe pour ouvrir ma requete?

    Merci d'avance.

  2. #2
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Salut,
    Essaie avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim qd As DAO.Recordset
    Set qd = db.OpenRecordset("R_devis")
    Ca devrait fonctionner.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2006
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 49
    Points : 28
    Points
    28
    Par défaut
    Ton code me donne une erreur "trop peu de parametre" erreur 3061.

    Ma requete demande un numero de devis pour pouvoir selectionner celui désiré. Est ce que c'est à cause de ca?


    [EDIT]
    j'ai modifié mon code grace à un code de cafeine.

    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
    Dim db As Database
     
    Dim rst As DAO.Recordset
    Dim qd As DAO.QueryDef
    Dim compteEnr As Long, chMsg As String
    Dim varRetournée As Variant, lngX As Long
    Dim appexcel As Excel.Application
    Dim wbexcel As Excel.Workbook
    Dim temp As Variant
    Set db = CurrentDb()
    Set appexcel = CreateObject("Excel.Application")
     
    '-> Si true excel s'affiche à l'écran
    appexcel.Visible = True
     
    '->ouverture du fichier excel,
    Set wbexcel = appexcel.Workbooks.Open("F:\User\AGENCE CENTRE EST\ANNEE 2006\Groupe eau potable - légionelles\Pierre\DEVIS PMCA.xls")
     
    '->selection de la feuille,
    appexcel.Sheets("FICHE de MESURE Légio NFT ").Select
     
    '-> ouverture de la requete de selection
    '->Set qd = db.OpenQuery("R_devis")
     
    Set qd = db.QueryDefs("R_devis")
    '-> modification des données dans excel
    qd.Parameters("Ref Devis") = valeur
    Malheuresement j'ai une erreur sur la dernière ligne.
    Comment doit etre definit valeur? est-il bien le paramètre de selection dans ma requete?

  4. #4
    Membre éclairé Avatar de ft035580
    Profil pro
    Inscrit en
    Août 2004
    Messages
    689
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 689
    Points : 812
    Points
    812
    Par défaut
    Salut,

    Il me semble que [Valeur] serait mieux

  5. #5
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Ma requete demande un numero de devis pour pouvoir selectionner celui désiré. Est ce que c'est à cause de ca?
    Oui c'est à cause de ça...

    Ce que je te conseille, c'est de :
    1) Faire ta requete dans le code VBA :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim SQL As String
    SQL = "SELECT tes champ " & _
    "FROM tes tables " & _
    "WHERE tonchamp = " & TaVariable
    2) utilise cette fonction pour créer ou mettre à jour la requete
    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
    Public Sub CreationRequete(SQL As String, NomRequete As String)
     
        Dim oDB As DAO.Database
        Dim oRqt As DAO.QueryDef
     
        Set oDB = Application.CurrentDb
     
        'Teste l'existence de la requete et s'il elle existe la modifie
        If TestExistenceRequete(NomRequete, oDB) = True Then
            Set oRqt = oDB.QueryDefs(NomRequete)
            oRqt.SQL = SQL
            Else
                'Crée la requete
                Set oRqt = CurrentDb.CreateQueryDef(NomRequete, SQL)
        End If
        'Rafraichit la liste des requetes
        oDB.QueryDefs.Refresh
    End sub
    3) reprend le code que je t'ai donné dans le 1er post.
    En ce qui concerne la fonction TestExistenceRequete() regarde la FAQ

  6. #6
    Nouveau membre du Club
    Inscrit en
    Avril 2006
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 49
    Points : 28
    Points
    28
    Par défaut
    [quote=Kikof]Oui c'est à cause de ça...

    Ce que je te conseille, c'est de :
    1) Faire ta requete dans le code VBA :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim SQL As String
    SQL = "SELECT tes champ " & _
    "FROM tes tables " & _
    "WHERE tonchamp = " & TaVariable

    J'ai un peu de mal avec cette partie.

    Que signifie les &_" ?

  7. #7
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Les & _ signifie un retour à la ligne et pour faire en sorte que chaque ligne soit prise en compte comme une seule ligne dans le cas (ici) de l'écriture du SQL d'une requete. Ca peut parfois être très long, et les écrans ne font pas 40"... déjà que l'on scrolle verticalement... ca suffit... non

  8. #8
    Nouveau membre du Club
    Inscrit en
    Novembre 2005
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 33
    Points : 33
    Points
    33
    Par défaut
    Salut
    j'ai eu le même problème, le mieux selon moi est de copier le code sql de ta requête que tu insère dans vba
    cf page suivante : http://loufab.developpez.com/analyseparam/
    partie 5
    En espérant t'avoir aidé

Discussions similaires

  1. VBA > Parametrer une requete > table
    Par catoucat dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 18/08/2006, 02h55
  2. [VBA ACCESS]Prob requete
    Par kikilevrai dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 23/06/2006, 20h55
  3. [VBA-A]Relier requete SQL
    Par Z[ee]k dans le forum Requêtes et SQL.
    Réponses: 20
    Dernier message: 20/06/2006, 18h06
  4. [VBA ACCESS]prob requete
    Par kikilevrai dans le forum Requêtes et SQL.
    Réponses: 16
    Dernier message: 20/06/2006, 14h10
  5. Graphique vba (automation via access)
    Par Celia1303 dans le forum Access
    Réponses: 1
    Dernier message: 22/12/2005, 17h54

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