OVH Cloud OVH Cloud

Export vers Excel

11 réponses
Avatar
Hervé DUCARNE
Salut à tous,

Est-il possible facilement d'exporter les données d'une table vers des
fichiers excel (1 enregistrement dans la table = 1 fichier) ??

Merci !

10 réponses

1 2
Avatar
Raymond [mvp]
bonjour.
il n'y a pas d'erreur ? 1 enr = 1 fichier excel ? j'espère que le nom du
fichier est dans un champ.
il ne faut pas faire l'export de la table mais d'une requête paramétrée si
celle-ci est supportée par l'export access. à vérifier. Sinon on crée une
table temporaire par la requête paramétrée et on exporte la table.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Hervé DUCARNE" a écrit dans le message de news:
uQ$
Salut à tous,

Est-il possible facilement d'exporter les données d'une table vers des
fichiers excel (1 enregistrement dans la table = 1 fichier) ??

Merci !




Avatar
Hervé DUCARNE
Merci Raymond,
Il n'y a pas d'erreur --> 1 enregistrement de la table doit être exporté
vers un fichier excel.
Le nom du fichier, oui, un champ de l'enregistrement fera l'affaire...

Tu l'as fait comment ta requête paramettrée ????

Y'a pas moyen de faire ça en vba ?

Merci.


"Raymond [mvp]" a écrit dans le message de
news:
bonjour.
il n'y a pas d'erreur ? 1 enr = 1 fichier excel ? j'espère que le nom du
fichier est dans un champ.
il ne faut pas faire l'export de la table mais d'une requête paramétrée si
celle-ci est supportée par l'export access. à vérifier. Sinon on crée une
table temporaire par la requête paramétrée et on exporte la table.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Hervé DUCARNE" a écrit dans le message de news:
uQ$
Salut à tous,

Est-il possible facilement d'exporter les données d'une table vers des
fichiers excel (1 enregistrement dans la table = 1 fichier) ??

Merci !








Avatar
Raymond [mvp]
Il faut construire tout ça en vba.
tu peux donner des compléments si tu veux un coup de main ?
nom de la table, nom du champ contenant le nom du fichier, comment est
constitué le chemin du fichier excel, combien de champs à exporter, combien
d'enregistrements ?
selon le nombre de champs on peut passer par automatisation ou par une
requête.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Hervé DUCARNE" a écrit dans le message de news:

Merci Raymond,
Il n'y a pas d'erreur --> 1 enregistrement de la table doit être exporté
vers un fichier excel.
Le nom du fichier, oui, un champ de l'enregistrement fera l'affaire...

Tu l'as fait comment ta requête paramettrée ????

Y'a pas moyen de faire ça en vba ?

Merci.



Avatar
Hervé DUCARNE
Salut et merci.

Je veux bien un coup de main, c'est sympa...

La table à exporter s'appelle information, tous les champs doivent être
présents dans excel (à mon avis pas de présentation spécifique : un champ 1 cellule genre un copier coller de chaque enregistrement).

Le chemin sera de la forme "c:repertoire" et le nom du fichier
"id_info.xls"

Je te remercie encore.


"Raymond [mvp]" a écrit dans le message de
news:O%
Il faut construire tout ça en vba.
tu peux donner des compléments si tu veux un coup de main ?
nom de la table, nom du champ contenant le nom du fichier, comment est
constitué le chemin du fichier excel, combien de champs à exporter,
combien

d'enregistrements ?
selon le nombre de champs on peut passer par automatisation ou par une
requête.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Hervé DUCARNE" a écrit dans le message de news:

Merci Raymond,
Il n'y a pas d'erreur --> 1 enregistrement de la table doit être exporté
vers un fichier excel.
Le nom du fichier, oui, un champ de l'enregistrement fera l'affaire...

Tu l'as fait comment ta requête paramettrée ????

Y'a pas moyen de faire ça en vba ?

Merci.








Avatar
Raymond [mvp]
Bonjour.

tu fais une fonction (ou sub) que tu places n'importe où et que tu appelles
en passant en paramètres, le nom de la table à exporter et le nom du champ
contenant le nom du fichier excel à créer. il faudra que tu complètes le
chemin exact dans la fonction. on doit pouvoir améliorer nettement le
rendement de cette fonction que je n'ai pas optimisée.

Private Sub Commande0_Click()
Transfert "table1", "Numéro"
End Sub

