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 :

Exporter une requete access filtrée sous excel à une ligne prédéfinie


Sujet :

VBA Access

  1. #1
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 73
    Points : 41
    Points
    41
    Par défaut Exporter une requete access filtrée sous excel à une ligne prédéfinie
    Bonjour,


    En fait, j'ai une requete assez complexe que j'ai faite via l'assistant de requetes. Ce que je voudrais, c'est d'abord arriver à la filtrer sur un deux critères puis ensuite l'exporter à la ligne 6 d'une feuille excel.

    Avez vous une idée?

    Merci d'avance

    Eddy

  2. #2
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    http://cafeine.developpez.com/
    Sur cette page, il y a un tuto sur l'export vers Excel.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  3. #3
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 73
    Points : 41
    Points
    41
    Par défaut
    J'avoue que j'avais déjà trouvé ce tuto mais mon niveau naissant ne me permet pas de tout comprendre.

    Je ne vois pas comment exporter une requete filtrée sur des critères??? De plus, je voudrais que cela soit exporté dans un fichier bien précis, à partir d'une ligne bien précise?

    Merci d'avance de votre aide


    Eddy

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Dans le tuto que t'a donné de Caféine, il faut que tu t'intérresse à la partie automation, pour ce que tu veux la seule solution est de passer par des Recordset, et utiliser la méthode CopyFormRecordset de l'objet Range qui est un objet Excel.

    Lis bien le tuto, aide toi de la touche si tu as du mal avec le code.

    Starec

  5. #5
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 73
    Points : 41
    Points
    41
    Par défaut
    Bonjour,



    J'ai donc pris le tuto et essaie de l'adapter à mon cas.

    J'ai donc pris le début de code suivant:
    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 TransfertExcelAutomation()
     
    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
     
        Set rec = CurrentDb.OpenRecordset("Clients", dbOpenSnapshot)
     
    End Sub

    Et là, il me dit "erreur de compilation - type défini par l'utilisateur non défini"


    Je crois qu'il doit me manquer une référence mais où la rajouter???

    Merci d'avance et si vous avez une idée sur mon sujet, cela m'aiderait beaucoup.


    Eddy

  6. #6
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Dans l'éditeur, c'est outils références

    Tu dois choisir Microsoft Excel xx.x
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  7. #7
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 73
    Points : 41
    Points
    41
    Par défaut
    Bon avec le tuto et une ancienne base que j'avais faite. Je suis arrivé à quelque chose? Tout fonctionne bien mais à un moment, j'ai une cellule vide et j'ai le message suivant "erreur d'execution 94 - utilisation de null incorrect".

    Avez vous une idée de ce qui bloque dans mon 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
    Private Sub Commande1_Click()
     
    Set xlA = CreateObject("excel.application")    'lance Excel
    xlA.Visible = True
    xlA.Workbooks.Open ("D:\Mes documents\GLOBAL\Satisfaction client\Baromètre\Analyse\Reporting\test.xls")       'ouvre le fichier
    Set xlW = xlA.ActiveWorkbook
     
    Call Exportation("BASE_RETOURS", "D:\Mes documents\GLOBAL\Satisfaction client\Baromètre\Analyse\Reporting\test.xls", "Test")
     
    End Sub
     
    Sub Exportation(requete As String, fichier As String, onglet As String)
     
     Dim t As DAO.Recordset
     Dim qdf As DAO.QueryDef
     Dim db As DAO.Database
     Dim i As Integer
     Dim s As String, NumChamp As Long, ligne As Long
     
     ligne = 1
     Set db = CurrentDb
     Set qdf = db.QueryDefs(requete)
     For i = 0 To qdf.Parameters.Count - 1
         On Error Resume Next
        qdf.Parameters(i).Value = Eval(qdf.Parameters(i).Name)
        If Err.Number = 2482 Then ' Paramètre non évaluable
            ' Demande la saisie du paramètre dans une inputbox
            qdf.Parameters(i).Value = InputBox(qdf.Parameters(i).Name)
        End If
        On Error GoTo 0
     Next
      Set t = qdf.OpenRecordset    'ouvre la requete
     Do Until t.EOF
       ligne = ligne + 1            'ligne suivante dans la feuille Excel
       For NumChamp = 0 To 10        'pour chaque colonne de la requete
           s = t(NumChamp)       'recupération des données au format Texte
        xlW.Sheets(onglet).Cells(ligne, NumChamp + 1) = s 'ecriture dans la cellule
       Next NumChamp
       t.MoveNext                    'enregistrement suivant
      Loop
      t.Close
     Set t = Nothing
     Set qdf = Nothing
     Set db = Nothing
     
     
    End Sub

    Merci d'avance


    Eddy

  8. #8
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 73
    Points : 41
    Points
    41
    Par défaut
    Bon en fait, j'y suis arrivé. J'ai même été plus loin mais il me reste un souci!!!


    Je fais donc un export de mes lignes en les filtrant sur un critère, mon souci est que je dois faire autant d'export filtré que de critères. J'ai donc écris le code suivant mais ça ne fonctionne pas.

    En fait, il ne trouve pas l'objet "t_secteur" et impossible de savoir comment le définir.


    Voyez vous d'ù vient le souci???

    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
    Private Sub Commande1_Click()
     
     Dim t_secteur As DAO.Recordset
     Dim qdf As DAO.QueryDef
     Dim db As DAO.Database
     Dim i As Integer
     Dim s As String, NumChamp As Long, ligne As Long
     
     Set db = CurrentDb
     Set qdf = db.QueryDefs("REFERENTIEL_SECTEURS")
     For i = 0 To qdf.Parameters.Count - 1
         On Error Resume Next
        qdf.Parameters(i).Value = Eval(qdf.Parameters(i).Name)
        If Err.Number = 2482 Then ' Paramètre non évaluable
            ' Demande la saisie du paramètre dans une inputbox
            qdf.Parameters(i).Value = InputBox(qdf.Parameters(i).Name)
        End If
        On Error GoTo 0
     Next
      Set t = qdf.OpenRecordset    'ouvre la requete
      Do Until t.EOF
     
            Set xlA = CreateObject("excel.application")    'lance Excel
            xlA.Visible = True
            xlA.Workbooks.Open ("D:\Mes documents\GLOBAL\Satisfaction client\Baromètre\Analyse\Reporting\test.xls")       'ouvre le fichier
            Set xlW = xlA.ActiveWorkbook
     
            Call Exportation("BASE_RETOURS", "D:\Mes documents\GLOBAL\Satisfaction client\Baromètre\Analyse\Reporting\test.xls", "test")
     
            xlW.SaveAs "D:\Mes documents\GLOBAL\Satisfaction client\Baromètre\Analyse\Reporting\ ' t_secteur!SECTEUR'_OK.xls"
            xlA.Quit
            Set xlA = Nothing    ' puis libère la référence.
            t_secteur.MoveNext
        Loop
     
     
     
    End Sub
     
    Sub Exportation(requete As String, fichier As String, onglet As String)
     
     Dim t As DAO.Recordset
     Dim qdf As DAO.QueryDef
     Dim db As DAO.Database
     Dim i As Integer
     Dim s As String, NumChamp As Long, ligne As Long
     
     ligne = 1
     Set db = CurrentDb
     Set qdf = db.QueryDefs(requete)
     For i = 0 To qdf.Parameters.Count - 1
         On Error Resume Next
        qdf.Parameters(i).Value = Eval(qdf.Parameters(i).Name)
        If Err.Number = 2482 Then ' Paramètre non évaluable
            ' Demande la saisie du paramètre dans une inputbox
            qdf.Parameters(i).Value = InputBox(qdf.Parameters(i).Name)
        End If
        On Error GoTo 0
     Next
      Set t = qdf.OpenRecordset    'ouvre la requete
     
     Do Until t.EOF
        If t!SECTEUR = "Aquitaine" Then
            ligne = ligne + 1            'ligne suivante dans la feuille Excel
            For NumChamp = 0 To 24        'pour chaque colonne de la requete
                If IsNull(t(NumChamp)) Then s = "" Else s = t(NumChamp)     'recupération des données au format Texte
             xlW.Sheets(onglet).Cells(ligne, NumChamp + 1) = s 'ecriture dans la cellule
            Next NumChamp
        End If
        t.MoveNext                    'enregistrement suivant
      Loop
      t.Close
     Set t = Nothing
     Set qdf = Nothing
     Set db = Nothing
     
     
    End Sub

    Merci d'avance

    Eddy

Discussions similaires

  1. [AC-2003] Exécution d'une requete de regroupement puis d'une requete de mise à jour
    Par ostrich95 dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 13/03/2014, 11h16
  2. [XL-2010] Existence d'une valeur dans une table Access (VBA sous Excel)
    Par kail_tak dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 16/10/2013, 23h02
  3. Une requete access à modifier sous delphi
    Par Zizou7 dans le forum Bases de données
    Réponses: 3
    Dernier message: 06/07/2009, 10h19
  4. [AC-2003] Exporter une requête ou un formulaire filtré sous excel
    Par Soulq dans le forum IHM
    Réponses: 2
    Dernier message: 02/07/2009, 12h08
  5. Réponses: 7
    Dernier message: 21/09/2006, 14h06

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