Bonjour,
Tout d'abord merci pour le site
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 ---> http://cafeine.developpez.com/access/tutoriel/excel/
J'ai essayer la methode automation mais ça m'extrait le formulaire entier
Mon Bouton Chercher
Code :
- 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
Code :
- Private Sub Commande165_Click()
- 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("Actions", dbOpenSnapshot)
-
- 'Initialisations
- Set xlApp = CreateObject("Excel.Application" )
- Set xlBook = xlApp.Workbooks.Add
-
- 'Ajouter une feuille de calcul
- Set xlSheet = xlBook.Worksheets.Add
- xlSheet.Name = "Tutoriel"
-
- ' le titre
- ' écriture dans la cellule de ligne 1 et de colonne 1
- xlSheet.Cells(1, 1) = "Export d'une table Access"
-
-
- ' les entetes
- ' .Fields(Index).Name renvoie le nom du champ
- For J = 0 To rec.Fields.Count - 1
- xlSheet.Cells(2, J + 1) = rec.Fields(J).Name
- ' Nous appliquons des enrichissements de format aux cellules
- With xlSheet.Cells(2, J + 1)
- .Interior.ColorIndex = 15
- .Interior.Pattern = xlSolid
- .Borders(xlEdgeBottom).LineStyle = xlContinuous
- .Borders(xlEdgeBottom).Weight = xlThin
- .Borders(xlEdgeBottom).ColorIndex = xlAutomatic
- .HorizontalAlignment = xlCenter
- End With
- Next J
-
- ' recopie des données à partir de la ligne 3
- I = 3
- Do While Not rec.EOF
- For J = 0 To rec.Fields.Count - 1
- ' .Fields(Index).Type renvoie le type du champ
- ' si c'est un Texte (dbText) nous insérons "'" pour
- ' qu'il soit reconnu par Excel comme du Texte
- If rec.Fields(J).Type = dbText Then
- xlSheet.Cells(I, J + 1) = "'" & rec.Fields(J)
- Else '-----> j'ai un message d'erreur (erreur 1004 = erreur defini par l'application ou par l'objet)
- xlSheet.Cells(I, J + 1) = rec.Fields(J) '-----> et pr afficher la date je dois mettre dbdate
- End If
- Next J
- I = I + 1
- rec.MoveNext
- Loop
-
- ' code de fermeture et libération des objets
- xlBook.SaveAs "C:\Documents and Settings\Nraymond\Bureau\Feuille.xls"
- xlApp.Quit
- rec.Close
- Set rec = Nothing
- Set xlSheet = Nothing
- Set xlBook = Nothing
- Set xlApp = Nothing
- t1 = Timer
- Debug.Print I & " enregistrements", Format(t1 - t0, "0" ) & " secondes"
- End Sub
|
Je vous remercie d'avance pour votre aide