Visual basic et Excel [Résolu]

abessoloclaude 40 Messages postés lundi 14 décembre 2015Date d'inscription 11 janvier 2016 Dernière intervention - 15 déc. 2015 à 22:27 - Dernière réponse : ucfoutu 18022 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 13 décembre 2017 Dernière intervention
- 17 déc. 2015 à 12:31
Bonjour,
j'essaie d'ouvrir un fichier excel a partir de visual basic en utilisant le code suivant:

Imports System.Net.Mime.MediaTypeNames
Imports System.IO
Imports System.Diagnostics
Imports Microsoft.Office
Imports Microsoft.Office.Interop.Excel
Imports Microsoft.Office.Interop
Imports WindowsApplication2.Microsoft.Office.Interop.Excel
Imports WindowsApplication2.Microsoft.Office.Interop.Excel.Application
Imports WindowsApplication2.Microsoft.Office.Interop.Excel.Workbook


Private Sub Button1_Click_1(sender As Object, e As EventArgs) Handles Button1.Click


Dim appExcel As Microsoft.Office.Interop.Excel.Application
Dim wbExcel As Excel.Workbook
Dim wsExcel As Excel.Worksheet


appExcel=CreateObject("WindowsApplication2.Microsoft.Office.Interop.Excel.Application")

wbExcel = appExcel.Workbooks.Open("C:\Utilisateurs\HP\Documents\testons.xlsx")

wsExcel = wbExcel.Worksheets(1)

End Sub


Mais j'obtiens l'erreur suivante: impossible de creer le composant ActiveX.
le compiler precise bien que l'erreur se situe au niveau de :

appExcel=CreateObject("WindowsApplication2.Microsoft.Office.Interop.Excel.Application")

comment reparer cela? pourtant j'ai bien activé microsoft excel library object dans les references (jutilise visual studio)
Afficher la suite 

21 réponses

Répondre au sujet
ucfoutu 18022 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 13 décembre 2017 Dernière intervention - Modifié par ucfoutu le 15/12/2015 à 22:42
0
Utile
1
Bonjour,
L'utilisation du moteur de recherche de ce forum (à toujours utiliser avant d'ouvrir une discussion) t'aurait conduit à ce snippet :
http://codes-sources.commentcamarche.net/source/100410-piloter-office-en-vb-net

EDIT : discussion déplacée vers le sous-forum adéquat (VB.Net)
L'ouverture d'un classeur Excel et la création d'objets Excel (ces seules actions) depuis VB.Net est du VB.Net et non du VBA.

________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
abessoloclaude 40 Messages postés lundi 14 décembre 2015Date d'inscription 11 janvier 2016 Dernière intervention - 16 déc. 2015 à 09:22
il ne reconnait pas "excel.application"
Commenter la réponse de ucfoutu
abessoloclaude 40 Messages postés lundi 14 décembre 2015Date d'inscription 11 janvier 2016 Dernière intervention - 15 déc. 2015 à 23:17
0
Utile
Bonjour;
je souhaite le faire avec du visual basic et non du vb.net; votre lien ne maide en rien
Commenter la réponse de abessoloclaude
abessoloclaude 40 Messages postés lundi 14 décembre 2015Date d'inscription 11 janvier 2016 Dernière intervention - 15 déc. 2015 à 23:18
0
Utile
ya til moyen de le faire avec du visal basic?
Commenter la réponse de abessoloclaude
ucfoutu 18022 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 13 décembre 2017 Dernière intervention - Modifié par ucfoutu le 15/12/2015 à 23:30
0
Utile
Pardon ?
1) VB.Net EST du Visual Basic
2) les lignes de codes que TU as écrites et montrées SONT du VB.Net !

