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 resultat de filtres sur un formulaire en excel


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 18
    Points : 11
    Points
    11
    Par défaut Export resultat de filtres sur un formulaire en excel
    Bonjour,

    je souhaite exporter le résultat de plusieurs filtres ( liste déroulante ) sur un formulaire En Excel , en cliquant sur un bouton tout simplement.

    pour info : j'obtiens le résultat des filtres en cliquant sur un bouton de commande dont le code est :

    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 CmdFiltre_Click()
    f = ""
    If Not IsNull(Me.RRLP) And Me.RRLP <> "" Then
    f = "RLP LIKE ""*" & Me.RRLP & "*"""
    End If
    If Not IsNull(Me.RCalibres) And Me.RCalibres <> "" Then
    If f <> "" Then
    f = f & " AND Calibre = """ & Me.RCalibres & """"
    Else
    f = "Calibre = """ & Me.RCalibres & """"
    End If
    End If
    If Not IsNull(Me.RRCP) And Me.RRCP <> "" Then
    If f <> "" Then
    f = f & " AND RCP = """ & Me.RRCP & """"
    Else
    f = "RCP = """ & Me.RRCP & """"
    End If
    End If
    If Not IsNull(Me.RLPR) And Me.RLPR <> "" Then
    If f <> "" Then
    f = f & " AND LPR = """ & Me.RLPR & """"
    Else
    f = "LPR = """ & Me.RLPR & """"
    End If
    End If
    If Not IsNull(Me.RLD) And Me.RLD <> "" Then
    If f <> "" Then
    f = f & " AND Batiment = """ & Me.RLD & """"
    Else
    f = "Batiment = """ & Me.RLD & """"
    End If
    End If
    If Not IsNull(Me.RRQP) And Me.RRQP <> "" Then
    If f <> "" Then
    f = f & " AND RQP LIKE ""*" & Me.RRQP & "*"""
    Else
    f = "RQP LIKE ""*" & Me.RRQP & "*"""
    End If
    End If
    If Not IsNull(Me.RE_FTA) And Me.RE_FTA <> "" Then
    If f <> "" Then
    f = f & " AND Etat_FTA LIKE ""*" & Me.RE_FTA & "*"""
    Else
    f = "Etat_FTA LIKE ""*" & Me.RE_FTA & "*"""
    End If
    End If
    If Not IsNull(Me.RDPA) And Me.RDPA <> "" Then
    If f <> "" Then
    f = f & " AND DPA LIKE ""*" & Me.RDPA & "*"""
    Else
    f = "DPA LIKE ""*" & Me.RDPA & "*"""
    End If
    End If
    If Not IsNull(Me.RPRI) And Me.RPRI <> "" Then
    If f <> "" Then
    f = f & " AND PRI LIKE ""*" & Me.RPRI & "*"""
    Else
    f = "PRI LIKE ""*" & Me.RPRI & "*"""
    End If
    End If
    If Not IsNull(Me.RNiveau) And Me.RNiveau <> "" Then
    If f <> "" Then
    f = f & " AND Niveau LIKE ""*" & Me.RNiveau & "*"""
    Else
    f = "Niveau LIKE ""*" & Me.RNiveau & "*"""
    End If
    End If
    If Not IsNull(Me.Rdate1) And Me.Rdate1 <> "" And Not IsNull(Me.Rdate2) And Me.Rdate2 <> "" Then
    If f <> "" Then
    f = f & " AND clng([Date de détection]) BETWEEN " & CLng(Me.Rdate1) & " AND " & CLng(Me.Rdate2) & ""
    Else
    f = "clng([Date de détection]) BETWEEN " & CLng(Me.Rdate1) & " AND " & CLng(Me.Rdate2) & ""
    End If
    End If
    Me.Filter = f
    Me.FilterOn = True
    End Sub

    Merci de m 'aider je suis bloqué pour l'instant ,je suis débutant en VBA , ce code je l ai trouve sur le net.

    Cdlt

    Quand tu postes du code, tu dois l'insérer dans les balises !
    http://dolphy35.developpez.com/images/Balises.gif

  2. #2
    Membre actif Avatar de Pittouti
    Homme Profil pro
    Consultant SAP
    Inscrit en
    Avril 2012
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant SAP
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2012
    Messages : 246
    Points : 257
    Points
    257
    Par défaut
    Bonjour Fortuna,

    tu dois créer une table intermédiaire dans laquelle tu stocke le résultat ( via une requête ajout ) et tu exporte cette table sous format excel.

    Pense à purger ta table ( Requête suppression ) après chaque export.
    ________________________________________________________________________________________

    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 +1 de votre part

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 18
    Points : 11
    Points
    11
    Par défaut
    Merci pour ton aide ,
    ce que je pensais faire , par une requête ou une table mais comment , par code ou macro?
    Si par code ,je ne sais pas comment faire par VBA.

    Cdlt

  4. #4
    Membre actif Avatar de Pittouti
    Homme Profil pro
    Consultant SAP
    Inscrit en
    Avril 2012
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant SAP
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2012
    Messages : 246
    Points : 257
    Points
    257
    Par défaut
    tu peux utiliser l'un ou l'autre.

    tout dépends de ce que tu maitrise.

    en VBA tu utilisera Docmd.runsql pour tes requêtes

    et DoCmd.OutputTo pour l'export
    ________________________________________________________________________________________

    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 +1 de votre part

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 18
    Points : 11
    Points
    11
    Par défaut
    Justement je sais pas comment faire ,
    un vba à intégrer dans le code que j ai cite ou créer un bouton à part ?

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    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
    Me.FilterOn = True
    Set rs = Me.Recordset.OpenRecordset
    Set xls = CreateObject("Excel.application")
    xls.Visible = True
     
     
    Set wb = xls.workbooks.Add
    Set sh = wb.sheets.Add
     
     
    For I = 0 To rs.Fields.Count - 1
        sh.range("A1").offset(0, I) = rs(I).Name
    Next
    sh.range("A2").CopyFromRecordset rs
    wb.saveas "C:\toto.xlsx"
    wb.Close False
    xls.Quit

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 18
    Points : 11
    Points
    11
    Par défaut
    Merci ça marche bien ,
    Je souhaite afficher une boite de dialogue pour proposer l enregistrement dans un répertoire au choix.
    merci

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 18
    Points : 11
    Points
    11
    Par défaut
    Merci ça marche bien ,
    Je souhaite afficher une boite de dialogue pour proposer l enregistrement dans un répertoire au choix.
    merci

    Citation Envoyé par dysorthographie Voir le message
    Bonsoir,
    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
    Me.FilterOn = True
    Set rs = Me.Recordset.OpenRecordset
    Set xls = CreateObject("Excel.application")
    xls.Visible = True
     
     
    Set wb = xls.workbooks.Add
    Set sh = wb.sheets.Add
     
     
    For I = 0 To rs.Fields.Count - 1
        sh.range("A1").offset(0, I) = rs(I).Name
    Next
    sh.range("A2").CopyFromRecordset rs
    wb.saveas "C:\toto.xlsx"
    wb.Close False
    xls.Quit

  9. #9
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    Bonjour,
    regarde ici : http://www.developpez.net/forums/d16...l-nom-colonne/
    la solution est dans le module utilisant BrowseForFolder
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 18
    Points : 11
    Points
    11
    Par défaut
    Comment l'inserer dans mon code ?
    Merci
    Citation Envoyé par tee_grandbois Voir le message
    Bonjour,
    regarde ici : http://www.developpez.net/forums/d16...l-nom-colonne/
    la solution est dans le module utilisant BrowseForFolder

  11. #11
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    Bonjour,
    j'ai intégré le choix du dossier dans le code donné par dysorhographie :
    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
    ' Déclaration des variables pour l'affichage du choix de dossier
    Dim objShell As Object
    Dim objFolder As Object
    Dim strMessage As String
    Dim strChemin As String
     
    Me.FilterOn = True
    Set rs = Me.Recordset.OpenRecordset
    Set xls = CreateObject("Excel.application")
    xls.Visible = True
     
    ' Chargement des variables pour l'affichage des répertoires 
    strMessage = "Sélection d'un répertoire de sauvegarde :" 
    Set objShell = CreateObject("Shell.Application")
    Set objFolder = objShell.BrowseForFolder(&H0&, strMessage, 1)
     
    Set wb = xls.workbooks.Add
    Set sh = wb.sheets.Add
     
    For I = 0 To rs.Fields.Count - 1
        sh.range("A1").offset(0, I) = rs(I).Name
    Next
    sh.range("A2").CopyFromRecordset rs
     
    ' Affichage des répertoires et sélection du chemin dossier
    On Error Resume Next  ' Evite le message d'erreur 91 si on sort sans sélection
    strChemin = objFolder.ParentFolder.ParseName(objFolder.Title).Path & ""
     
    ' Dossier par défaut si pas de sélection
    If strChemin = "" then strChemin = "C:"
     
    ' Sauvegarde du fichier Excel
    wb.saveas strChemin & "\" & "toto.xlsx"
    wb.Close False
    xls.Quit
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 18
    Points : 11
    Points
    11
    Par défaut
    Merci pour ton aide , ça marche mais j ai une feuille vide d'excel en premier plan devant la boite de dialogue , comment virer cette page excel en premier plan?
    y a t il un moyen que le nom du fichier soit saisi par l'utilisateur sur la boite de dialogue?

  13. #13
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    wb.Application.DisplayAlerts = False
    wb.Sheets(1).Delete
    wb.Application.DisplayAlerts = True

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 18
    Points : 11
    Points
    11
    Par défaut
    Ça ne fonctionne pas

    Citation Envoyé par dysorthographie Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    wb.Application.DisplayAlerts = False
    wb.Sheets(1).Delete
    wb.Application.DisplayAlerts = True

  15. #15
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    Bonsoir,
    je propose une solution à ton problème mais j'espère que cela sera ta dernière demande concernant le post d'origine (exporter un résultat vers Excel). La prochaine fois, évite de poser une nouvelle question une fois que quelqu'un t'as trouvé une solution pour le précédent.
    Je te remercie, après avoir testé ce code, de marquer ce post comme résolu. Ouvres un autre post si tu as une autre demande ne concernant pas directement comment exporter vers Excel.
    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
     
    ' Déclaration des variables pour l'affichage du choix de dossier
    Dim objShell As Object
    Dim objFolder As Object
    Dim strMessage As String
    Dim strChemin As String
     
    Me.FilterOn = True
    Set rs = Me.Recordset.OpenRecordset
    Set xls = CreateObject("Excel.application")
     
    ' Chargement des variables pour l'affichage des répertoires
    strMessage = "Sélection d'un répertoire de sauvegarde :"
    Set objShell = CreateObject("Shell.Application")
    Set objFolder = objShell.BrowseForFolder(&H0&, strMessage, 1)
     
    Set wb = xls.Workbooks.Add
    Set sh = wb.Sheets.Add
     
    For I = 0 To rs.Fields.Count - 1
        sh.Range("A1").Offset(0, I) = rs(I).Name
    Next
    sh.Range("A2").CopyFromRecordset rs
     
    ' Affichage des répertoires et sélection du chemin dossier
    On Error Resume Next  ' Evite le message d'erreur 91 si on sort sans sélection
    strChemin = objFolder.ParentFolder.ParseName(objFolder.Title).Path & ""
     
    ' Dossier par défaut si pas de sélection
    If strChemin = "" Then strChemin = "C:"
     
    ' Affichage de la fenêtre pour sauvegarde du fichier Excel
     
     xls.Dialogs(xlDialogSaveAs).Show strChemin & "\" & "toto.xlsx"
    wb.Close False
    xls.Quit
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 18
    Points : 11
    Points
    11
    Par défaut
    Merci pour votre aide , j ai pu avancer 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
    Set rs = Me.Recordset.OpenRecordset
    Set xls = CreateObject("Excel.application")
    xls.Visible = True
     
     
    Set wb = xls.Workbooks.Add
    Set sh = wb.Sheets.Add
     
     
    For I = 0 To rs.Fields.Count - 1
        sh.Range("A1").Offset(0, I) = rs(I).Name
    Next
    sh.Range("A2").CopyFromRecordset rs
    xls.Visible = True
    Du coup j ai une feuille Excel avec les résultats du filtre qui s'affiche à l écran , que je peux l'enregistrer .

    Merci .

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

Discussions similaires

  1. [HTML] Filtre sur un formulaire de saisie
    Par bdptaki dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 13/03/2008, 15h33
  2. Longueur Max d'un filtre sur un formulaire
    Par sebinator dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 28/01/2008, 21h35
  3. [VBA] filtre sur un formulaire en mode feuille de données
    Par dalmasma dans le forum Requêtes et SQL.
    Réponses: 24
    Dernier message: 25/07/2007, 11h09
  4. Réponses: 7
    Dernier message: 07/06/2007, 10h22
  5. Problème de filtre sur un formulaire
    Par bernardmichel dans le forum IHM
    Réponses: 6
    Dernier message: 12/12/2005, 15h36

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