Function Excel & VB.net [Résolu]

Messages postés
16
Date d'inscription
jeudi 18 mars 2004
Statut
Membre
Dernière intervention
27 janvier 2012
- - Dernière réponse : cs_yaya60
Messages postés
16
Date d'inscription
jeudi 18 mars 2004
Statut
Membre
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 

2 réponses

Meilleure réponse
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
62
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 209 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Jack
Messages postés
16
Date d'inscription
jeudi 18 mars 2004
Statut
Membre
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 209 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_yaya60