Wavir
Messages postés4Date d'inscriptionsamedi 10 septembre 2005StatutMembreDernière intervention13 juin 2006
-
12 juin 2006 à 16:44
Wavir
Messages postés4Date d'inscriptionsamedi 10 septembre 2005StatutMembreDernière intervention13 juin 2006
-
13 juin 2006 à 14:02
Bonjour.
J'ai une application VB.NET dont le but est de prendre des données de SQL Server et de les envoyer dans un fichier Excel. Ce fichier Excel fait 15 mo et est en XlCalculation.xlCalculationAutomatic. À l'ouverture du fichier, Excel effectue le calcul. Si on ouvre directement le fichier avec Excel, ce calcul prend environ 30 secondes. Mais si on ouvre le fichier Excel avec le code VB.NET, ce même calcul prend 6 minutes !
Y aurait-il un moyen de faire que Excel fasse ce calcul plus rapidement ou même qu'il ne le fasse pas du tout lors de l'ouverture ?
Le code utilisé pour ouvrir le fichier Excel à partir de VB.NET:
Dim
app
As Microsoft.Office.Interop.Excel.Application
app = CreateObject("Excel.Application")
' C'est à cette ligne que le calcul commence, pendant 6 minutes.
Dim exbook
As Microsoft.Office.Interop.Excel.Workbook = app.Workbooks.Open("C:\test.xls")
cs_bipou
Messages postés61Date d'inscriptionmercredi 14 janvier 2004StatutMembreDernière intervention14 septembre 2006 13 juin 2006 à 09:27
ok
lorsque tu ouvre le fichier directement par excel, tu peux lui indiquer qu'il doit être en cacul manuel. (menu outil, options, onglet calcul) puis tu l'enregistre. c'est un des paramètres qui est sauvegardé
en principe lorsque tu l'ouvrira via vb il devrait prendre en compte ce paramètre
Wavir
Messages postés4Date d'inscriptionsamedi 10 septembre 2005StatutMembreDernière intervention13 juin 2006 12 juin 2006 à 17:26
Le app.Calculation = xlCalculationManual fonctionne bien, mais il faut que l'application soit déjà ouverte pour le faire. Le problème, c'est que le calcul s'effectue lors de l'ouverture, à la ligne
Dim exbook As Microsoft.Office.Interop.Excel.Workbook = app.Workbooks.Open("C:\test.xls")
Et on
ne peut pas
faire le app.Calculation = xlCalculationManual avant cette ligne, puisque app n'a pas encore de Workbook.
Y a-t-il un moyen de faire l'ouverture du fichier sans faire le calcul ? Ou encore une manière de faire le calcul à une vitesse plus acceptable (comme le 30 secondes requis lorsque c'est Excel lui-même qui ouvre le fichier ) ?