[Résolu] Problème lors d'une sauvegarde excel (objet automation)
Stagiaire WDF
Inscrit:
04/06/2007 11:28
Post(s): 3
Bonjour à tous ...
Voila mon soucis :

Je cherche à créer un fichier excel depuis une table mais vus que ce fichier doit contenir plusieurs pages venants de plusieurs tables, je n'ai pas utilisé "tableversexcel" mais plutot la méthode automation.

Je crée pour l'instant 2 pages (tout ce passe bien, je vois bien le fichier se remplir à l'écran) mais j'ai un problème lors de la sauvegarde à la fin ...
Le fichier créé n'a plus qu'une page (la dernière page que je viens de créer) et de plus, son nom est changé et prend le nom du fichier ?

Voila le code :

//création des pages
paut_MaFeuilleExcel>>DisplayAlerts = Faux
paut_MaFeuilleExcel>>Workbooks(fExtraitChemin(s_fichierXLS, fFichier+fExtension))>>Activate
paut_MaFeuilleExcel>>Workbooks(fExtraitChemin(s_fichierXLS, fFichier+fExtension))>>ActiveSheet>>Name = "Emission"
paut_MaFeuilleExcel>>Workbooks(fExtraitChemin(s_fichierXLS, fFichier+fExtension))>>Worksheets>>Add
paut_MaFeuilleExcel>>Workbooks(fExtraitChemin(s_fichierXLS, fFichier+fExtension))>>ActiveSheet>>Name = "Reception"
paut_MaFeuilleExcel>>Workbooks(fExtraitChemin(s_fichierXLS, fFichier+fExtension))>>Worksheets("Reception")>>Activate

//ensuite je l'ai remplie

//et enfin enregistrement puis fermeture
paut_MaFeuilleExcel>>Workbooks(fExtraitChemin(s_fichierXLS, fFichier+fExtension))>>Save
paut_MaFeuilleExcel>>quit
libérer paut_MaFeuilleExcel

Et là, je bloque !!! si quelqu'un à une idée

Contribution le : 04/06/2007 11:35

Edité par drcharly93 sur 13/6/2007 10:20:30
Créer un fichier PDF de la contribution Imprimer


Re: Problème lors d'une sauvegarde excel (objet automation)
Utilisateur WDF
Inscrit:
03/04/2006 15:00
Post(s): 72
Tu mélanges Document/Classeur Excel (Workbook) et feuille Excel (Sheet).