________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
Commenter la réponse de ucfoutu
abessoloclaude 40 Messages postés lundi 14 décembre 2015Date d'inscription 11 janvier 2016 Dernière intervention - 15 déc. 2015 à 23:45
0
Utile
desolée ,
mais meme avec le code vb.net que jai ecrit ;cela ne fonctionne pas.
jai pourtant activé microsoft excel object library mais jai toujours la meme erreur. "impossible de creer le composant activeX"
Commenter la réponse de abessoloclaude
abessoloclaude 40 Messages postés lundi 14 décembre 2015Date d'inscription 11 janvier 2016 Dernière intervention - 15 déc. 2015 à 23:48
0
Utile
le code que jai mis dans mon premier message est effectivement du vb.net mais il ya lerreur dont j vous parle et q j n comprends pas.
pour ouvrir excel,on utilise "Excel.application". mais chez moi, je n'ai pas cette option qui s'affiche quand je code. je n'ai que excel.worksheet et excel.workbook.
je suppose donc qu'il ne reconnait pas excel.application et je ne comprends pas pourquoi
Commenter la réponse de abessoloclaude
ucfoutu 18022 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 13 décembre 2017 Dernière intervention - 15 déc. 2015 à 23:58
0
Utile
C'est moi, qui commence à) ne pas te comprendre ...
1) Le code du snippet vers lequel je t'ai dirigé fonctionne.
2) il implique que tu aies respecté cela :
'Aller dans My Project- Références et ajouter dans COM:
'Microsoft Excel Object 12.0 Library

