PROCEDURE ExportVersExcel(NomTable) SI Presence_Office("Excel") = 0 ALORS Erreur("Excel n'a pas été installé sur cette machine, vous ne pouvez pas utiliser cette classe !") ELSE CFichier est une chaîne SwOk est un booléen CFichier = fSélecteur("", "Export.xls", "Sélectionnez un fichier...", "Tous fichiers (*.*)"+TAB+"*.*"+RC+"Fichiers Excel"+TAB+"*.xls", "*.xls", fselCrée+fselExiste) IF CFichier <> "" THEN IF fFichierExiste(CFichier) THEN IF OuiNon("Le fichier existe, voulez vous l'écraser ?") THEN fSupprime(CFichier) SwOk = 1 ELSE SwOk = 0 END ELSE SwOk = 1 END IF SwOk THEN TableVersExcel(NomTable,CFichier) MonObjetExcel est une objet Automation dynamique //MaFeuille est un objet automation dynamique NbrCol, i, j,k, cpt est un entier NbrLigne , CptVisible, EDebut est un entier NomCol, NomColTxt est une chaîne ETmp est un réel NbrCol = TableOccurrence(NomTable,toColonne) tabColonne est un tableau de NbrCol par 4 chaînes // Instance de Word existante ? SI ObjetActif("Excel.Application") <> Null ALORS // Récupération de l'instance de Word existante MonObjetExcel = ObjetActif("Excel.Application") SINON // Allocation de l'objet automation "MaRecherche" MonObjetExcel = allouer un objet Automation "Excel.Application" FIN // Excel devient visible MonObjetExcel>>Visible = Vrai MonObjetExcel>>Workbooks>>Open(CFichier) //on resize cpt = 0 FOR i = 1 TO NbrCol IF {NomTable + "." + TableEnumèreColonne(NomTable,i)}..Visible = True THEN cpt ++ MonObjetExcel>>ActiveSheet>>Columns(cpt)>>ColumnWidth = {NomTable + "." + TableEnumèreColonne(NomTable,i)}..Largeur / 7.05 // trace("Colonne " + cpt + " --> " + {NomTable + "." + TableEnumèreColonne(NomTable,i)}..Largeur / 7.05) END END //Il faut trier les colonnes //on reprends le bon ordre puis on trie FOR i = 1 TO NbrCol NomCol = TableEnumèreColonne(NomTable,i) NomColTxt = {NomTable + "." + NomCol}..Titre tabColonne[TableIndiceColonne(NomTable,NomCol,ticAffichage),1] = NomColTxt IF {NomTable + "." + NomCol}..Visible = True THEN CptVisible += 1 tabColonne[i,2] = TableIndiceColonne(NomTable,NomCol,ticAffichage) tabColonne[TableIndiceColonne(NomTable,NomCol,ticAffichage),3] = {NomTable + "." + NomCol}..Type tabColonne[TableIndiceColonne(NomTable,NomCol,ticAffichage),4] = {NomTable + "." + NomCol}..RichEdit END END //On insere cptVisible colonne Blanche... FOR i = 1 TO CptVisible MonObjetExcel>>ActiveSheet>>Cells(1,1)>>Select MonObjetExcel>>ActiveSheet>>Columns("A:A")>>Insert END NbrLigne = TableOccurrence(NomTable) EDebut = CptVisible + 1 FOR i = 1 TO CptVisible FOR j = EDebut TO EDebut + NbrCol IF ChaîneOccurrence(tabColonne[i,1],MonObjetExcel>>ActiveSheet>>Cells(1,j)>>Value) > 0 THEN // trace(tabColonne[i,1] + "Trouvé a la pos : " + J) MonObjetExcel>>ActiveSheet>>Columns(j)>>Select IF Val(tabColonne[i,3]) = 5 THEN //Code pour une Coche FOR k = 2 TO NbrLigne + 1 IF MonObjetExcel>>ActiveSheet>>Cells(k,j)>>Value THEN MonObjetExcel>>ActiveSheet>>Cells(k,j)>>Font>>Name = "Wingdings 2" MonObjetExcel>>ActiveSheet>>Cells(k,j)>>Font>>Size = 12 MonObjetExcel>>ActiveSheet>>Cells(k,j)>>HorizontalAlignment = -4108 MonObjetExcel>>ActiveSheet>>Cells(k,j)>>Value = "R" ELSE MonObjetExcel>>ActiveSheet>>Cells(k,j)>>Font>>Name = "Wingdings 2" MonObjetExcel>>ActiveSheet>>Cells(k,j)>>Font>>Size = 12 MonObjetExcel>>ActiveSheet>>Cells(k,j)>>HorizontalAlignment = -4108 MonObjetExcel>>ActiveSheet>>Cells(k,j)>>Value = "S" END END END // //pour arrondir les monétaires // if val(tabColonne[i,3]) = 20005 then // // for k = 2 to NbrLigne + 1 // if MonObjetExcel>>ActiveSheet>>Cells(k,j)>>Value <> 0 then // ETmp = MonObjetExcel>>ActiveSheet>>Cells(k,j)>>Value // ETmp = round(Etmp,2) // MonObjetExcel>>ActiveSheet>>Cells(k,j)>>Value = Etmp // // END // END // END IF Val(tabColonne[i,4]) THEN //Alors c'est un RTF FOR k = 2 TO NbrLigne + 1 IF MonObjetExcel>>ActiveSheet>>Cells(k,j)>>Value <> "" THEN MonObjetExcel>>ActiveSheet>>Cells(k,j)>>Value = RTFVersTexte(MonObjetExcel>>ActiveSheet>>Cells(k,j)>>Value) END END END MonObjetExcel>>ActiveSheet>>Columns(j)>>Cut MonObjetExcel>>ActiveSheet>>Columns(i)>>Select MonObjetExcel>>ActiveSheet>>Paste END END END MonObjetExcel>>ActiveSheet>>PageSetup>>Orientation = 2 //MonObjetExcel>>ActiveWorkbook>>Save //Permet de quitter l'application Excel //Application.DisplayAlerts=False //Application.Quit END END END