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 dans excel le resultat d'un sous formulaire filtré [AC-2010]


Sujet :

VBA Access

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2013
    Messages : 74
    Points : 57
    Points
    57
    Par défaut Exporter dans excel le resultat d'un sous formulaire filtré
    Bonjour,

    Le titre résume bien mon problème. J'ai un formulaire avec des zones de lists déroulantes qui filtre un sous formulaire. J'ai ajouté un bouton de comande et j'aimerais que lorsqu'on clique dessus le resultat du sous formulaire (qui sera probablement filtré) soit exporté dans excel. J'ai regardé quelques tutoriel mais je n'ai pas réussi à impléméneter une méthode correcte.

    Je me suis tourné vers une façon simple d'exporter les données

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Private Sub cmdExcel_Click()
     
    Dim outputFileName As String
    outputFileName = CurrentProject.Path & "\Export_" & Format(Date, "yyyyMMdd") & ".xls"
    DoCmd.OutputTo acOutputForm, "Forms.Nom_Formulaire.Nom_SousFormulaire.Form", acFormatXLS, outputFileName, True
     
    End Sub
    Malheureusement je n'ai pas l'impréssion qu'avec cette méthode je pêut récupérer les données actualisées de mon sous formulaire. Quelqu'un autait-il une solution à mon problème ?

    Merci d'avance

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Bonsoir,

    Intéresses-toi plutôt à la méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Docmd.TransfertSpreadSheet
    Tu peux l'utiliser pour exporter la source (requête) de ton sous-formulaire.

    @+
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2013
    Messages : 74
    Points : 57
    Points
    57
    Par défaut
    Bonjour,

    Alors d'abord merci beaucoup madefemere pour ta réponse, cette simple ligne m'a amené à beaucoup réfléchir et à pondre un code. Je le met pour si un jour quelqu'un en aurait besoin. Il est un peu big à première vue, mais c'est juste parce qu'il y a beaucoup de filtres et de cas pour ordonner la liste.

    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
     
     
    Private Sub cmdExcel_Click()
     
     
        'Création de la requête
        CurrentDb.CreateQueryDef "strSQLc"
     
        'Chaine pour modifier la requête
        Dim strSQL As String
        strSQL = "SELECT Modules.* FROM Projet INNER JOIN (Modules INNER JOIN ModulesConstruction ON Modules.orderNumber = ModulesConstruction.orderNumber) ON Projet.projectNumber = ModulesConstruction.projectNumber Where ((Modules.orderNumber is not null)  "
     
        'On complète la requête avec les valeurs qu'on a dans le filtres (ici les filtres peuvent être dans des sous formulaires dans des sous formulaires)
     
        If QuickSearchValue <> "" Then
            strSQL = strSQL + " And Modules.orderNumber like ""*" + QuickSearchValue + "*"" "
        End If
     
        If Me![cbxFilterBy].Value Then
     
            If Not IsNull(Me![sfmFilterBy]![cboPlatform].Value) And Me![sfmFilterBy]![cboPlatform].Value <> "(Tous)" Then
                strSQL = strSQL + " And Modules.platform= [forms]![OngletModule]![sfmFilterBy]![cboPlatform].Value "
            End If
     
            If Me![sfmFilterBy]![txtModuleName].Value <> "" Then
                strSQL = strSQL + " And Modules.moduleName like ""*" + Me![sfmFilterBy]![txtModuleName].Value + "*"" "
            End If
     
            If Not IsNull(Me![sfmFilterBy]![cboProject].Value) And Me![sfmFilterBy]![cboProject].Value <> "(Tous)" And Me![sfmFilterBy]![cboProject].Value <> "(Without)" Then
                strSQL = strSQL + " And projectName = [forms]![OngletModule]![sfmFilterBy]![cboProject].Value "
            End If
     
            If Not IsNull(Me![sfmFilterBy]![cboProject].Value) And Me![sfmFilterBy]![cboProject].Value = "(Without)" Then
               strSQL = strSQL + " AND projectName Is Null "
            End If
     
            If Me![sfmFilterBy]![cbxPDF].Value Then
                strSQL = strSQL + " AND description Is Null "
            End If
     
        End If
     
        'Ici pour le cas du order by
     
        If Me![cbxOrderBy].Value Then
            Select Case Me![sfmOrderBY]![gopOrderBy]
                    Case 1
                        strSQL = strSQL + ") ORDER BY Modules.moduleName , Modules.platform ,Modules.orderNumber"
                    Case 2
                        strSQL = strSQL + ") ORDER BY Modules.platform ,Modules.orderNumber, Modules.moduleName "
            End Select
        End If
     
     
        'On finit l'update de la requête
        strSQL = strSQL + " ; "
        'Mise à jour de la requête
        CurrentDb.QueryDefs("strSQLc").SQL = strSQL
     
        'Lieu où l'on range le fichier excel
        Dim outputFileName As String
        outputFileName = CurrentProject.Path & "\Export_" & Format(Date, "yyyyMMdd") & ".xls"
     
        'Création du fichier Excel
        DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "strSQLc", outputFileName, True
     
        'Destruction de la requête
        DoCmd.DeleteObject acQuery, "strSQLc"
     
    End Sub
    Aussi, si quelqu'un avait une autre solution que celle ci qui est un peu "bourin" j'en serais très reconnaissant (va falloir que je l'implémente au moins 10 fois dans 10 cas différents, donc vous immaginez un peu mon problème....)

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Bonjour,

    Un code est bien quand il fait ce qu'on lui demande de faire, il tourne relativement vite et qu'il soit lisible par autrui pour une éventuelle maintenance.
    Après tout dépend du contexte et de sa ré-utilisation. Mais vu tes contraintes, je ne vois pas où améliorer le tien.

    Sauf peut-être à essayer de regrouper les conditions aux lignes 29 et 33 ? Mais on va y gagner combien en vitesse ? Je laisse le soin à quelqu'un d'autres l'amélioration si possible.

    Bonne continuation et n'oublies pas de mettre le sujet en résolu.
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2013
    Messages : 74
    Points : 57
    Points
    57
    Par défaut
    Ok merci pour tout !!

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

Discussions similaires

  1. Champs blanc dans un etat exporté dans Excel
    Par DeveloMagaly dans le forum WinDev
    Réponses: 1
    Dernier message: 14/05/2008, 09h12
  2. [CSV] Format des données exportées dans Excel
    Par magsmile dans le forum Langage
    Réponses: 6
    Dernier message: 07/09/2007, 17h46
  3. Exporter dans Excel automatiquement.
    Par JarAsh dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 31/07/2007, 16h23
  4. choix de la feuille d'exportation dans Excel
    Par Mr White dans le forum Access
    Réponses: 4
    Dernier message: 02/12/2005, 18h41
  5. export dans Excel
    Par mathieu57 dans le forum C++
    Réponses: 4
    Dernier message: 17/10/2005, 13h07

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