Re: Problème lors d'une sauvegarde excel (objet automation)

Posté par nascimo le 4/6/2007 14:41:34
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 ...

Cette contribution était de : http://old.wdforge.org/newbb/viewtopic.php?forum=17&topic_id=5187&post_id=21410