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

VBA Access Discussion :

export dans excel du résultat d'une requête avec paramètre [AC-2002]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2009
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 159
    Par défaut export dans excel du résultat d'une requête avec paramètre
    Bonjour,

    cette nouvelle discussion est la suite de celle présentée à l'adresse suivante :
    http://www.developpez.net/forums/d99...-date-requete/

    dans l'ordre de la cinématique
    1. Formulaire F_reporting : saisie de 2 variables date (txtdatdeb et txtdatfin) & envoi vers formulaire F_reporting_AA
    2. Fomulaire F_Reporting_AA avec affichage résultat requête access déterminé par les 2 variables date
    3. Formulaire F_Reporting_AA : bouton d'export du résultat de la requête dans un fichier excel pré-formaté


    Après avoir réussi à exécuter une requête dans un formulaire F_Reporting_AA à l'aide de 2 variable date d'un autre formulaire, sur ce même formulaire, nous avons ajouté un bouton pour exporter le résultat de la requête dans un fichier excel pré-formaté.

    La procédure générant le contenu du fichier fonctionne dans la mesure où la requête ne contient pas de paramètres type txtdatdeb et txtdatfin à passer

    Voici un extrait de la procédure
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
     
    Private Sub cmd_Reporting_FollowUp_Click()
        On Error GoTo Err_cmd_Reporting_FollowUp_Click
     
        Dim db As DAO.Database
        Dim rst As DAO.Recordset
        Dim AppliExcel As Excel.Application
        Dim FicXLS As Excel.Workbook
        Dim strComment As String
        Dim strPaysTraité As String
        Dim LineTraitee As Long
        Dim Chemin_FollowUp As String
        Dim Onglet_FollowUp As String
        Dim TopIncAgr As String
     
        ' Vérifie que les paramêtres servant à localiser le reporting à compléter, sont corrects
     
        Chemin_FollowUp = fctGetParametre("CHEMIN_MODELE_FOLLOWUP")
        Onglet_FollowUp = fctGetParametre("ONGLET_MODELE_FOLLOWUP")
        If IsNull(Chemin_FollowUp) Or Chemin_FollowUp = "" _
        Or IsNull(Onglet_FollowUp) Or Onglet_FollowUp = "" Then
            MsgBox "Le chemin d'accès au Modèle de reporting Follow up ou bien le nom de l'onglet est inconnu. Modifier la table des paramètres.", _
                    vbOKOnly, "Erreur de paramétrage"
            GoTo Exit_cmd_Reporting_FollowUp_Click
        End If
        '    DoCmd.OutputTo acOutputQuery, Onglet_FollowUp, acSpreadsheetTypeExcel9, "gKSP Follow up.xls", True
     
        DoCmd.SetWarnings False
        DoCmd.Hourglass True
     
        ' Ouvre EXCEL
        Set AppliExcel = New Excel.Application
        AppliExcel.Visible = True
        AppliExcel.Cursor = xlWait
    '    AppliExcel.ScreenUpdating = False
     
        ' Ouvre le fichier Template et récupère les informations
        Set FicXLS = AppliExcel.Workbooks.Open(Chemin_FollowUp, False, True)  ', Password:="xxxxxxxx")
     
        '----------------------------------------------------------------------------
        ' Importe dans Excel les informations 
        '----------------------------------------------------------------------------
        ' Accède à la requête du reporting Follow up
        Set db = CurrentDb
     
        ' ===> Requête à corriger . Il manque le passage des paramètres txtdatdeb et txtdatfin .....
     
        Set rst = db.OpenRecordset("SELECT * FROM R_Reporting_AA")
     
     
        ' Balaye tous les enregistrements
        LineTraitee = 7
        rst.MoveFirst
        Do While Not rst.EOF
     
            TopIncAgr = "Non"
            FicXLS.Worksheets(Onglet_FollowUp).Range("A" & LineTraitee) = rst![type inc]
            If rst![Top incident agrégé] = True Then
              TopIncAgr = "Oui"
            End If
            FicXLS.Worksheets(Onglet_FollowUp).Range("B" & LineTraitee) = TopIncAgr
     ......
    Ma question est de savoir comment faire passer les 2 variables dates (txtdatdeb et txtdatfin ) saisies dans le formulaire F_Reporting , dans le code ci-dessous au niveau du "Set rst" ?

    ou dois-je plutôt stocker le résultat de la requête déjà effectuée dans le formulaire F_Reporting_AA (qui contient le bouton pour l'export dans le fichier excel dont nous parlons) ? Si oui, comment ?

    en vous remerciant par avance pour vos réponses.

  2. #2
    Expert confirmé
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Par défaut
    Bonjour,

    Voila le principe pour ouvrir un recordset sur une requête paramétrée
    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
        Dim db As DAO.Database
        Dim rst As DAO.Recordset
        Dim qdf As DAO.QueryDef
     
        ' Accède à la requête du reporting Follow up
        Set db = CurrentDb
     
        Set qdf = db.QueryDefs("R_Reporting_AA")
        ' En supposant que le 1er paramètre est txtdatdeb
        ' et que le deuxième paramètre est txtdatfin
     
        ' remplacer #1/1/2010# par le contenu de txtdatdeb
        qdf.Parameters(0).Value = #1/1/2010#
        ' remplacer #10/31/2010# par le contenu de txtdatfin
        qdf.Parameters(1).Value = #10/31/2010#
     
        ' Exécute la requête et retourne le jeu d'enregistrements
        ' dans l'objet recordset rst
        Set rst = qdf.Execute()
    A+

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2009
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 159
    Par défaut
    Merci à LedZeppII pour sa réponse.
    J'ai, pour l'instant, une petite erreur lors de la compilation sur qdf.Execute()
    "fonction ou variable attendue"
    Que manque t-il?

  4. #4
    Expert confirmé
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Par défaut
    Pardon. Je me suis trompé de méthode.
    C'est OpenRecordset au lieu de Execute (réservé aux requêtes action).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Set rst = qdf.OpenRecordset()
    A+

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2009
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 159
    Par défaut
    C'est corrigé.
    Par contre à l'exécution du bouton vers l'export, le tableau excel s'ouvre mais l'analyse du pas à pas du code montre qu'à la 1ère écriture, il sort en erreur pour indiquer le message "Aucun enregistrement en cours"

    Quel peut être le problème? les 2 dates ne sont pas passées ?

    Lorsque je lance la requête seule, elle me demande les paramètres "Formulaires.F_reporting.txtdatdeb" et "Formulaire.F_Reporting.txtdatfin"

    A+

  6. #6
    Expert confirmé
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Par défaut
    Essaie avec 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
        ' Accède à la requête du reporting Follow up
        Set db = CurrentDb
     
        Set qdf = db.QueryDefs("qryDates")
        ' En supposant que le 1er paramètre est txtdatdeb
        ' et que le deuxième paramètre est txtdatfin
     
        ' 1er paramètre
        qdf.Parameters(0).Value = Forms("F_reporting")!txtdatdeb
        ' 2eme paramètre
        qdf.Parameters(1).Value = Forms("F_reporting")!txtdatfin
     
        ' Pour déboguer
        MsgBox qdf.Parameters(0).Name & " (" & qdf.Parameters(0).Type & ")=" & qdf.Parameters(0).Value & vbCrLf & _
               qdf.Parameters(1).Name & " (" & qdf.Parameters(1).Type & ")=" & qdf.Parameters(1).Value
     
        ' Exécute la requête et retourne le jeu d'enregistrements
        ' dans l'objet recordset rst
        Set rst = qdf.OpenRecordset()
    La boîte de message te montrera le contenu des deux paramètres.
    Tu pourra ainsi vérifier que le paramètre (0) est bien txtdatdeb.

    A+

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

Discussions similaires

  1. Doublons dans le résultat d'une requête avec Entity Framework
    Par tobus2012 dans le forum Entity Framework
    Réponses: 9
    Dernier message: 05/07/2014, 00h33
  2. Export en .txt du résultat d'une requête
    Par nicethe dans le forum PL/SQL
    Réponses: 3
    Dernier message: 01/04/2010, 12h26
  3. [Vxi3] Invite Dans Liste sur résultat d'une requète
    Par tpeluchon dans le forum Deski
    Réponses: 2
    Dernier message: 01/02/2010, 12h45
  4. [Toutes versions] Exporter dans Excel les résultats de checkbox, combobox et textbox
    Par mgdmgd dans le forum VBA PowerPoint
    Réponses: 2
    Dernier message: 09/10/2009, 11h41
  5. Exporter vers Excel le résultat d'une recherche
    Par icare_1er dans le forum VBA Access
    Réponses: 1
    Dernier message: 20/07/2007, 07h13

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