Requête multicritères avec listing et export

Fermé
kakashingo Messages postés 4 Date d'inscription vendredi 11 janvier 2008 Statut Membre Dernière intervention 18 janvier 2008 - 17 janv. 2008 à 13:36
Leepao Messages postés 3 Date d'inscription mardi 18 mai 2010 Statut Membre Dernière intervention 21 mai 2010 - 20 mai 2010 à 09:18
Bonjour,

Tout d'abord merci pour le site car j'y ai trouve plein d'information et de code tres utiles. Mon niveau en VBA est quasi nul

J'ai un créé un formulaire de recherche multicritère sous access qui filtre mon formulaire.
Je voudrais pouvoir exporter ces données vers excel. Mais je n'exporte que le formulaire entier
Je souhaiterai pouvoir choisir quels champs exporter lors de mon filtre.
Mon niveau en vba ne me permet pas encore de trouver une solution.
Toute aide est la bienvenue!

PS j'ai lu le tuto de cafeine sur excel ---> [url]https://cafeine.developpez.com/access/tutoriel/excel/[/url]
J'ai essayer la methode automation mais ça m'extrait le formulaire entier



Mon Bouton Chercher
Private Sub Commande112_Click()
f = ""
If Not IsNull(Me.Rréseau) And Me.Rréseau <> "" Then
f = "Porteur LIKE ""*" & Me.Rréseau & "*"""
End If
If Not IsNull(Me.Rétat) And Me.Rétat <> "" Then
If f <> "" Then
f = f & " AND [Etat du dossier] = """ & Me.Rétat & """"
Else
f = "[Etat du dossier] = """ & Me.Rétat & """"
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 ([Date d'émission]) BETWEEN " & (Me.Rdate1) & " AND " & CLng(Me.Rdate2) & ""
Else
f = "CLng([Date d'émission]) BETWEEN " & CLng(Me.Rdate1) & " AND " & CLng(Me.Rdate2) & ""
End If
End If
Me.Filter = f
Me.FilterOn = True


ET pour le bouton extraction excel j'ai copié celui de "Automation" de cafeine en l'adaptant mais ça extrait tout

merci a tous!

3 réponses

kakashingo Messages postés 4 Date d'inscription vendredi 11 janvier 2008 Statut Membre Dernière intervention 18 janvier 2008
18 janv. 2008 à 09:20
Apres de multiple tentative je n'arrive tjrs pas au resultats souhaité :'(
0
Bonjour,

Je suis dans le même cas que toi avec le même Tuto de caféine que j'ai adapté.

Même un état moi ça m'irai bien...

Si tu as trouvé entre temps peux-tu m'aider.

Merci par avance.

Patrick.
0
Leepao Messages postés 3 Date d'inscription mardi 18 mai 2010 Statut Membre Dernière intervention 21 mai 2010
Modifié par Leepao le 18/05/2010 à 16:18
Bonjour,

Je suis dans le même cas que vous, si jamais quelqu'un a la solution, qu'il n'hésite pas à la partager.

Merci :)

Yannick.
0
Leepao Messages postés 3 Date d'inscription mardi 18 mai 2010 Statut Membre Dernière intervention 21 mai 2010
20 mai 2010 à 09:18
Bonjour à tous,

J'ai finalement trouvé la réponse donc si d'autres cherchent encore, voici ce qu'on m'a envoyé :

-------------------------------------------------------------------------------------------------------
Dans le code du bouton Exporter vers Excel, tu déclares un recordset ( Rec )
qui pointe sur une table "NomDeLaTable".
C'est donc normal que tu n'aies pas de filtrage des enregistrements.
Tu pourrais utiliser une méthode CreateQueryDef pour créer une requête qui reprendrait le filtre, mais cela risque de compliquer.
Il y a une autre possibilité en utilisant la propriété RecordsetClone du formulaire.
Les déclarations sont :

    Dim rec As Recordset
    Set rec = Me.RecordsetClone

Il vaut mieux déclarer la variable Rec au préalable. Cela peut fonctionner sans, mais c'est plus fiable.
Le recordset devient une copie du formulaire et ne contient que les enregistrements filtrés.

Autre remarque :

Pendant la génération du fichier Excel, l'utilisateur peut se demander si le programme tourne encore.
Dans ce cas, au début de l'exportation, tu écris la commande DoCmd.Hourglass True, cela affiche le sablier.
N'oublies pas de placer la commande DoCmd.Hourglass False à la fin du traitement sinon le curseur restera un sablier.
-------------------------------------------------------------------------------------------------------

En gros, il faut juste changer, par rapport au tuto de caféine,

le code :
Set rec = CurrentDb.OpenRecordset("Clients", dbOpenSnapshot)

par le code :
    Dim rec As Recordset
    Set rec = Me.RecordsetClone

Chez moi ça fonctionne.

A+
0