Calculate de Excel à partir de VB.NET [Résolu]

Signaler
Messages postés
4
Date d'inscription
samedi 10 septembre 2005
Statut
Membre
Dernière intervention
13 juin 2006
-
Messages postés
4
Date d'inscription
samedi 10 septembre 2005
Statut
Membre
Dernière intervention
13 juin 2006
-
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")

Merci de votre aide

4 réponses

Messages postés
61
Date d'inscription
mercredi 14 janvier 2004
Statut
Membre
Dernière intervention
14 septembre 2006

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
Messages postés
61
Date d'inscription
mercredi 14 janvier 2004
Statut
Membre
Dernière intervention
14 septembre 2006

bonjour

essaie
app.Calculation = xlCalculationManual

qui annule le calcul automatique d'excel
Messages postés
4
Date d'inscription
samedi 10 septembre 2005
Statut
Membre
Dernière intervention
13 juin 2006

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 ) ?

Merci
Messages postés
4
Date d'inscription
samedi 10 septembre 2005
Statut
Membre
Dernière intervention
13 juin 2006

Ok merci.  Je vais laisser le calcul en Manuel, au lieu de le remettre en Automatic après l'enregistrement.