Exportation et formatage vers xls

Le
Malach
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.
Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Pierre CFI [mvp]
Le #6192001
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"
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.
Malach
Le #6191741
Bonjour,

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

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


Bonjour,

Je me permet un petit "Bump" ,
merci

Fabien
Le #6189421
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"
Bonjour,

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


Bonjour,

Je me permet un petit "Bump" ,
merci




Fabien
Le #6188021
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"
Bonjour,

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


Bonjour,

Je me permet un petit "Bump" ,
merci






Publicité
Poster une réponse
Anonyme