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

Exportation et formatage vers xls

5 réponses
Avatar
Malach
Bonjour =E0 tous ,

Voila je rencontre un probleme concernant l'exportation et le
"formatage" du fichier extrait dans excel.

Hypothese :
ACCESS : Une table contenant deux colonne une avec un EAN13 et l autre
une quantit=E9, le nombre de ligne peut etre variable de 1 ligne a 100
lignes.
J'ai cr=E9=E9 ensuite un module qui permet de faire l'export vers excel
avec un formatage pr=E9cis sur le fichier excel.

Contrainte :
Le format xls doit :
* Toujours extraire dans le meme fichier xls ( il faut donc effacer ce
qu il y a dans le fichier avant nouvelle extration)
* Ne pas contenir l'entete des colonnes extraites via Access
* Afficher sur la premiere colonne sur les 2 premieres lignes deux
codes ( toujours les memes)
* Mettre =E0 la suite des 2 premieres lignes les valeurs des colonnes
presentes ds la table ACCESS ( EAN 13 + Qte)
* En derniere position mettre un code ( toujours le meme)

Exemple :
Table ACCESS :
A B
EAN13 Qt=E9
955544455555 10
9782070357239 20
9782070357239 100

Le fichier xls devrait avoir ce format :
A B
3012600500000
3025592566908
955544455555 10
9782070357239 20
9782070357239 100
9999999999999

Probleme :
Voici ce que j ai fait

Private Sub Commande5_Click()
Dim oAppExcel As Excel.Application
Dim oClasseur As Excel.Workbook
Dim oFeuille As Excel.Worksheet
Dim oCell As Excel.Range
Dim i As Integer


'Exporter
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9,
"Clients", "\\Srvdatamal\G_STOCKS\commun\Gestion des appros
\Appro_Gallimard\Commande_jour_internet.xls", True

