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 :

Problème d'export d'une requête vers excel


Sujet :

VBA Access

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Problème d'export d'une requête vers excel
    Bonjour,

    Après avoir longuement parcouru la toile et essayer de nombreuses tentatives, je ne parviens à exporter de requêtes vers excel.

    Soit il m'indique qu'il manque un argument (cas où j'utilise une requête existante), soit il m'indique une incompatibilité de type dans le cas présent ou je fais une requête temporaire.

    La requête est filtrée à l'aide du résultat d'une liste déroulante d'un formulaire.

    Voici le 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
    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
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    Private Sub Modifiable5_AfterUpdate()
    'DoCmd.OpenReport "etat_Projets", acViewPreview
     
     
     
    DoCmd.OpenQuery ("qryprojets")
     
        Dim xlApp As Excel.Application
        Dim xlSheet As Excel.Worksheet
        Dim xlBook As Excel.Workbook
        Dim I As Long, J As Long
        Dim t0 As Long, t1 As Long
     
        t0 = Timer
        Dim rec As Recordset
        Dim qd As QueryDef
     
     
        Set qd = CurrentDb.CreateQueryDef("Requete_Temp", "SELECT NomProjet, DescriptionProjet" & _
                " FROM Projets " & _
                "WHERE Nom_Client = " & "'" & Forms!saisie_prospect_etat!Modifiable5() & "';")
        Set rec = CurrentDb.OpenRecordset(qd, dbopendynset)
     
        'Initialisations
        Set xlApp = CreateObject("Excel.Application")
        Set xlBook = xlApp.Workbooks.Add
     
        'Ajouter une feuille de calcul
        Set xlSheet = xlBook.Worksheets.Add
        xlSheet.Name = "Tutoriel"
     
        ' le titre
        '  écriture dans la cellule de ligne 1 et de colonne 1
        xlSheet.Cells(1, 1) = "Export d'une table Access"
     
     
        ' les entetes
        '  .Fields(Index).Name renvoie le nom du champ
        For J = 0 To rec.Fields.Count - 1
            xlSheet.Cells(2, J + 1) = rec.Fields(J).Name
            ' Nous appliquons des enrichissements de format aux cellules
            With xlSheet.Cells(2, J + 1)
                .Interior.ColorIndex = 15
                .Interior.Pattern = xlSolid
                .Borders(xlEdgeBottom).LineStyle = xlContinuous
                .Borders(xlEdgeBottom).Weight = xlThin
                .Borders(xlEdgeBottom).ColorIndex = xlAutomatic
                .HorizontalAlignment = xlCenter
                .VerticalAlignment = xlCenter
     
                .WrapText = True
            End With
                xlSheet.Columns("C:C").ColumnWidth = 32
                xlSheet.Columns("B:B").ColumnWidth = 40
        Next J
     
        ' recopie des données à partir de la ligne 3
        I = 3
        Do While Not rec.EOF
            For J = 0 To rec.Fields.Count - 1
                ' .Fields(Index).Type renvoie le type du champ
                '   si c'est un Texte (dbText) nous insérons "'" pour
                '   qu'il soit reconnu par Excel comme du Texte
                If rec.Fields(J).Type = dbText Then
                    xlSheet.Cells(I, J + 1) = "'" & rec.Fields(J)
                Else
                    xlSheet.Cells(I, J + 1) = rec.Fields(J)
                End If
            Next J
            I = I + 1
            rec.MoveNext
        Loop
     
     
     
     
        ' code de fermeture et libération des objets
        xlBook.SaveAs "C:\Documents and Settings\Default User\Local Settings\Temp\Feuille.xls"
    '   Ouverture du fichier
        xlApp.Visible = True
    '   Fermeture de excel si souhaité
    '   xlApp.Quit
        rec.Close
     
        Set rec = Nothing
        Set xlSheet = Nothing
        Set xlBook = Nothing
        Set xlApp = Nothing
     
     
     
        t1 = Timer
        Debug.Print I & " enregistrements", Format(t1 - t0, "0") & " secondes"
    DoCmd.Close acForm, "saisie_prospect_etat"
    DoCmd.DeleteObject acQuery, "Requete_Temp"
     
    End Sub
    Merci de votre coup de main.

    Bonne journée.

  2. #2
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 183
    Points : 1 362
    Points
    1 362
    Par défaut
    Et comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim rec As DAO.Recordset
    dim iStr_SQL as string
    iStr_SQL = "SELECT NomProjet, DescriptionProjet" & _
    " FROM Projets " & _
    "WHERE Nom_Client = '" & Forms!saisie_prospect_etat!Modifiable5() & "'"
    Set rec = CurrentDb.OpenRecordset(iStr_SQL)
    [Access] Les bases du débogage => ici

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Marche pas
    Merci de ton aide Kloun, mais j'ai toujours le même problème.

  4. #4
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 183
    Points : 1 362
    Points
    1 362
    Par défaut
    Sur quelle ligne, le problème ?
    [Access] Les bases du débogage => ici

  5. #5
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Bonjour,
    ce n'est peut-être pas ce que tu cherches, mais personnellement pour exporter un SQL ou une table vers excel, j'utilise un code du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, From_Table, document, True
    Ce code supporte l'export d'un SQL.

    Il est alors possible de manipuler le fichier excel produit pour y apporter toutes les modifs de mises en page voulue.

    Mais je ne sais pas si cela répond à ta question ?
    (\ _ /) Cordialement G@dz
    (='.'=)

    (")-(") Vous avez des neurones. Sollicitez-les. . Si vous êtes aidé, pensez à Voter.

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci Godzestla mais en fait, je voudrais privilégier l'automation pour mettre en forme le tableau excel directement.

    Kloun, j'ai vraisembablement identifié le problème. C'est la requête temporaire qui est inexploitable. Lorsque j'essaie d'ouvrir la requête Requete_Temp, il m'indique un type de données incompatible avec l'expression du critère.
    Je crois comprendre l'erreur signalé en revanche, je ne la vois pas.

    Autre solution : j'ai créée la requête qryprojets, identique à la précédente mais créée de manière définitive. Lorsque je mets à jour ma liste déroulante modifiable 5 et j'ouvre cette requête en tableau, elle est correctement renseignée. en revanche, après l'avoir ouvrte, je tâche de l'exporter vers excel avec la ligne de code suivante :

    Set rec = CurrentDb.OpenRecordset("qryprojets")

    Il m'indique un erreur 3061 : trop peu de paramètres, 1 attendu. Comme si l'argument de la requête était inconnu.

    en tout cas, je vous remercie de votre aide.

  7. #7
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 183
    Points : 1 362
    Points
    1 362
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim rec As DAO.Recordset
    dim iStr_SQL as string
    iStr_SQL = "SELECT NomProjet, DescriptionProjet" & _
    " FROM Projets " & _
    "WHERE Nom_Client = '" & Forms!saisie_prospect_etat!Modifiable5() & "'"
    debug.print iStr_SQL
    Set rec = CurrentDb.OpenRecordset(iStr_SQL)
    Qu'est ce qu'il y a dans la fenêtre Exécution ?
    [Access] Les bases du débogage => ici

Discussions similaires

  1. [WD10] Export d'une requête vers EXCEL
    Par Tchupacabra dans le forum WinDev
    Réponses: 3
    Dernier message: 12/03/2013, 18h44
  2. exporter une requête vers Excel
    Par myriame dans le forum VBA Access
    Réponses: 1
    Dernier message: 31/05/2011, 15h58
  3. Export d'une requête vers Excel et Format Monétaire
    Par Currahee dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 15/05/2008, 11h50
  4. Exporter automatiquement une requête vers Excel
    Par cofi30 dans le forum VBA Access
    Réponses: 2
    Dernier message: 14/05/2008, 16h09
  5. [Excel] Exportation d'une requête vers Excel via PHP
    Par Foudébois dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 17/05/2006, 16h46

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