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/12/2010, 16h51   #1
Membre à l'essai
 
Inscription : mars 2006
Messages : 126
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 126
Points : 22
Points : 22
Par défaut code export excel

Bonjour,

j'ai trouver ce code pour pouvoir réaliser un export excel du résultat dans formulaire basé sur une requête.
Quand j'appuyais sur le bouton, j'avais bien la fenêtre d'enregistrement qui s'ouvrait mais aucun fichier ne s'enregistrait et maintenant j'ai une erreur d'exécution '3012'

Quelqu'un peut m'aider, je débute

merci

Code :
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
Private Sub Btn_export_Click()
 
Dim db As Database
Dim qd As QueryDef
 
Set db = CurrentDb()
Set qd = db.CreateQueryDef("Resultat_req", strSQL)
 
qd.Close
 
On Error GoTo Export_excel_Err
 
 
    DoCmd.OutputTo acQuery, "Resultat_req", "MicrosoftExcelBiff8(*.xls)", "", True, "", 0
 
 
    DoCmd.DeleteObject acQuery, "Resultat_req"
 
Export_excel_Exit:
 
Exit Sub
 
Export_excel_Err:
    DoCmd.DeleteObject acQuery, "Resultat_req"
    Resume Export_excel_Exit
 
 
 
End Sub
bernards111 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2010, 21h04   #2
Membre Expert
 
Inscription : août 2006
Messages : 1 435
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 1 435
Points : 1 753
Points : 1 753
Bonsoir,
je verrai plutôt
un strSQL renseigné et un nom de fichier dans la commande OutputTo
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
Dim db As Database
Dim qd As QueryDef
Dim strSQL As String
strSQL = "SELECT * FROM NomTable;"
Set db = CurrentDb()
Set qd = db.CreateQueryDef("Resultat_req", strSQL)
 
qd.Close
 
On Error GoTo Export_excel_Err
 
    DoCmd.OutputTo acOutputQuery, "Resultat_req", "MicrosoftExcelBiff8(*.xls)", "c:\test.xls"
    DoCmd.DeleteObject acQuery, "Resultat_req"
 
Export_excel_Exit:
 
Exit Sub
 
Export_excel_Err:
    DoCmd.DeleteObject acQuery, "Resultat_req"
    Resume Export_excel_Exit
helas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2010, 11h14   #3
Membre régulier
 
Alexis CANET
Étudiant
Inscription : novembre 2009
Messages : 95
Détails du profil
Informations personnelles :
Nom : Alexis CANET
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2009
Messages : 95
Points : 70
Points : 70
Bonjour je ne comprend pas bien ce que tu veux faire, exporter une requéte au format excel? Pourquoi ne pas utiliser :
Code :
DoCmd.TransferSpreadsheet acExport, , "Table/Requète", Chemin, True, "Onglet"
@+

Alex
Deustalos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2010, 11h34   #4
Membre à l'essai
 
Inscription : mars 2006
Messages : 126
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 126
Points : 22
Points : 22
Oui je crois que je me complique la vie, suis débutant en vba et en circulant sur le forum j'ai pu voir que une seule ligne pouvait suffire

par contre mon export est basé sur le résultat d'un formulaire et pour "onglet" je ne vois pas très bien ce que je peux mettre???

DoCmd.TransferSpreadsheet acExport, , "Table/Requète", "c:\resultat_req.xls", True, "Onglet"

Pour cette ligne, j'ai juste à l'insérer à l'intérieur de :

Private Sub Btn_export_Click()

ou y at il autre chose à faire?

merci de ton aide
bernards111 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2010, 15h39   #5
Membre régulier
 
Alexis CANET
Étudiant
Inscription : novembre 2009
Messages : 95
Détails du profil
Informations personnelles :
Nom : Alexis CANET
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2009
Messages : 95
Points : 70
Points : 70
Citation:
par contre mon export est basé sur le résultat d'un formulaire
Le résultat d'un formulaire?????

