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

Wavir 4 Messages postés samedi 10 septembre 2005Date d'inscription 13 juin 2006 Dernière intervention - 12 juin 2006 à 16:44 - Dernière réponse : Wavir 4 Messages postés samedi 10 septembre 2005Date d'inscription 13 juin 2006 Dernière intervention
- 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")

Merci de votre aide
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
cs_bipou 61 Messages postés mercredi 14 janvier 2004Date d'inscription 14 septembre 2006 Dernière intervention - 13 juin 2006 à 09:27
3
Merci
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

Merci cs_bipou 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 117 internautes ce mois-ci

Commenter la réponse de cs_bipou
cs_bipou 61 Messages postés mercredi 14 janvier 2004Date d'inscription 14 septembre 2006 Dernière intervention - 12 juin 2006 à 17:08
0
Merci
bonjour

essaie
app.Calculation = xlCalculationManual

qui annule le calcul automatique d'excel
Commenter la réponse de cs_bipou
Wavir 4 Messages postés samedi 10 septembre 2005Date d'inscription 13 juin 2006 Dernière intervention - 12 juin 2006 à 17:26
0
Merci
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
Commenter la réponse de Wavir
Wavir 4 Messages postés samedi 10 septembre 2005Date d'inscription 13 juin 2006 Dernière intervention - 13 juin 2006 à 14:02
0
Merci
Ok merci.  Je vais laisser le calcul en Manuel, au lieu de le remettre en Automatic après l'enregistrement.
Commenter la réponse de Wavir

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.