Public Function Transfert(TableName As String, FieldName As String)
DoCmd.SetWarnings False
On Error Resume Next
DoCmd.DeleteObject acQuery, "tmp"
Dim Db As DAO.Database
Set Db = CurrentDb
Dim Rs As DAO.Recordset
Dim Qdf As DAO.QueryDef
Set Qdf = Db.CreateQueryDef("TMP", "SELECT * from table1")
Application.RefreshDatabaseWindow
Dim TableCible As String
TableCible = "TableCible"
Set Rs = Db.OpenRecordset("Select * from " & TableName)
If Rs.BOF Then GoTo Exit_Sub
Do Until Rs.EOF
DoCmd.DeleteObject acTable, TableCible
DoEvents
Qdf.SQL = "SELECT " & TableName & ".* INTO " & TableCible & " FROM "
& TableName & " WHERE [" & FieldName & "] = " & Rs.Fields("numéro")
Qdf.Execute
DoEvents
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9,
TableCible, Rs(FieldName) & ".xls", True
Rs.MoveNext
Loop
Exit_Sub:
Set Rs = Nothing
Set Db = Nothing
Set Qdf = Nothing
DoCmd.SetWarnings True
End Function


--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Hervé DUCARNE" a écrit dans le message de news:

Salut et merci.

Je veux bien un coup de main, c'est sympa...

La table à exporter s'appelle information, tous les champs doivent être
présents dans excel (à mon avis pas de présentation spécifique : un champ
1 cellule genre un copier coller de chaque enregistrement).


Le chemin sera de la forme "c:repertoire" et le nom du fichier
"id_info.xls"

Je te remercie encore.




Avatar
Raymond [mvp]
.../...
erreur

lire = " & Rs.Fields(fieldname)
au lieu de
= " & Rs.Fields("numéro")

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Raymond [mvp]" a écrit dans le message de
news:
Bonjour.

tu fais une fonction (ou sub) que tu places n'importe où et que tu
appelles
en passant en paramètres, le nom de la table à exporter et le nom du champ
contenant le nom du fichier excel à créer. il faudra que tu complètes le
chemin exact dans la fonction. on doit pouvoir améliorer nettement le
rendement de cette fonction que je n'ai pas optimisée.

Private Sub Commande0_Click()
Transfert "table1", "Numéro"
End Sub

Public Function Transfert(TableName As String, FieldName As String)
DoCmd.SetWarnings False
On Error Resume Next
DoCmd.DeleteObject acQuery, "tmp"
Dim Db As DAO.Database
Set Db = CurrentDb
Dim Rs As DAO.Recordset
Dim Qdf As DAO.QueryDef
Set Qdf = Db.CreateQueryDef("TMP", "SELECT * from table1")
Application.RefreshDatabaseWindow
Dim TableCible As String
TableCible = "TableCible"
Set Rs = Db.OpenRecordset("Select * from " & TableName)
If Rs.BOF Then GoTo Exit_Sub
Do Until Rs.EOF
DoCmd.DeleteObject acTable, TableCible
DoEvents
Qdf.SQL = "SELECT " & TableName & ".* INTO " & TableCible & " FROM
"
& TableName & " WHERE [" & FieldName & "] = " & Rs.Fields("numéro")
Qdf.Execute
DoEvents
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9,
TableCible, Rs(FieldName) & ".xls", True
Rs.MoveNext
Loop
Exit_Sub:
Set Rs = Nothing
Set Db = Nothing
Set Qdf = Nothing
DoCmd.SetWarnings True
End Function


--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Hervé DUCARNE" a écrit dans le message de news:

Salut et merci.

Je veux bien un coup de main, c'est sympa...

La table à exporter s'appelle information, tous les champs doivent être
présents dans excel (à mon avis pas de présentation spécifique : un champ
1 cellule genre un copier coller de chaque enregistrement).



Le chemin sera de la forme "c:repertoire" et le nom du fichier
"id_info.xls"

Je te remercie encore.










