Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/02/2011, 19h23   #1
Invité de passage
 
Inscription : février 2011
Messages : 38
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 38
Points : 4
Points : 4
Par défaut Exporter 10 requêtes vers classeur Excel

Bonsoir,

J'aimerais pouvoir exporter 3 de mes requêtes en même temps,sur 3 feuilles différentes a l'aide d'un bouton, je me suis aider du tutoriel Communication entre Access et Excel (Notre référent Vba au boulot et submergé de travail et m'a fais comprendre de me débrouillé)
§V. Automation
V-A. Le code

http://cafeine.developpez.com/access...iel/excel/#LIV

J'arrive bien a exporter une de mes requête mais pas les 3 en mêmes temps

Quelqu'un Peut-il m'aider SVP.

Merci d'avance
demichoux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2011, 05h41   #2
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 609
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 609
Points : 30 959
Points : 30 959
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

Est-ce que tes 3 requêtes doivent être sur la même feuille ou des feuilles différentes ?

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2011, 06h54   #3
Invité de passage
 
Inscription : février 2011
Messages : 38
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 38
Points : 4
Points : 4
Bonjour Philippe JOCHMANS,

Sur des feuilles différentes de préférence

Merci
demichoux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2011, 13h29   #4
Invité de passage
 
Inscription : février 2011
Messages : 38
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 38
Points : 4
Points : 4
En faite je n'ai pas 3 requêtes mais 10 dsl

Voila

Bonne Journée à tous
demichoux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2011, 09h06   #5
Invité de passage
 
Inscription : février 2011
Messages : 38
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 38
Points : 4
Points : 4
Bonjour,

J'ai trouver ce code, mais cela ne fonctionne pas correctement! cela importe que la moitié de mes requête et en plus il importe pas les données qui sont dans mes requête dans mon classeur

