Bonjour Brigitte,
pour ma part, j'ai redéveloppé une méthode qui se sert de la classe cExcel pour faire l'export excel à partir d'une table...
Raison : l'export de la FAA exporte les colonnes dans l'ordre initial programmé et non dans l'ordre AFFICHÉ.
Tu vas avoir besoin de la classe cExcel fournie par PCSoft dans les exemples de pilotage Excel.
Tu devras adapter pour lire un fichier plutôt qu'un tableau, et donc, tu n'auras pas à mettre les colonnes en ordre...
Voici le code de la méthode : PROCEDURE ExportExcel( pnomTable ) objExcel est un CExcel( Vrai ) objExcel:Ouvrir("",Vrai) objExcel:Visible(Faux)
// Attendre que le document soit ouvert : (Attention : J'ai ajouté dans la classe de cExcel // une sélection du fichier si non-renseigné en paramètre à l'ouverture... Si l'usager fais // "" Annuler dans la fenêtre de sélection du fichier, je mets la var. bAbandon à Vrai...) TANTQUE objExcel:m_sClasseurEnCours = "" _ET_ PAS objExcel:bAbandon Multitâche(10) FIN
SI objExcel:bAbandon ALORS RETOUR
Sablier(Vrai) // Mettre les colonnes visibles en ordre : i est un entier nbColonnesAffichage est un entier = 0 MemCrée("ColonnesExportExcel") POUR i = 1 A pnomTable..NombreColonne SI {pnomTable..Nom+"."+TableEnumèreColonne(pnomTable,i),indChamp}..Visible _ET_ TableIndiceColonne(pnomTable,TableEnumèreColonne(pnomTable,i),ticAffichage) > 0 ALORS nbColonnesAffichage++ MemAjoute( "ColonnesExportExcel", TableIndiceColonne(pnomTable,TableEnumèreColonne(pnomTable,i),ticAffichage), i ) FIN FIN
// Exporter d'abord les entêtes de colonnes : NoColonneExcel est un entier = 0 NoColonne est un entier POUR NoColonne = 1 A pnomTable..NombreColonne IndiceColonne est un entier = MemRecherche("ColonnesExportExcel",NoColonne) SI IndiceColonne > 0 ALORS NoColonneExcel++ objExcel:EcrireValeurCellule( 1, NoColonneExcel, pnomTable[1][IndiceColonne]..Titre) FIN FIN
NoLigne est un entier // Lire le tableau dans l'ordre d'affichage des colonnes : POUR NoLigne = 1 A pnomTable..Occurrence menuPrincipal.msgMenu = "Export en cours..." // Affiche sur barre d'état du menu Jauge(NoLigne,pnomTable..Occurrence,"Export en cours...",iCyanClair) // Utilise la jauge du menu NoColonneExcel = 0 POUR NoColonne = 1 A pnomTable..NombreColonne IndiceColonne = MemRecherche("ColonnesExportExcel",NoColonne) SI IndiceColonne > 0 ALORS NoColonneExcel++ SELON pnomTable[NoLigne][IndiceColonne]..Type CAS typDate: sDate est une Date = pnomTable[NoLigne][IndiceColonne] sString est une chaîne = sDate="" ? "" SINON sDate[[1 A 4]]+"-"+sDate[[5 A 6]]+"-"+sDate[[7 A 8]] objExcel:EcrireValeurCellule( NoLigne+1, NoColonneExcel, sString) CAS typComboSNS: sString = pnomTable[NoLigne][IndiceColonne]..ValeurAffichée objExcel:EcrireValeurCellule( NoLigne+1, NoColonneExcel, sString) AUTRE CAS: objExcel:EcrireValeurCellule( NoLigne+1, NoColonneExcel, pnomTable[NoLigne][IndiceColonne]) FIN FIN FIN FIN
menuPrincipal.msgMenu = "" Jauge() MemSupprimeTout("ColonnesExportExcel") Sablier(Faux)
objExcel:Visible(Vrai)
----------------------------------------------- Bon dev ! |