Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Export Access vers Excel

2 réponses
Avatar
CybSnoopy
Access 2003

Bonjour,

J'ai implémenter un module d'export vers Excel dans un programme récent.

Tout fonctionne parfaitement mais les données récupérées sont (quelque soit
leur format d'origine dans ma table Access) systématiquement précédées d'une
apostrophes dans Excel qui les interprète donc comme du texte ce qui est très
ennuyeux pour les traitements ultérieurs.

J'ai donc imaginé d'effectuer directement au moment de l'export un copier /
collage spécial / valeurs dans un nouvel onglet (ce qui fonctionne très bien
dans Excel et supprime toutes les apostrophes).

Malheureusement, impossible de gérer dans Access les paramètres de
PasteSpecial applicables dans Excel ("Paste:=xlPasteValues,
Operation:=xlNone, SkipBlanks:=False, Transpose:=False") .

Comment résoudre ce problème (cf code ci-dessous) ?

Merci d'avance !

Snoopy

[...]

Dim xlApp As Excel.Application 'Application Excel
Dim xlwb As Excel.Workbook 'Classeur Excel
Dim xlws As Excel.Worksheet 'Feuille Excel
Dim xlws_new As Excel.Worksheet 'Nouvelle feuille Excel ajoutée

'Ouverture de l'application
Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = False

'Ouverture d'un fichier Excel
Set xlwb = xlApp.Workbooks.Open(cheminRepExport & "\" & site &
"_Artcls_Export_" & Date & ".xls")

' xlws correspond à la feuille "articles_export" du classeur
Set xlws = xlwb.Worksheets("articles_export")
xlws.Cells.Select
xlws.Cells.Copy

' xlws_new correspond à la nouvelle feuille "artcls_export" ajoutée au
classeur
Set xlws_new = xlwb.Worksheets.Add
xlws_new.Name = "artcls_export"

xlws_new.Range("A1").Select
xlws_new.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks:=False, Transpose:=False ' ne fonctionne pas sous Access !!!

xlws.Delete

xlwb.Save
xlwb.Close 'Fermeture du classeur Excel
xlApp.Quit 'Fermeture de l'application Excel

'Désallocation mémoire
Set xlws = Nothing
Set xlws_new = Nothing
Set xlwb = Nothing
Set xlApp = Nothing

2 réponses

Avatar
FFO
Salut à toi

Si tu mets :

xlws.Cells.Copy

Tu dois obligatoirement mettre :

xlws_new.Cells.Select

et non

xlws_new.Range("A1").Select

Ce qui donne :


' xlws correspond à la feuille "articles_export" du classeur
Set xlws = xlwb.Worksheets("articles_export")
xlws.Cells.Select
xlws.Cells.Copy

' xlws_new correspond à la nouvelle feuille "artcls_export" ajoutée au
classeur
Set xlws_new = xlwb.Worksheets.Add
xlws_new.Name = "artcls_export"

xlws_new.Cells.Select
xlws_new.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks:úlse, Transpose:úlse

xlws.Delete

Ou plus simple :

' xlws correspond à la feuille "articles_export" du classeur
Set xlws = xlwb.Worksheets("articles_export")
xlws.Cells.Copy
' xlws_new correspond à la nouvelle feuille "artcls_export" ajoutée au
classeur
Set xlws_new = xlwb.Worksheets.Add
xlws_new.Name = "artcls_export"
xlws_new.Cells.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks:úlse, Transpose:úlse ' ne fonctionne pas sous Access !!!

xlws.Delete

Je pense que celà devrait mieux fonctionner

Dis moi !!!!!
Avatar
smirsnof
Le vendredi 12 Février 2010 à 09:53 par CybSnoopy :
Access 2003
Bonjour,
J'ai implémenter un module d'export vers Excel dans un programme
récent.
Tout fonctionne parfaitement mais les données
récupérées sont (quelque soit
leur format d'origine dans ma table Access) systématiquement
précédées d'une
apostrophes dans Excel qui les interprète donc comme du texte ce qui est
très
ennuyeux pour les traitements ultérieurs.
J'ai donc imaginé d'effectuer directement au moment de l'export un
copier /
collage spécial / valeurs dans un nouvel onglet (ce qui fonctionne
très bien
dans Excel et supprime toutes les apostrophes).
Malheureusement, impossible de gérer dans Access les paramètres
de
PasteSpecial applicables dans Excel ("Paste:=xlPasteValues,
Operation:=xlNone, SkipBlanks:lse, Transpose:lse") .
Comment résoudre ce problème (cf code ci-dessous) ?
Merci d'avance !
Snoopy
[...]
Dim xlApp As Excel.Application 'Application Excel
Dim xlwb As Excel.Workbook 'Classeur Excel
Dim xlws As Excel.Worksheet 'Feuille Excel
Dim xlws_new As Excel.Worksheet 'Nouvelle feuille Excel ajoutée
'Ouverture de l'application
Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = False
'Ouverture d'un fichier Excel
Set xlwb = xlApp.Workbooks.Open(cheminRepExport & "" & site
&
"_Artcls_Export_" & Date & ".xls")
' xlws correspond à la feuille "articles_export" du classeur
Set xlws = xlwb.Worksheets("articles_export")
xlws.Cells.Select
xlws.Cells.Copy
' xlws_new correspond à la nouvelle feuille "artcls_export"
ajoutée au
classeur
Set xlws_new = xlwb.Worksheets.Add
xlws_new.Name = "artcls_export"
xlws_new.Range("A1").Select
xlws_new.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks:lse, Transpose:lse ' ne fonctionne pas sous Access !!!
xlws.Delete
xlwb.Save
xlwb.Close 'Fermeture du classeur Excel
xlApp.Quit 'Fermeture de l'application Excel
'Désallocation mémoire
Set xlws = Nothing
Set xlws_new = Nothing
Set xlwb = Nothing
Set xlApp = Nothing
En effet.
Si tu mets :
xlws.Cells.Copy
Tu dois obligatoirement mettre :
xlws_new.Cells.Select
Pour eviter d'écraser les données dans le tableau
Samuel Laidi