Je suis sous Access XP SP2 et j'essaye d'exporter une feuille Excel une
table access.
Mon code est donc le suivant:
DoCmd.TransferSpreadsheet acExport, , TableTmp, cheminTableau, True
Par contre, je n'arrive pas à préciser le nom de la feuille:
Parfois, il me prend le nom de la table et d'autre fois , il me prend une
feuille déjà existante.
J'ai essayé de spécifié le nom de la feuille dans le paramétre Range, mais
cela ne fonctionne pas non plus.
J'arrive à réaliser l'export par automation, mais c'est hyper long pour
30000 lignes.
Des idées, une solution, un moyen de contournement?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Fred M.
Bonjour Jérome, Par automation c'est tout à fait faisable et rapide à condition de bien s'y prendre. Pour 30000 ce qui te faire perdre bcp de tps c'est tout simplement l'affichage séquentiel de ton transfert. Avant de balancer tes données, applique donc un Application.ScreenUpdating = false. ça va figer ton écran et te faire gagner énormément de tps. N'oublie pas de rétablir à true à la fin !!! ;-) Quant au range, il désigne une plage de cellule. Pour désigner une feuille de calcul utilise la collection Sheets.
Bon courage. Fred M
-----Message d'origine----- Bonjour,
Je suis sous Access XP SP2 et j'essaye d'exporter une feuille Excel une
table access.
Mon code est donc le suivant: DoCmd.TransferSpreadsheet acExport, , TableTmp, cheminTableau, True
Par contre, je n'arrive pas à préciser le nom de la feuille:
Parfois, il me prend le nom de la table et d'autre fois , il me prend une
feuille déjà existante.
J'ai essayé de spécifié le nom de la feuille dans le paramétre Range, mais
cela ne fonctionne pas non plus. J'arrive à réaliser l'export par automation, mais c'est hyper long pour
30000 lignes.
Des idées, une solution, un moyen de contournement?
Bonjour Jérome,
Par automation c'est tout à fait faisable et rapide à
condition de bien s'y prendre.
Pour 30000 ce qui te faire perdre bcp de tps c'est tout
simplement l'affichage séquentiel de ton transfert. Avant
de balancer tes données, applique donc un
Application.ScreenUpdating = false. ça va figer ton écran
et te faire gagner énormément de tps. N'oublie pas de
rétablir à true à la fin !!! ;-)
Quant au range, il désigne une plage de cellule. Pour
désigner une feuille de calcul utilise la collection
Sheets.
Bon courage.
Fred M
-----Message d'origine-----
Bonjour,
Je suis sous Access XP SP2 et j'essaye d'exporter une
feuille Excel une
table access.
Mon code est donc le suivant:
DoCmd.TransferSpreadsheet acExport, , TableTmp,
cheminTableau, True
Par contre, je n'arrive pas à préciser le nom de la
feuille:
Parfois, il me prend le nom de la table et d'autre fois ,
il me prend une
feuille déjà existante.
J'ai essayé de spécifié le nom de la feuille dans le
paramétre Range, mais
cela ne fonctionne pas non plus.
J'arrive à réaliser l'export par automation, mais c'est
hyper long pour
30000 lignes.
Des idées, une solution, un moyen de contournement?
Bonjour Jérome, Par automation c'est tout à fait faisable et rapide à condition de bien s'y prendre. Pour 30000 ce qui te faire perdre bcp de tps c'est tout simplement l'affichage séquentiel de ton transfert. Avant de balancer tes données, applique donc un Application.ScreenUpdating = false. ça va figer ton écran et te faire gagner énormément de tps. N'oublie pas de rétablir à true à la fin !!! ;-) Quant au range, il désigne une plage de cellule. Pour désigner une feuille de calcul utilise la collection Sheets.
Bon courage. Fred M
-----Message d'origine----- Bonjour,
Je suis sous Access XP SP2 et j'essaye d'exporter une feuille Excel une
table access.
Mon code est donc le suivant: DoCmd.TransferSpreadsheet acExport, , TableTmp, cheminTableau, True
Par contre, je n'arrive pas à préciser le nom de la feuille:
Parfois, il me prend le nom de la table et d'autre fois , il me prend une
feuille déjà existante.
J'ai essayé de spécifié le nom de la feuille dans le paramétre Range, mais
cela ne fonctionne pas non plus. J'arrive à réaliser l'export par automation, mais c'est hyper long pour
30000 lignes.
Des idées, une solution, un moyen de contournement?
Merci pour ta réponse. L'application excel était déjà en invisible donc je ne pense pas que cela joue énormément.
J'ai fait un test pour 200 lignes: 16 secondes pour Application.ScreenUpdating = false 17 secondes sans et 2 secondes avec DoCmd.TransferSpreadsheet. J'imagine pour 30000 lignes.
Le seul souci est le nom de la feuille de Docmd.transferSpreadsheet qui fait un peu n'importe quoi . :-)
Une autre idée?
------------Mon code de boucle par automation------------
With objxl.Workbooks(Nomfic(cheminTableau)).Worksheets(feuille)
'Nom Colonne col = 1 For Each fld In source.Fields .Cells(1, col).Value = fld.Name col = col + 1 Next fld
'Données lig = 2 While Not source.EOF col = 1 For Each fld In source.Fields .Cells(lig, col).Value = source(fld.Name) col = col + 1 Next fld lig = lig + 1 'Debug.Print lig source.MoveNext Wend End With
ACS INFORMATIQUE 122,rue du Château d'orgemont 49000 ANGERS Tel: 02 41 68 42 36 Fax: 02 41 68 42 48 ---------------------------------------------------------------------------- --------------------- "Fred M." a écrit dans le message de news:179d01c38804$72becee0$ Bonjour Jérome, Par automation c'est tout à fait faisable et rapide à condition de bien s'y prendre. Pour 30000 ce qui te faire perdre bcp de tps c'est tout simplement l'affichage séquentiel de ton transfert. Avant de balancer tes données, applique donc un Application.ScreenUpdating = false. ça va figer ton écran et te faire gagner énormément de tps. N'oublie pas de rétablir à true à la fin !!! ;-) Quant au range, il désigne une plage de cellule. Pour désigner une feuille de calcul utilise la collection Sheets.
Bon courage. Fred M
-----Message d'origine----- Bonjour,
Je suis sous Access XP SP2 et j'essaye d'exporter une feuille Excel une
table access.
Mon code est donc le suivant: DoCmd.TransferSpreadsheet acExport, , TableTmp, cheminTableau, True
Par contre, je n'arrive pas à préciser le nom de la feuille:
Parfois, il me prend le nom de la table et d'autre fois , il me prend une
feuille déjà existante.
J'ai essayé de spécifié le nom de la feuille dans le paramétre Range, mais
cela ne fonctionne pas non plus. J'arrive à réaliser l'export par automation, mais c'est hyper long pour
30000 lignes.
Des idées, une solution, un moyen de contournement?
Merci pour ta réponse.
L'application excel était déjà en invisible donc je ne pense pas que cela
joue énormément.
J'ai fait un test pour 200 lignes:
16 secondes pour Application.ScreenUpdating = false
17 secondes sans
et 2 secondes avec DoCmd.TransferSpreadsheet.
J'imagine pour 30000 lignes.
Le seul souci est le nom de la feuille de Docmd.transferSpreadsheet qui fait
un peu n'importe quoi . :-)
Une autre idée?
------------Mon code de boucle par automation------------
With objxl.Workbooks(Nomfic(cheminTableau)).Worksheets(feuille)
'Nom Colonne
col = 1
For Each fld In source.Fields
.Cells(1, col).Value = fld.Name
col = col + 1
Next fld
'Données
lig = 2
While Not source.EOF
col = 1
For Each fld In source.Fields
.Cells(lig, col).Value = source(fld.Name)
col = col + 1
Next fld
lig = lig + 1
'Debug.Print lig
source.MoveNext
Wend
End With
ACS INFORMATIQUE
122,rue du Château d'orgemont
49000 ANGERS
Tel: 02 41 68 42 36 Fax: 02 41 68 42 48
----------------------------------------------------------------------------
---------------------
"Fred M." <fmichalak@avolys.com> a écrit dans le message de
news:179d01c38804$72becee0$a101280a@phx.gbl...
Bonjour Jérome,
Par automation c'est tout à fait faisable et rapide à
condition de bien s'y prendre.
Pour 30000 ce qui te faire perdre bcp de tps c'est tout
simplement l'affichage séquentiel de ton transfert. Avant
de balancer tes données, applique donc un
Application.ScreenUpdating = false. ça va figer ton écran
et te faire gagner énormément de tps. N'oublie pas de
rétablir à true à la fin !!! ;-)
Quant au range, il désigne une plage de cellule. Pour
désigner une feuille de calcul utilise la collection
Sheets.
Bon courage.
Fred M
-----Message d'origine-----
Bonjour,
Je suis sous Access XP SP2 et j'essaye d'exporter une
feuille Excel une
table access.
Mon code est donc le suivant:
DoCmd.TransferSpreadsheet acExport, , TableTmp,
cheminTableau, True
Par contre, je n'arrive pas à préciser le nom de la
feuille:
Parfois, il me prend le nom de la table et d'autre fois ,
il me prend une
feuille déjà existante.
J'ai essayé de spécifié le nom de la feuille dans le
paramétre Range, mais
cela ne fonctionne pas non plus.
J'arrive à réaliser l'export par automation, mais c'est
hyper long pour
30000 lignes.
Des idées, une solution, un moyen de contournement?
Merci pour ta réponse. L'application excel était déjà en invisible donc je ne pense pas que cela joue énormément.
J'ai fait un test pour 200 lignes: 16 secondes pour Application.ScreenUpdating = false 17 secondes sans et 2 secondes avec DoCmd.TransferSpreadsheet. J'imagine pour 30000 lignes.
Le seul souci est le nom de la feuille de Docmd.transferSpreadsheet qui fait un peu n'importe quoi . :-)
Une autre idée?
------------Mon code de boucle par automation------------
With objxl.Workbooks(Nomfic(cheminTableau)).Worksheets(feuille)
'Nom Colonne col = 1 For Each fld In source.Fields .Cells(1, col).Value = fld.Name col = col + 1 Next fld
'Données lig = 2 While Not source.EOF col = 1 For Each fld In source.Fields .Cells(lig, col).Value = source(fld.Name) col = col + 1 Next fld lig = lig + 1 'Debug.Print lig source.MoveNext Wend End With
ACS INFORMATIQUE 122,rue du Château d'orgemont 49000 ANGERS Tel: 02 41 68 42 36 Fax: 02 41 68 42 48 ---------------------------------------------------------------------------- --------------------- "Fred M." a écrit dans le message de news:179d01c38804$72becee0$ Bonjour Jérome, Par automation c'est tout à fait faisable et rapide à condition de bien s'y prendre. Pour 30000 ce qui te faire perdre bcp de tps c'est tout simplement l'affichage séquentiel de ton transfert. Avant de balancer tes données, applique donc un Application.ScreenUpdating = false. ça va figer ton écran et te faire gagner énormément de tps. N'oublie pas de rétablir à true à la fin !!! ;-) Quant au range, il désigne une plage de cellule. Pour désigner une feuille de calcul utilise la collection Sheets.
Bon courage. Fred M
-----Message d'origine----- Bonjour,
Je suis sous Access XP SP2 et j'essaye d'exporter une feuille Excel une
table access.
Mon code est donc le suivant: DoCmd.TransferSpreadsheet acExport, , TableTmp, cheminTableau, True
Par contre, je n'arrive pas à préciser le nom de la feuille:
Parfois, il me prend le nom de la table et d'autre fois , il me prend une
feuille déjà existante.
J'ai essayé de spécifié le nom de la feuille dans le paramétre Range, mais
cela ne fonctionne pas non plus. J'arrive à réaliser l'export par automation, mais c'est hyper long pour
30000 lignes.
Des idées, une solution, un moyen de contournement?
Pour indiquer un nom de feuille, tu indiques le paramètre range DoCmd.TransferSpreadsheet acExport, , TableTmp, cheminTableau, True, "Feuil2"
Il est dit partout que pour l'export il faut laisser ce paramètre vierge, j'ai toujours vu que ça marchait mais sans indiquer de cellules. j'ai testé ça a l'air de fonctionner. -- @+ Raymond Access MVP. http://access.seneque.free.fr/ http://access2003.free.fr/ http://users.skynet.be/mpfa/charte.htm pour une meilleure efficacité de tes interventions sur MPFA.
"Crevecoeur Jérôme" a écrit dans le message de news:%
Merci pour ta réponse. L'application excel était déjà en invisible donc je ne pense pas que cela joue énormément.
J'ai fait un test pour 200 lignes: 16 secondes pour Application.ScreenUpdating = false 17 secondes sans et 2 secondes avec DoCmd.TransferSpreadsheet. J'imagine pour 30000 lignes.
Le seul souci est le nom de la feuille de Docmd.transferSpreadsheet qui fait
un peu n'importe quoi . :-)
Une autre idée?
Bonjour.
Pour indiquer un nom de feuille, tu indiques le paramètre range
DoCmd.TransferSpreadsheet acExport, , TableTmp, cheminTableau, True,
"Feuil2"
Il est dit partout que pour l'export il faut laisser ce paramètre vierge,
j'ai toujours vu que ça marchait mais sans indiquer de cellules.
j'ai testé ça a l'air de fonctionner.
--
@+
Raymond Access MVP.
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/charte.htm pour une meilleure
efficacité de tes interventions sur MPFA.
"Crevecoeur Jérôme" <bbbbc.aaaaa@libertysurf.fr> a écrit dans le message de
news:%23G8j59AiDHA.1820@TK2MSFTNGP09.phx.gbl...
Merci pour ta réponse.
L'application excel était déjà en invisible donc je ne pense pas que cela
joue énormément.
J'ai fait un test pour 200 lignes:
16 secondes pour Application.ScreenUpdating = false
17 secondes sans
et 2 secondes avec DoCmd.TransferSpreadsheet.
J'imagine pour 30000 lignes.
Le seul souci est le nom de la feuille de Docmd.transferSpreadsheet qui
fait
Pour indiquer un nom de feuille, tu indiques le paramètre range DoCmd.TransferSpreadsheet acExport, , TableTmp, cheminTableau, True, "Feuil2"
Il est dit partout que pour l'export il faut laisser ce paramètre vierge, j'ai toujours vu que ça marchait mais sans indiquer de cellules. j'ai testé ça a l'air de fonctionner. -- @+ Raymond Access MVP. http://access.seneque.free.fr/ http://access2003.free.fr/ http://users.skynet.be/mpfa/charte.htm pour une meilleure efficacité de tes interventions sur MPFA.
"Crevecoeur Jérôme" a écrit dans le message de news:%
Merci pour ta réponse. L'application excel était déjà en invisible donc je ne pense pas que cela joue énormément.
J'ai fait un test pour 200 lignes: 16 secondes pour Application.ScreenUpdating = false 17 secondes sans et 2 secondes avec DoCmd.TransferSpreadsheet. J'imagine pour 30000 lignes.
Le seul souci est le nom de la feuille de Docmd.transferSpreadsheet qui fait