Il vaut mieux (même si c'est plus long) travailler document par document.
j'utilise l'activeX sur ma fenêtre : aX

AX>>Navigate(NomDocExcel)
//////////////////////////////////////////////
// Création de mon classeur
MonClasseur>>Workbooks>>Add()
// Je mets un beau titre
MonClasseur>>Range("A"+1)>>Value = "TITRE"
MonClasseur>>Range("A1:O1")>>Select
MonClasseur>>Selection>>Font>>Size = 14
MonClasseur>>Selection>>Merge() // fusion cellules
MonClasseur>>Selection>>HorizontalAlignment = -4108 // centrage

// boucle de remplissage
tantque pas fini
MonClasseur>>Range("A"+i)>>Value = "'"+ MaValeur //'= texte
//... tu mets ta sauce
fin
// enregistrement
MonClasseur>>ActiveWorkBook>>SaveAs(CheminEtNomDuFichier"+".xls",-4143)
MonClasseur>>ActiveWorkBook>>Close(Faux) // et fermeture du classeur

si tu dois sélectionner une feuille en particulier :
Si c'est la feuille active :
MonClasseur>>ActiveSheet>>Name=sNouveauNom
Si c'est une autre feuille dont tu connais le nom :
MonClasseur>>Sheets(sAncienNom)>>Name=sNouveauNom

Attention : personne ne doit lancer Excel pendant que ça bosse, sinon, il risque d'y avoir des ratés...

Prends un cachet pour la tête avant de commencer

Contribution le : 04/06/2007 14:15
Créer un fichier PDF de la contribution Imprimer


Re: Problème lors d'une sauvegarde excel (objet automation)
Stagiaire WDF
Inscrit:
04/06/2007 11:28
Post(s): 3
Mais quand tu dis qu'il vaut mieux travailler document par document, tu parle bien du classeur ???
Car je n'ai besoin que d'un document excel, c'est l'ajout de page qui doit me poser problème ...
J'ai recodé ma procédure pour éviter de mélanger workbook et sheet mais sa ne passe toujours pas ...
voici mon code :

PROCEDURE Exporter_excel()

i_NbLignes est un entier
i_Cpt est un entier
//objet automation
paut_MaFeuilleExcel est un objet Automation dynamique
s_fichierXLS est une chaîne
i_IdFichier est un entier
//id pour le fichier texte
i_IdFichierTexte est un entier

// On vérifie qu'aucun document n'est ouvert sous excel
iNbLance est un entier = ExeLancé("Excel.EXE")
SI iNbLance > 0 ALORS
Info("Le logiciel EXCEL va être fermé"+RC+"Penser à enregistrer votre travail !")
ExeTermine("excel.exe")
FIN
// Sélection du fichier XLS
s_fichierXLS = fSélecteur( fRepEnCours()+"\Equipement", "", "Sélection d'un fichier XLS", "Fichier XLS" + TAB + "*.XLS", "XLS", fselCrée)
i_IdFichier = fCrée(s_fichierXLS)
SI i_IdFichier = -1 ALORS
Erreur("Impossible de créer le fichier demandé")
SINON
//on doit le fermer
fFerme(i_IdFichier)
FIN

//********************************
// RECEPTION
//********************************
LanceAppliAssociée(s_fichierXLS,"open")
SI ObjetActif("Excel.Application") <> Null ALORS
paut_MaFeuilleExcel = ObjetActif("Excel.Application")
SINON
paut_MaFeuilleExcel = allouer un objet Automation "Excel.Application"
FIN

paut_MaFeuilleExcel>>DisplayAlerts = Faux
//paut_MaFeuilleExcel>>Workbooks(fExtraitChemin(s_fichierXLS, fFichier+fExtension))>>Activate
paut_MaFeuilleExcel>>ActiveSheet>>Name = "Emission"
paut_MaFeuilleExcel>>Worksheets>>Add
paut_MaFeuilleExcel>>ActiveSheet>>Name = "Reception"
paut_MaFeuilleExcel>>Worksheets("Reception")>>Activate

//initialisation du fichier
paut_MaFeuilleExcel>>range("A" + 1)>>value = "Numero"
paut_MaFeuilleExcel>>range("B" + 1)>>value = "Identifiant"
paut_MaFeuilleExcel>>range("C" + 1)>>value = "Message CAN"
paut_MaFeuilleExcel>>range("D" + 1)>>value = "Libellé"
paut_MaFeuilleExcel>>range("E" + 1)>>value = "Equipement"
paut_MaFeuilleExcel>>range("F" + 1)>>value = "Message à actionner"

i_NbLignes = TableOccurrence(TABLE_Reception)
SI i_NbLignes > 0 ALORS
POUR i_Cpt = 2 A (i_NbLignes + 1)
//remplissage du fichier
paut_MaFeuilleExcel>>range("A" + i_Cpt)>>value = POP_Config_Equipement.TABLE_Reception.COL_Colonne1
paut_MaFeuilleExcel>>range("B" + i_Cpt)>>value = POP_Config_Equipement.TABLE_Reception.COL_Colonne2
paut_MaFeuilleExcel>>range("C" + i_Cpt)>>value = POP_Config_Equipement.TABLE_Reception.COL_Colonne3
paut_MaFeuilleExcel>>range("D" + i_Cpt)>>value = POP_Config_Equipement.TABLE_Reception.COL_Colonne4
paut_MaFeuilleExcel>>range("E" + i_Cpt)>>value = POP_Config_Equipement.TABLE_Reception.COL_Colonne5
paut_MaFeuilleExcel>>range("F" + i_Cpt)>>value = POP_Config_Equipement.TABLE_Reception.COL_Colonne6
FIN
//on termine le fichier
paut_MaFeuilleExcel>>range("A" + i_Cpt)>>value = "#FIN"
FIN

//********************************
// EMISSION
//********************************
paut_MaFeuilleExcel>>Worksheets("Emission")>>Activate

//initialisation du fichier
paut_MaFeuilleExcel>>range("A" + 1)>>value = "Numero"
paut_MaFeuilleExcel>>range("B" + 1)>>value = "Identifiant"
paut_MaFeuilleExcel>>range("C" + 1)>>value = "Message CAN"
paut_MaFeuilleExcel>>range("D" + 1)>>value = "Libellé"
paut_MaFeuilleExcel>>range("E" + 1)>>value = "Equipement"
paut_MaFeuilleExcel>>range("F" + 1)>>value = "Message qui active"

i_NbLignes = TableOccurrence(POP_Config_Equipement.TABLE_Emission)
SI i_NbLignes > 0 ALORS
POUR i_Cpt = 2 A (i_NbLignes + 1)
//remplissage du fichier
paut_MaFeuilleExcel>>range("A" + i_Cpt)>>value = POP_Config_Equipement.TABLE_Emission.COL_Colonne1
paut_MaFeuilleExcel>>range("B" + i_Cpt)>>value = POP_Config_Equipement.TABLE_Emission.COL_Colonne2
paut_MaFeuilleExcel>>range("C" + i_Cpt)>>value = POP_Config_Equipement.TABLE_Emission.COL_Colonne3
paut_MaFeuilleExcel>>range("D" + i_Cpt)>>value = POP_Config_Equipement.TABLE_Emission.COL_Colonne4
paut_MaFeuilleExcel>>range("E" + i_Cpt)>>value = POP_Config_Equipement.TABLE_Emission.COL_Colonne5
paut_MaFeuilleExcel>>range("F" + i_Cpt)>>value = POP_Config_Equipement.TABLE_Emission.COL_Colonne6
FIN
//on termine le fichier
paut_MaFeuilleExcel>>range("A" + i_Cpt)>>value = "#FIN"
FIN

//enregistrement puis fermeture
//paut_MaFeuilleExcel>>Workbooks(fExtraitChemin(s_fichierXLS, fFichier+fExtension))>>Save

paut_MaFeuilleExcel>>ActiveWorkBook>>SaveAs(fExtraitChemin(s_fichierXLS, fFichier+fExtension),-4143)
paut_MaFeuilleExcel>>ActiveWorkBook>>Close(Faux) // et fermeture du classeur
paut_MaFeuilleExcel>>quit
libérer paut_MaFeuilleExcel

SI ExeTermine("excel.exe") = Faux ALORS
Erreur("Erreur lors de la fermeture du logiciel Excel")
FIN


Je ne comprend pas car je différencie bien les deux et je sauvegarde ensuite uniquement le classeur ...
En tout cas, merci de ton aide

[EDIT] je suis en train de me demander si sa ne vient pas aussi de l'ouverture de mon doc excel au début ...

Contribution le : 04/06/2007 14:41
Créer un fichier PDF de la contribution Imprimer


Re: Problème lors d'une sauvegarde excel (objet automation)
Utilisateur WDF
Inscrit:
03/04/2006 15:00
Post(s): 72
Pour la sauvegarde, c normal que le nom ne lui plaise pas : tu ne donnes que le nom de fichier.
paut_MaFeuilleExcel>>ActiveWorkBook>>SaveAs(fExtraitChemin(s_fichierXLS, fFichier+fExtension),-4143)
c pas bon. il va écrie je ne sais où...

il faut le chemin complet, et là ça marche :
paut_MaFeuilleExcel>>ActiveWorkBook>>SaveAs(s_fichierXLS,-4143)

Contribution le : 05/06/2007 16:23
Créer un fichier PDF de la contribution Imprimer


Re: Problème lors d'une sauvegarde excel (objet automation)
Stagiaire WDF
Inscrit:
04/06/2007 11:28
Post(s): 3
Avec beaucoup de retard, merci !!!

effectivement, mon soucis venait de là ...

Contribution le : 13/06/2007 09:58

Edité par drcharly93 sur 13/6/2007 10:20:45
Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant




Enregistrer votre réponse
CompteNom   Mot de passe   Authentification
Message:


Vous ne pouvez pas débuter de nouveaux sujets.
Vous pouvez voir les sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
Visualiser tous les Partenaires...
WinDev, WebDev, WinDev Mobile et HyperFile sont des marques déposées par PCSoft. |  Voter |  Legal |  Contact |   XOOPS 2.0.13.2