'Ouvre le fichier excel
Set oAppExcel =3D CreateObject("Excel.Application")
Set oClasseur =3D oAppExcel.Workbooks.Open("\\Srvdatamal\G_STOCKS
\commun\Gestion des appros\Appro_Gallimard
\Commande_jour_internet.xls")

'S=E9lectionne la premi=E8re feuille
Set oFeuille =3D oClasseur.Worksheets(1)

'Formatage des cellules
Rows("1:1").Select
Selection.ClearContents
Rows("2:2").Select
Selection.Insert Shift:=3DxlDown
Range("A1").Select
ActiveCell.FormulaR1C1 =3D "3012600500000"
Range("A2").Select
ActiveCell.FormulaR1C1 =3D "3025592566908"
Range("A1").Select
While IsEmpty(ActiveCell) =3D False
ActiveCell.Offset(1, 0).Activate
Wend
ActiveCell.FormulaR1C1 =3D "9999999999999"

'Ferme Excel
oClasseur.Save
oClasseur.Close
oAppExcel.Quit
Set oAppExcel =3D Nothing
Set oClasseur =3D Nothing

End Sub

Mais cela ne fonctionne pas correctement.
1=B0 A chaque fois que je lance le module, j ai n est plus d acces au
fichier xls ( il reste en lecture seule je crois)
2=B0 Comme j extrait toujours dans le meme fichier, les chiffres se
mettent a la suite au lieu de mettre =E0 jour.
3 =B0 le dernier code ( 9999999999999) se repete a chaque extration, au
final je me retrouve avec plein de 9999999999999.

Merci d avance pour votre aide.

5 réponses

Avatar
Pierre CFI [mvp]
bonjour
c'est createobject qui ouvre excel et le ferme pas
si tu utilises la ref micrisoft excel... tu peux attaquer directement
Set oClasseur = Workbooks.Open("f:excel97reqprod.xls")


--
Pierre
MVP Access
***************************************
Conseils MPFA: http://www.mpfa.info/
*********************************************************
"Malach" a écrit dans le message de news:

Bonjour à tous ,

Voila je rencontre un probleme concernant l'exportation et le
"formatage" du fichier extrait dans excel.

Hypothese :
ACCESS : Une table contenant deux colonne une avec un EAN13 et l autre
une quantité, le nombre de ligne peut etre variable de 1 ligne a 100
lignes.
J'ai créé ensuite un module qui permet de faire l'export vers excel
avec un formatage précis sur le fichier excel.

Contrainte :
Le format xls doit :
* Toujours extraire dans le meme fichier xls ( il faut donc effacer ce
qu il y a dans le fichier avant nouvelle extration)
* Ne pas contenir l'entete des colonnes extraites via Access
* Afficher sur la premiere colonne sur les 2 premieres lignes deux
codes ( toujours les memes)
* Mettre à la suite des 2 premieres lignes les valeurs des colonnes
presentes ds la table ACCESS ( EAN 13 + Qte)
* En derniere position mettre un code ( toujours le meme)

Exemple :
Table ACCESS :
A B
EAN13 Qté
955544455555 10
9782070357239 20
9782070357239 100

Le fichier xls devrait avoir ce format :
A B
3012600500000
3025592566908
955544455555 10
9782070357239 20
9782070357239 100
9999999999999

Probleme :
Voici ce que j ai fait

Private Sub Commande5_Click()
Dim oAppExcel As Excel.Application
Dim oClasseur As Excel.Workbook
Dim oFeuille As Excel.Worksheet
Dim oCell As Excel.Range
Dim i As Integer


'Exporter
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9,
"Clients", "SrvdatamalG_STOCKScommunGestion des appros
Appro_GallimardCommande_jour_internet.xls", True

'Ouvre le fichier excel
Set oAppExcel = CreateObject("Excel.Application")
Set oClasseur = oAppExcel.Workbooks.Open("SrvdatamalG_STOCKS
communGestion des approsAppro_Gallimard
Commande_jour_internet.xls")

'Sélectionne la première feuille
Set oFeuille = oClasseur.Worksheets(1)

'Formatage des cellules
Rows("1:1").Select
Selection.ClearContents
Rows("2:2").Select
Selection.Insert Shift:=xlDown
Range("A1").Select
ActiveCell.FormulaR1C1 = "3012600500000"
Range("A2").Select
ActiveCell.FormulaR1C1 = "3025592566908"
Range("A1").Select
While IsEmpty(ActiveCell) = False
ActiveCell.Offset(1, 0).Activate
Wend
ActiveCell.FormulaR1C1 = "9999999999999"

'Ferme Excel
oClasseur.Save
oClasseur.Close
oAppExcel.Quit
Set oAppExcel = Nothing
Set oClasseur = Nothing

End Sub

Mais cela ne fonctionne pas correctement.
1° A chaque fois que je lance le module, j ai n est plus d acces au
fichier xls ( il reste en lecture seule je crois)
2° Comme j extrait toujours dans le meme fichier, les chiffres se
mettent a la suite au lieu de mettre à jour.
3 ° le dernier code ( 9999999999999) se repete a chaque extration, au
final je me retrouve avec plein de 9999999999999.

Merci d avance pour votre aide.
Avatar
Malach
Bonjour,

Personne pour m'aider pour les problemes 2 et 3 SVP
Merci
Avatar
Malach
On 16 mar, 09:16, "Malach" wrote:
Bonjour,

Personne pour m'aider pour les problemes 2 et 3 SVP
Merci


Bonjour,

Je me permet un petit "Bump" ,
merci

Avatar
Fabien
Bonjour Malach,
Pour le point 2 Tu ne peut pas effacer le fichier avant de le re-crééer ?

'On efface le fichier s'il existe
On error goto resume next (Je sais c'est pas terrible mais pour tester
....)
Kill "SrvdatamalG_STOCKScommunGestion des appros
Appro_GallimardCommande_jour_internet.xls"

'Exporter
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9,
"Clients", "SrvdatamalG_STOCKScommunGestion des appros
Appro_GallimardCommande_jour_internet.xls", True

'Ouvre le fichier excel
Set oAppExcel = CreateObject("Excel.Application")
Set oClasseur = oAppExcel.Workbooks.Open("SrvdatamalG_STOCKS
communGestion des approsAppro_Gallimard
Commande_jour_internet.xls")

Qu'en penses tu ?

@+
Fabien


On 16 mar, 09:16, "Malach" wrote:
Bonjour,

Personne pour m'aider pour les problemes 2 et 3 SVP
Merci


Bonjour,

Je me permet un petit "Bump" ,
merci




Avatar
Fabien
Salut,
Et qu'est ce qui ne fonctionne pas stp ?
Le kill ?


Bonjour Malach,
Pour le point 2 Tu ne peut pas effacer le fichier avant de le re-crééer ?

'On efface le fichier s'il existe
On error goto resume next (Je sais c'est pas terrible mais pour
tester ....)
Kill "SrvdatamalG_STOCKScommunGestion des appros
Appro_GallimardCommande_jour_internet.xls"

'Exporter
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9,
"Clients", "SrvdatamalG_STOCKScommunGestion des appros
Appro_GallimardCommande_jour_internet.xls", True

'Ouvre le fichier excel
Set oAppExcel = CreateObject("Excel.Application")
Set oClasseur = oAppExcel.Workbooks.Open("SrvdatamalG_STOCKS
communGestion des approsAppro_Gallimard
Commande_jour_internet.xls")

Qu'en penses tu ?

@+
Fabien


On 16 mar, 09:16, "Malach" wrote:
Bonjour,

Personne pour m'aider pour les problemes 2 et 3 SVP
Merci


Bonjour,

Je me permet un petit "Bump" ,
merci