Le plus souvent un Formulaire est basé sur une requéte (ou une table), dans cette requète tu peux avoir des champs calculés (sans doute tu fait cette manip dans tes champs de formulaire??) et c'est cette requéte qui est le reflet de ton formulaire d'un point de vue données. C'est cette derniére qu'il faut exporter (Si j'ai bien compri )

La partie Onglet désigne l'onglet dans le quel tu va exporter tes donner, si il n'existe pas Access va le créer. (C'est utile pour mettre à jours un fichier excel déja existant avec des calcules dériére TCd Graph et autres...)

Normalement ce code suffit

Je préfére Mettre ce bout de code le plus souvent dans un module mais aprés cela ne regarde que moi


bon courrage

N'hésite pas à revenir vers moi si tu as besoin.

@+

Alex
Deustalos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2010, 20h54   #6
Membre à l'essai
 
Inscription : mars 2006
Messages : 126
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 126
Points : 22
Points : 22
Bonjour,

j'ai inséré cette ligne pour l'export

Private Sub Btn_export_Click()

DoCmd.TransferSpreadsheet acExport, , "Tbl_Globale", "c:\resultat.xls", True, "Onglet"

et Access me donne une erreur d'exécution "3051"

il y a t il une référence à cocher dans les outils Access ?


alex >>>quand tu parles de module c'est dans une autre fenêtre VBA en dehors du code source de mon formulaire? quels sont les avantages?


merci
bernards111 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2010, 10h57   #7
Membre régulier
 
Alexis CANET
Étudiant
Inscription : novembre 2009
Messages : 95
Détails du profil
Informations personnelles :
Nom : Alexis CANET
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2009
Messages : 95
Points : 70
Points : 70
Hello,

Normalement tu n'as aucun probléme pour mettre ton code dans un formulaire.

Voila un exemple.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Private Sub Références_Actives_Click()
On Error GoTo Err_Références_Actives_Click
 
chemin = "C:............"
DoCmd.TransferSpreadsheet acExport, , "REF ACTIVE SANS BW", chemin, False, ""
 
MsgBox ("Fichier Références Actives Créé")
 
Exit_Références_Actives_Click:
    Exit Sub
 
Err_Références_Actives_Click:
    MsgBox Err.Description
    Resume Exit_Références_Actives_Click
 
End Sub

Ton erreur doit provenir du fait que ton fichier est ouvert par quelqu'un en mode exclusif.

Le fait de mettre ton code dans un module permet d'y avoir access (de l'appeller) à partir de tout les formulaires.

Je ne pense pas pas qu'il y ai besoin de références supplémentaires.

essay en adaptant le code dans ton formulaire.
Deustalos est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 29/12/2010, 13h39   #8
Membre à l'essai
 
Inscription : mars 2006
Messages : 126
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 126
Points : 22
Points : 22
Re

merci de ton aide, en fait mon erreur venait de Windows 7, le chemin d'enregistrement du fichier n'était pas autorisé ,je l'ai juste changé et ai obtenu mon export,
Par contre j'aimerais savoir à quoi sert "false" ou "True" dans cette fonction car les deux fonctionnent??

sinon j'ai essayé de mettre ce code dans un module mais je n'ai pas l'impression que cela suffise pour relier mon bouton a ce code, j'ai regardé dans les propriétés du bouton (évènement notamment) mais je ne vois pas comment?
si tu as le temps pourrais tu me donner quelques explications?? ou des liens.
sinon je continu à chercher

merci encore
bernards111 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2010, 13h59   #9
Membre régulier
 
Alexis CANET
Étudiant
Inscription : novembre 2009
Messages : 95
Détails du profil
Informations personnelles :
Nom : Alexis CANET
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2009
Messages : 95
Points : 70
Points : 70
Il s'agit aprés d'un autre post (passe en résolut pour celui-ci).

Voici un exemple: Pour importer un fichier Excel.

- Un code sur mon bouton (formulaire)

Code :
1
2
3
4
5
6
7
Private Sub Commande102_Click()
 
IMPORT_MCBZ 'Nom de la fonction appellé dans les modules
 
MsgBox ("Mise à Jour des données Besoins Usine effectuée")
 
End Sub
Et le code du Module

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Public Function IMPORT_MCBZ()
On Error GoTo IMPORT_MCBZ_Err
 
 
Chemin = ....... 
 
 
    '//////////////////////////////////// Transfér du fichier (import)
 
    DoCmd.OpenQuery "SUP_BASE_MCBZ" 'exécution d'une requête
 
    DoCmd.TransferSpreadsheet acImport, 8, "BASE_MCBZ", Chemin, True, faux
    DoCmd.SetWarnings True
 
 
IMPORT_MCBZ_Exit:
    Exit Function
 
IMPORT_MCBZ_Err:
    MsgBox Error$
    Resume IMPORT_MCBZ_Exit
 
End Function
J'ai simplifier le code du module pour faire Simple

Pour ce qui est du faux je ne sias plus trop pourquois désolé mais il y a pas mal de tuto la dessu.

@+

Et bonne continuation

Alex
Deustalos est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 29/12/2010, 17h40   #10
Membre à l'essai
 
Inscription : mars 2006
Messages : 126
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 126
Points : 22
Points : 22
merci Deustalos
bernards111 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 07h04.


 
 
 
 
Partenaires

Hébergement Web