Function Excel & VB.net [Résolu]

Messages postés
16
Date d'inscription
jeudi 18 mars 2004
Dernière intervention
27 janvier 2012
- - Dernière réponse : cs_yaya60
Messages postés
16
Date d'inscription
jeudi 18 mars 2004
Dernière intervention
27 janvier 2012
- 15 févr. 2010 à 15:58
Bonjour,

A partir d'un programme créés en VB.net 2008, je génére des rapports Excel 2003.
Je bute sur l'intégration des fonctions mathématiques d'Excel.

Voici un exemple:

[i]Imports Microsoft.Office.Interop

Dim calcul As Excel.WorksheetFunction
Dim debut As Excel.Range
Dim fin As Excel.Range
Dim resultat As Excel.Range

debut = CType(MyWorkSheet.Cells(1, 5), Excel.Range)
fin = CType(MyWorkSheet.Cells(1, 10), Excel.Range)
resultat = CType(MyWorkSheet.Cells(1, 15), Excel.Range)

resultat.Value = calcul.Sum(debut, fin) /i
mais à la derniere ligne, j'ai une erreur:
"La référence d'objet n'est pas définie à une instance d'un objet."
Et il n'est pas possible d'instancier "Calcul" ....

Quelqu'un à une idée ????
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Dernière intervention
28 août 2015
3
Merci
Salut
As-tu bien déclarer une référence à Office.Excel dans ton projet ?
Comme le dit le message d'erreur, il manque la déclaration de l'application Excel sur laquelle repose les fonctions :
        Dim appExcel As Microsoft.Office.Interop.Excel.Application
        appExcel = New Microsoft.Office.Interop.Excel.Application
        MsgBox(appExcel.WorksheetFunction.Sum(1, 22))

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 106 internautes ce mois-ci

Commenter la réponse de cs_Jack
Messages postés
16
Date d'inscription
jeudi 18 mars 2004
Dernière intervention
27 janvier 2012
3
Merci
Oui, excel.application était bien instanciée.

Grace à ta réponse et à quelques autres du forum, voici ce qui fonctionne pour moi.
(NB: il semble que l'utilisation des références de cellules pose des problemes de syntaxe avec les fonctions ...)

[i]Dim MyExcel As Excel.Application
Dim MyWorkBook As Excel.Workbook
Dim MyWorkSheet As Excel.Worksheet

MyExcel = New Excel.Application

Dim plage3 As Excel.Range = MyWorkSheet.Range(MyWorkSheet.Cells(1, 1), MyWorkSheet.Cells(1, 4))

MyWorkSheet.Cells(1, 5) = CInt(MyExcel.WorksheetFunction.Sum(plage3))/i

Merci à tous.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 106 internautes ce mois-ci

Commenter la réponse de cs_yaya60

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.