En cochant bien évidemment la référence à TA version de Excel (qui n'est pas forcément Microsoft Excel Object 12.0 Library
Bonne chance
Commenter la réponse de ucfoutu
abessoloclaude 40 Messages postés lundi 14 décembre 2015Date d'inscription 11 janvier 2016 Dernière intervention - 16 déc. 2015 à 00:07
0
Utile
desolée pour lembrouillamini de depart car j code sur plusieurs tableaux actuellement. je vais faire un copier coller de votre code,et je vous ferai savoir. merci
Commenter la réponse de abessoloclaude
ucfoutu 18022 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 13 décembre 2017 Dernière intervention - 16 déc. 2015 à 00:13
0
Utile
J'ajoute ceci :
Je ne connais pas bien VB.Net, mais si tu veux faire une liaisonj tardive - du "late binding"- (ce que laisse supposer ton utilisation de la fonction CreateObject), ce serait selon moi t'éloigner de la philosophie même de VB.Net. Il est alors probable que, dans un tel cas, il te faudrait travailler hors "Option Strict On") car ce serait faire du VB6 dans VB.Net (peu orthodoxe et non conseillé) !
Commenter la réponse de ucfoutu
abessoloclaude 40 Messages postés lundi 14 décembre 2015Date d'inscription 11 janvier 2016 Dernière intervention - 16 déc. 2015 à 09:21
0
Utile
bonjour,
j'ai essayé votre code,cest comme hier soir. j'ai activé ms excel object library 14.0 car jutilise excel 2010.
mais au niveau de la creation "createobject(Excel.application)" ,j'ai toujours la même erreur qui dit: "impossible de creer le composant activeX"
En fait lorsque je tape "excel", je n'ai que 2 opportunités: excel.workbook ou excel.worsheet.
est ce que ma library peut etre incomplete?
Commenter la réponse de abessoloclaude
ucfoutu 18022 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 13 décembre 2017 Dernière intervention - Modifié par ucfoutu le 16/12/2015 à 10:30
0
Utile
Et tu comptes continuer longtemps, comme çà ???
1) Où as-tu vu, dans le snippet concerné, qu'était utilisée la fonction CreateObject ?
2) J'ai même pris la peine de t'en toucher un mot, non ? (mon message précédent)
C'est vraiment désolant et je suis vraiment désolé, mais il me parait téméraire de continuer avec toi dans de telles conditions ...
Tu avais TOUT ce qu'il te fallait dans le snippet, TOUT !
Je ne vais pas plus loin dans de telles conditions. Encore désolé.
________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
Commenter la réponse de ucfoutu
abessoloclaude 40 Messages postés lundi 14 décembre 2015Date d'inscription 11 janvier 2016 Dernière intervention - 16 déc. 2015 à 12:01
0
Utile
j'ai fait un copir coller de ton code,il ne marche pas.il ya plusieurs version douvertures dun fichier excel a partir de vb.net,et elles sont identiques quasiment.le but est de savoir ce que fait chaque ligne pour pouvoir les utiliser
"createobject" ouvre excel en tant qu'application.dans ton code,"excel.application" associé a "dim" crée une instance. donc le probleme ne se situe pas a ce niveau.cest comme je lai dit precedemment, c'est "Excel.application" qu'il ne reconnait pas.
Comment faire?
Commenter la réponse de abessoloclaude
ucfoutu 18022 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 13 décembre 2017 Dernière intervention - 16 déc. 2015 à 12:37
0
Utile
2
Montre donc le code que tu as exactement écrit (un copier coller de ton code, tel qu'écrit)
Le code du snippet montre comment créer une instance (un objet) Excel.
Une fois l'objet Excel créé, il te suffit de l'utiliser (cet objet) pour ouvrir le classeur que tu veux ! Et cela se fait en pilotant Excel/Vba (méthode Workbooks.Open de VBA appliquée à l'objet créé d'instance Excel)
Si tu ne "captes" toujours pas ces éléments de base, c'est que tu en es au stade de simples copiers/collers sans rien comprendre, ni même commencer à chercher à comprendre. Le développement, c'est tout, sauf cela. Et je suis (et serai toujours) horrifié que l'on "approche" ainsi (sans rien comprendre) le développement.
Bonne chance quand même.

abessoloclaude 40 Messages postés lundi 14 décembre 2015Date d'inscription 11 janvier 2016 Dernière intervention - 16 déc. 2015 à 14:10
pourtant cest pas bien difficile a comprendre ce que jecris. quand je parle de copier coller,je mattends a ce que vous compreniez en tant que programmeur ce que cela veut dire.
on vous parle de l'objet "application" qui n'est pas disponible dans le library.est ce si compliké a comprendre? bref;laissez tomber,je menoccupe
abessoloclaude 40 Messages postés lundi 14 décembre 2015Date d'inscription 11 janvier 2016 Dernière intervention - 16 déc. 2015 à 14:13
excel a 4 objets et 2 d'entre eux sont absents:range et application. il nya que workbook et worksheet qui sont presents.
vous ne comprenez rien a rien ,jessaie pourtant detre claire
Commenter la réponse de ucfoutu
ucfoutu 18022 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 13 décembre 2017 Dernière intervention - 16 déc. 2015 à 14:48
0
Utile
3
Je ne peux me mettre physiquement à ton clavier et devant ton écran pour voir ce que tu as fait, ce que tu as coché, ce que tu as écrit ...
Bien que je devine (puisqu'il faut deviner) que ce que tu as coché n'est pas ce qu'il fallait cocher...
Discussion à lire (à tout hasard) :
http://vbcity.com/forums/t/165201.aspx

abessoloclaude 40 Messages postés lundi 14 décembre 2015Date d'inscription 11 janvier 2016 Dernière intervention - 16 déc. 2015 à 15:13
jai lu votre lien.effectivement moi je fais la chose suivnate:
project-->add references-->COM-->microsoft office object library.

le lien dit qu'il faille aller sur .net et prendre "ms office interop "
puis je savoir comment arriver a ".net"? car lorsque j'ouvre "add references " jai les choix suivants: assemblies;solutions;COM;browse
abessoloclaude 40 Messages postés lundi 14 décembre 2015Date d'inscription 11 janvier 2016 Dernière intervention - 17 déc. 2015 à 12:10
bonjour,
probleme résolu.
Pour ceux que ça interesse,l'ouverture d'un fichier excel a partir de vb.net se fait de la façon suivante:
1. dans notre windowsform(jutilise visualstudio 2012),on va a project-->add referenes-->assemblies-->Microsoft.office.interop.excel
il faut choisir la version 14.0.0.0
2.dans notre windowsform(jutilise visualstudio 2012),on va a project-->add referenes-->COM
il faut cocher:
-microsft development environment 8.0
-microsoft visual basic for application Extensibi....
-microsoft visual studio.NEt project Model (7.1)
-microsoft visual studio.NEt VB and C project...
-OLE automation

3. On va ensuite dans le formulaire windows pour importer Microsoft.office.interop.excel comme ce qui suit:

Imports Excell = Microsoft.Office.Interop.Excel
4. on ecrit ces 3 lignes de codes:

Dim oExcel As New Excell.Application
oExcel.Workbooks.Open("D:/testons.xlsx")
oExcel.Visible = True
abessoloclaude 40 Messages postés lundi 14 décembre 2015Date d'inscription 11 janvier 2016 Dernière intervention - 17 déc. 2015 à 12:11
il faut noter que jai excel 2010 d'ou lutilisation de la version 14.0.0.0
Commenter la réponse de ucfoutu
ucfoutu 18022 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 13 décembre 2017 Dernière intervention - 17 déc. 2015 à 12:31
0
Utile
Bien.
V eux-tu bien alors libérer cette discussion, en cliquant sur le Tag RESOLU au niveau de ton tout premier message ?
Commenter la réponse de ucfoutu

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.