Avatar
Hervé DUCARNE
Merci beaucoup, mais j'ai une erreur lorsque j'appelle la fonction sur la
ligne dim db as dao.database (type défini par l'utilisateur non défini).
Je travaille sur une base 2000 avec Access 2002 (raisons de compatibilités).

Merci Raymond la Science !


"Raymond [mvp]" a écrit dans le message de
news:
Bonjour.

tu fais une fonction (ou sub) que tu places n'importe où et que tu
appelles

en passant en paramètres, le nom de la table à exporter et le nom du champ
contenant le nom du fichier excel à créer. il faudra que tu complètes le
chemin exact dans la fonction. on doit pouvoir améliorer nettement le
rendement de cette fonction que je n'ai pas optimisée.

Private Sub Commande0_Click()
Transfert "table1", "Numéro"
End Sub

Public Function Transfert(TableName As String, FieldName As String)
DoCmd.SetWarnings False
On Error Resume Next
DoCmd.DeleteObject acQuery, "tmp"
Dim Db As DAO.Database
Set Db = CurrentDb
Dim Rs As DAO.Recordset
Dim Qdf As DAO.QueryDef
Set Qdf = Db.CreateQueryDef("TMP", "SELECT * from table1")
Application.RefreshDatabaseWindow
Dim TableCible As String
TableCible = "TableCible"
Set Rs = Db.OpenRecordset("Select * from " & TableName)
If Rs.BOF Then GoTo Exit_Sub
Do Until Rs.EOF
DoCmd.DeleteObject acTable, TableCible
DoEvents
Qdf.SQL = "SELECT " & TableName & ".* INTO " & TableCible & " FROM
"

& TableName & " WHERE [" & FieldName & "] = " & Rs.Fields("numéro")
Qdf.Execute
DoEvents
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9,
TableCible, Rs(FieldName) & ".xls", True
Rs.MoveNext
Loop
Exit_Sub:
Set Rs = Nothing
Set Db = Nothing
Set Qdf = Nothing
DoCmd.SetWarnings True
End Function


--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Hervé DUCARNE" a écrit dans le message de news:

Salut et merci.

Je veux bien un coup de main, c'est sympa...

La table à exporter s'appelle information, tous les champs doivent être
présents dans excel (à mon avis pas de présentation spécifique : un
champ


1 cellule genre un copier coller de chaque enregistrement).



Le chemin sera de la forme "c:repertoire" et le nom du fichier
"id_info.xls"

Je te remercie encore.










Avatar
Raymond [mvp]
non, il faut que tu coches la référence DAO 3.6 et la mettre avant toute
référence à ADO.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Hervé DUCARNE" a écrit dans le message de news:
eYQ7m$
Merci beaucoup, mais j'ai une erreur lorsque j'appelle la fonction sur la
ligne dim db as dao.database (type défini par l'utilisateur non défini).
Je travaille sur une base 2000 avec Access 2002 (raisons de
compatibilités).

Merci Raymond la Science !



Avatar
Hervé DUCARNE
Merci Raymond, je n'ai plus d'erreur !

Pas contre il n'a pas l'air de me créer de fichier xls (en tout cas, je ne
les ai pas trouvés :-(
J'ai mis en remarque 'on error resume next' et 'docmd.setwarnings false'
pour voir, la fonction mouline qq secondes, pas d'erreur, mais pas de
fichier (il faut que je m'en aille, pas le temsp de chercher sur tous les
disques locaux, je te tiens au courant dans l'aprèm').
Je te remercie encore et bon appétit.

@+

"Raymond [mvp]" a écrit dans le message de
news:
non, il faut que tu coches la référence DAO 3.6 et la mettre avant toute
référence à ADO.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Hervé DUCARNE" a écrit dans le message de news:
eYQ7m$
Merci beaucoup, mais j'ai une erreur lorsque j'appelle la fonction sur
la


ligne dim db as dao.database (type défini par l'utilisateur non défini).
Je travaille sur une base 2000 avec Access 2002 (raisons de
compatibilités).

Merci Raymond la Science !







Avatar
Raymond [mvp]
si tu n'as rien changé, les fichiers sont dans le même répertoire que la
base.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Hervé DUCARNE" a écrit dans le message de news:

Merci Raymond, je n'ai plus d'erreur !

Pas contre il n'a pas l'air de me créer de fichier xls (en tout cas, je ne
les ai pas trouvés :-(
J'ai mis en remarque 'on error resume next' et 'docmd.setwarnings false'
pour voir, la fonction mouline qq secondes, pas d'erreur, mais pas de
fichier (il faut que je m'en aille, pas le temsp de chercher sur tous les
disques locaux, je te tiens au courant dans l'aprèm').
Je te remercie encore et bon appétit.

@+



1 2