Code VBA :
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
 Private Sub Commande43_Click()
      ' déclaration des variables
   Dim tabListe() As String             ' tableau où on va stocker la liste des requête
   Dim xlApp As Excel.Application       ' ne pas oublier de cocher la référence Excel
   Dim xlBook As Excel.Workbook         ' le classeur où se trouve la feuille
   Dim xlSheet As Excel.Worksheet       ' la feuille où on va stocker les tables
   Dim db As DAO.Database              ' nous utilisons la bibilothèque DAO
   Dim rec As DAO.Recordset             ' le recordset pour récupérer les données des tables
   Dim i As Integer                     ' pour boucler sur les tables
   Dim j As Integer
 
 
   Set db = CurrentDb
 
   ' on rempli le tableau avec 8 requête
   ReDim tabListe(9)
 
    tabListe(0) = "J1 et J2 Indicateurs Analyse"
    tabListe(1) = "J1 et J2 Indicateurs Réelle"
    tabListe(2) = "J1 et J2 Indicateurs Théorique"
    tabListe(3) = "J3 et J4 Indicateurs Analyse"
    tabListe(4) = "J3 et J4 Indicateurs Réelle"
    tabListe(5) = "J3 et J4 Indicateurs Théorique"
    tabListe(6) = "Divers Indicateurs Analyse"
    tabListe(7) = "Divers Indicateurs Réelle"
    tabListe(8) = "Divers Indicateurs Théorique"
   ' on créé notre classeur Excel
   Set xlApp = CreateObject("Excel.Application")
   Set xlBook = xlApp.Workbooks.Add
 
   ' bouclage sur les tables pour remplir la feuille
   For i = 0 To UBound(tabListe()) - 1
 
        Set xlSheet = xlBook.Worksheets.Add
        xlSheet.Name = tabListe(i)
            ' les entetes
            '  .Fields(Index).Name renvoie le nom du champ
 
            Set rec = CurrentDb.OpenRecordset(tabListe(i), dbOpenSnapshot)
 
            For j = 0 To rec.Fields.Count - 1
                xlSheet.Cells(1, j + 1) = rec.Fields(j).Name
                    ' Nous appliquons des enrichissements de format aux cellules
                     With xlSheet.Cells(1, 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
 
            i = i + 1
            rec.MoveNext
 
 
        Set rec = Nothing
   Next i
 
   MsgBox "Fin de traitement -  votre fichier Excel a été enregistré "
    xlBook.SaveAs "D:\TEST.xls"
 
   ' libération des objets
   'xlBook.Save
   xlApp.Quit
   Set xlSheet = Nothing
   Set xlBook = Nothing
   Set xlApp = Nothing
 
End Sub

I need HELP, please
demichoux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2011, 12h21   #6
Rédacteur/Modérateur
 
Avatar de jpcheck
 
Jean-Philippe ANDRÉ
Inscription : juillet 2007
Messages : 7 863
Détails du profil
Informations personnelles :
Nom : Jean-Philippe ANDRÉ
Âge : 28
Localisation : France

Informations forums :
Inscription : juillet 2007
Messages : 7 863
Points : 10 743
Points : 10 743
Envoyer un message via MSN à jpcheck
Salut,

en terme de performance du code, je recommanderai plus un
Code :
Range.CopyFromRecordset RS
ou le code d'export
Code :
Docmd.TransferSpreadsheet acExport
plutot que de faire du ligne a ligne
__________________
Pas de question technique par MP, je ne réponds pas

Mon perso ? Une vraie brute

Tutos Access, Tâches planifiées et Batch,Tables de Paramètres sous Access, Excel et Batch, Tâches planifiées et Access
jpcheck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2011, 13h33   #7
Invité de passage
 
Inscription : février 2011
Messages : 38
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 38
Points : 4
Points : 4
Bonjour jpcheck,

Pourrais tu être plus explicite stp, car le code c'est quelque chose que j'ai récupérer et que j'ai essayer de bidouiller avec mes 3 pauvres connaissances en VBA
demichoux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2011, 13h57   #8
Expert Confirmé
 
Avatar de Godzestla
 
Homme
Chercheur de bonheur
Inscription : août 2007
Messages : 2 255
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Chercheur de bonheur
Secteur : Industrie

Informations forums :
Inscription : août 2007
Messages : 2 255
Points : 2 979
Points : 2 979
Bonjour,

ton code semble se contenter d'inscrire le nom des champs en ligne 1.

la Méthode TransferSpreadsheet indiqué par Jpcheck fonctionne très bien mais elle a une limitation importante : tu ne peux spécifier la feuille et donc tu dois considérer qu'il faut faire 1 TransferSpreadsheet différent vers 1 classeur excel différent par table ou requète. Quand je l'utilise, les résultats sont dans la feuille 1 qui prend le nom de la table ou requète exportée.

Cela te convient ou pas ?

Sinon, le copyFromrecordset est très performant et tu peux alors par ton code mettre tout dans le même classeur excel.
__________________
(\ _ /) Cordialement G@dz
(='.'=)

(")-(") Vous avez des neurones. Sollicitez-les. . Si vous êtes aidé, pensez à Voter.
Godzestla est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2011, 14h06   #9
Invité de passage
 
Inscription : février 2011
Messages : 38
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 38
Points : 4
Points : 4
Bonjour Godzestla,

Ce que je souhaiterai c'est que mes requête (ainsi que les données qui apparaise dans mes requêtes) soit importer dans un classeur sur plusieurs feuille, cad une feuille par requête

voila mon besoin
demichoux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2011, 14h21   #10
Expert Confirmé
 
Avatar de Godzestla
 
Homme
Chercheur de bonheur
Inscription : août 2007
Messages : 2 255
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Chercheur de bonheur
Secteur : Industrie

Informations forums :
Inscription : août 2007
Messages : 2 255
Points : 2 979
Points : 2 979
Bonne définition de besoin.

Essaie cette ligne après ta boucle sur J à la place de rec.movenext

Code :
1
2
    'Paste results line above names
    xlsheet.Range("A1").Offset(1, 0).CopyFromRecordset rec
Et enlève moi cette abomination :
Dans une boucle avec i comme compteur, c'est du suicide tu ne crois pas !!!
__________________
(\ _ /) Cordialement G@dz
(='.'=)

(")-(") Vous avez des neurones. Sollicitez-les. . Si vous êtes aidé, pensez à Voter.
Godzestla est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 23/02/2011, 14h44   #11
Invité de passage
 
Inscription : février 2011
Messages : 38
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 38
Points : 4
Points : 4
MERCI Godzestla pour aide ça fonctionne

Probléme résolu
demichoux est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h04.


 
 
 
 
Partenaires

Hébergement Web