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

IHM Discussion :

Exporter des données filtrées vers Excel [AC-2010]


Sujet :

IHM

  1. #1
    Membre à l'essai
    Homme Profil pro
    Stagiaire
    Inscrit en
    Avril 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Chine

    Informations professionnelles :
    Activité : Stagiaire

    Informations forums :
    Inscription : Avril 2013
    Messages : 26
    Points : 21
    Points
    21
    Par défaut Exporter des données filtrées vers Excel
    Bonjour à tous et à toutes !

    Est-ce possible de créer un bouton dans un formulaire qui permettrait de filtrer des données dans une colonne et d'exporter toutes les colonnes contenant ces données sur un fichier Excel?

    Par exemple, j'ai les colonnes "Id" (PK), "Couleur", "Age" et "Modele", je clique sur le bouton magique et choisis la colonne "Couleur", puis ça m'affiche toutes les valeurs possibles (distinct) et si je choisis "Bleu" ça va me copier dans un fichier Excel fraichement crée toutes les lignes contenant cette valeur.

    Merci d'avance.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Indépendant développeur et formateur
    Inscrit en
    Octobre 2007
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant développeur et formateur
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 036
    Points : 1 598
    Points
    1 598
    Par défaut
    Hello,
    ta question n'est pas claire: importer ou exporter? (vu du coté Access)
    de toute façon, la réponse est (exemple d'export):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Export_Click()
    Dim Rep_Export As String
    Rep_Export = DLookup("texte", "Parametres", "Formulaire_concerné='Export_compta'")
    DoCmd.OutputTo acOutputQuery, "Export_Achats", "Excel97-Excel2003Workbook(*.xls)", Rep_Export & "Export Achats " & Year(Fin) & ".xls"
    DoCmd.OutputTo acOutputQuery, "Export_Ventes", "Excel97-Excel2003Workbook(*.xls)", Rep_Export & "Export Ventes " & Year(Fin) & ".xls"
    DoCmd.OutputTo acOutputQuery, "Export_Banque", "Excel97-Excel2003Workbook(*.xls)", Rep_Export & "Export Banque " & Year(Fin) & ".xls"
    End Sub
    ce qui me donne mes trois livres compta: Export Achats 2012, etc
    tu peux farfouiller l'aide pour essayer d'autres options de sortie

  3. #3
    Membre à l'essai
    Homme Profil pro
    Stagiaire
    Inscrit en
    Avril 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Chine

    Informations professionnelles :
    Activité : Stagiaire

    Informations forums :
    Inscription : Avril 2013
    Messages : 26
    Points : 21
    Points
    21
    Par défaut
    Salut Simplifi,

    Au temps pour moi, je me suis un peu emele les pinceaux, c'est bel et bien exporter, de Access a Excel.
    J'ai un peu de mal a comprendre les parametres et l'utilite du DLookup peux-tu (ou quelqu'un) me les expliquer?

    Merci encore

    P.S.: Puisque je vois qu'un moderateur est passe sur le premier post: desole, je n'ai pas d'accents sur mon clavier :/

  4. #4
    Membre à l'essai
    Homme Profil pro
    Stagiaire
    Inscrit en
    Avril 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Chine

    Informations professionnelles :
    Activité : Stagiaire

    Informations forums :
    Inscription : Avril 2013
    Messages : 26
    Points : 21
    Points
    21
    Par défaut
    Bonjour !

    J'ai reussi a comprendre pour l'export, mais je n'arrive pas a faire en sorte que l'utilisateur puisse choisir son critere.

    (j'ai edite le code qui prenait de la place pour pas grand chose, a l'edit2 il y a un code a jour et qui fait la meme chose qu'avant en mieux)

    Merci encore !

    Edit: Je viens de comprendre que ca ne marchera jamais ce que j'essaye de faire
    Donc si quelqu'un a une solution pour pouvoir realiser une requete que l'utilisateur choisit (sans devoir toutes les ecrire) je suis prenant. Option bonus: qu'il puisse choisir la colonne dans une listbox/autre sans avoir a la taper (parce qu'il y a des colonnes avec des noms relativement longs...).
    Je continue a chercher de mon cote.

    Edit2: J'ai reussi a faire une requete choisie par l'utilisateur !
    La derniere chose qui serait bien: creer une Msgbox avec une liste ou case a cocher qui prend automatiquement toutes les colonnes de ma table. C'est possible? Sinon je peux creer une Listbox/combobox dans le formulaire et y recuperer la donnee, mais c'est moins classe !

    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
    Private Sub Export_Click()
        Dim Rep_Export, Criteria, Column As String
     
        Column = InputBox("Please select your column", "Column selection")
        CriteriaName = InputBox("" & Column & "= ?", "Criteria selection")
        Criteria = Chr(34) & CriteriaName & Chr(34)   
     
        Dim db As DAO.Database
        Dim qry, qryD As DAO.QueryDef
        Dim strConnect As String
        Dim strSQL As String
     
        Set db = CurrentDb
     
        'Finding the connexion path to the current table
        strConnect = db.QueryDefs("Export").Connect
        'Copy the SQL model of the main query
        strSQL = db.QueryDefs("Export").SQL
        'replace Column and Criteria by the new values defined at the beginning
        strSQL = Replace(strSQL, "Column", "" & Column)
        strSQL = Replace(strSQL, "Criteria", "" & Criteria & "")
        'New query created
        Set qry = db.CreateQueryDef("ExportTemp", strSQL)
        'Connect the new query to the current table path
        qry.Connect = strConnect
        'Export selected data with the query to a new XL file named: "Export 'Criteria' (MM/DD/YYYY HH.MM).xls"
        DoCmd.OutputTo acOutputQuery, "ExportTemp", "Excel97-Excel2003Workbook(*.xls)", "Export " & CriteriaName & _
        " (" & Month(Now) & "." & Day(Now) & "." & Year(Now) & " " & Hour(Time) & "h." & Minute(Time) & ") .xls"
     
        'Seeking all the queries
        For Each qryD In db.QueryDefs
        With qryD
            'Seeking query named "ExportTemp": we want to suppress the query created earlier
            If .Name = "ExportTemp" Then
                'querry found, we suppress it and stop the For
                 db.QueryDefs.Delete "ExportTemp"
                 Exit For
            End If
          End With
        Next qryD
    Et la requete:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *
    FROM dbo_LIV_Computers
    WHERE Column = Criteria;

  5. #5
    Membre expérimenté
    Homme Profil pro
    Indépendant développeur et formateur
    Inscrit en
    Octobre 2007
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant développeur et formateur
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 036
    Points : 1 598
    Points
    1 598
    Par défaut
    Hello
    mes excuses pour le retard
    première réponse: le dlookup est juste fait pour aller chercher le lieu de l'arborescence dans laquelle j'exporte les fichiers. ça me permet de changer de répertoire sans modifier le code
    deuxième réponse: pas de liste avec case à cocher dans un msgbox
    le formulaire est la bonne solution
    question: ton drapeau indique Chine: Whahou
    Français très loin de France ou Chinois parlant parfaitement le Français?

  6. #6
    Membre à l'essai
    Homme Profil pro
    Stagiaire
    Inscrit en
    Avril 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Chine

    Informations professionnelles :
    Activité : Stagiaire

    Informations forums :
    Inscription : Avril 2013
    Messages : 26
    Points : 21
    Points
    21
    Par défaut
    Pire: bresilien qui fait un stage en Chine pour sa fin de DUT en France

    J'ai fini par creer une combo associee a un code. Je met le tout ici au cas ou quelqu'un serait interesse a l'avenir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub ExportBox_GotFocus()
        Dim fieldNumber, lastField As Integer
     
        lastField = Me.Recordset.Fields.Count
     
        ExportBox.AddItem ("All")
        For fieldNumber = 0 To (lastField - 1)
            ExportBox.AddItem (Me.Recordset.Fields(fieldNumber).Name)
        Next fieldNumber
    End Sub
    Je sais pas si c'est optimal, mais ca marche !
    Ensuite j'ai bien sur adapte la fonction d'export (notamment pour exporter toute la BDD d'un coup, j'ai ete oblige de... Bidouiller).

    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
    Private Sub Export_Click()
        Dim Criteria, Column As String
        Dim db As DAO.Database
        Dim qry, qryD As DAO.QueryDef
        Dim strConnect As String
        Dim strSQL As String
     
        If IsNull(ExportBox.Value) Then
            MsgBox ("Please, select a field to export")
            ExportBox.SetFocus
            GoTo exitSub
        End If
     
        Column = ExportBox.Value
        If Column = "All" Then
            CriteriaName = "All"
            GoTo exportAll
        End If
        On Error Resume Next
        CriteriaName = InputBox("" & Column & "= ?", "Criteria selection")
        If CriteriaName = "" Then GoTo exitSub
        Criteria = Chr(34) & CriteriaName & Chr(34)
     
    exportAll:
        'db is now set as the current database
        Set db = CurrentDb
        'Finding the connexion path to the current query
        strConnect = db.QueryDefs("Export").Connect
     
        If ExportBox.Value = "All" Then
            'creating new query
            strSQL = "SELECT * FROM dbo_LIV_Computers"
        Else
            'Copy the SQL model of the main query
            strSQL = db.QueryDefs("Export").SQL
            'replace Column and Criteria by the new values defined at the beginning
            strSQL = Replace(strSQL, "Column", "" & Column)
            strSQL = Replace(strSQL, "Criteria", "" & Criteria & "")
        End If
     
        'New query created
        Set qry = db.CreateQueryDef("ExportTemp", strSQL)
        'Connect the new query to the current table path
        qry.Connect = strConnect
        'Export selected data with the query to a new XL file named: "Export 'Criteria' (MM/DD/YYYY HH.MM).xls"
        DoCmd.OutputTo acOutputQuery, "ExportTemp", "Excel97-Excel2003Workbook(*.xls)", "Export " & CriteriaName & _
        " (" & Month(Now) & "." & Day(Now) & "." & Year(Now) & " " & Hour(Time) & "." & Minute(Time) & ") .xls"
     
        'Seeking all the queries
        For Each qryD In db.QueryDefs
        With qryD
            'Seeking query named "ExportTemp": we want to suppress the query created earlier
            If .Name = "ExportTemp" Then
                'querry found, we suppress it and stop the For
                 db.QueryDefs.Delete "ExportTemp"
                 Exit For
            End If
          End With
        Next qryD
    exitSub:
    End Sub
    Merci pour le Dlookup, je vais le remettre du coup !

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 31/05/2013, 12h48
  2. Exporter des données OUTLOOK vers EXCEL
    Par devdev dans le forum VBA Outlook
    Réponses: 1
    Dernier message: 04/03/2009, 15h35
  3. Export des données MsAccess vers Excel
    Par vautour29 dans le forum Access
    Réponses: 3
    Dernier message: 26/01/2007, 20h14
  4. exporter des données access vers excel
    Par Sebastien_INR59 dans le forum Access
    Réponses: 8
    Dernier message: 20/06/2006, 23h29
  5. Envoyer des données mysql vers Excel
    Par thierry198 dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 09/11/2005, 19h59

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