begin process at 2008 07 06 18:57:22
1 205 717 membres
280 nouveaux aujourd'hui
14 119 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : object OLE [ Langages dérivés / VBA ] (xaeris)

object OLE le 14/05/2008 16:27:11

xaeris
bonsoir tout le monde !
j'ai un petit probleme en vba ...
j'ai codé une appli qui gére un fichier excel.
Quand l'appli est lancée, j'ouvre en meme temps le workbook excel, je fais toutes les modifs que je veux et quand je ferme l'appli ca ferme aussi excel...
maintenant je voudrais donner un acces libre a ce fichier ( c'est a dire que je rend le workbook visible), donc je fais un :
appexcel.visible = true

La personne fait les modifications qu'elle veut et ferme ensuite l'application excel avec la crois en haut a gauche :)
et la ca ferme mon workbook excel..., du coup quand je ferme l'appli ensuite ca me met un gros message d'erreur bien moche...

je voudrais savoir si quelqu'un a une idée de la facon dont je pourrais procéder pour arriver a faire ma conultation/modification.

j'avais penser a plusieurs choses:
-faire un objet OLE de mon workbook, de cette facon je pourrais fermer mon workbook avec un cmdbutton et donc configurer la fermeture comme je le veux.
- coder la croix excel pour mon workbook pour qu'elle ne ferme pas le workbook mais juste le rendre invisible avec une sauvegarde.

le problème étant que je débute en vba et que je ne suis pas vraiment doué

pour l'objet OLE j'ai deja codé ca :

Exel = CreateOLEObject("Excel.Application")
a = "C://......"
set wbexcel = excel.workbooks.open(a)
form1.ole1 = wbexcel
form1.ole1.visible = true


mais vb hurle a l'agonie :)

je voudrais savoir si vous auriez une solution a mon problème ( meme si je n'ai aps forcement été tres clair ) ou meme si vous pensez que c'est faisable, voire me donner un tuto correct sur les OLE, meme( on sait jamais ) me dire pourquoi mon code plante ( indice ca me selectionne CreateOLEObject lors du debogage ).

Je vous remercie par avance !!


Re : object OLE le 14/05/2008 16:34:01

jrivet
Membre Club
Salut,
Si tu souhaites piloter Excel depuis VB6 utlises la référence Microsoft Excel Object Library

Comment ouvrir un classeur Excel Vierge depuis VB6 (ceci en est un exemple d'utilisation mais l'idée est là)

@+: Ju£i€n
Pensez: Réponse acceptée

Re : object OLE le 14/05/2008 16:35:07

bigfish_le vrai
Salut,

tu pourrais peut etre juste gerer l'erreur

On Local Error Resume Next
Excel.Close False
if Err <> then Err.Clear

Mais je ne sais pas si marche jamais essayé

A+

Re : object OLE le 14/05/2008 16:37:38

mortalino
Membre Club
salut,

le mieux c'est de vérifier si ton fichier est encore ouvert,

si pas ouvert, :u ne vides que la mémoire de ton objet (set appexcel = nothing),
si ouvert, ferneture propre depuis ton appli

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA

Re : object OLE le 14/05/2008 17:16:14

xaeris
ouai c'est uen bonne solution de tester si le fichier est ouvert, ce qui est embetant c'est qu'il va falloir que je teste ca pour toutes les modifs que je veux effectuer .

j'ai une appli qui possède plusieurs cmdbuttons.
Prenons un exemple :

j'ouvre mon appli, Excel s'ouvre avec mon workbook...
je clic sur l'un de mes cmdbuttons qui fait une execution automatique sur l'une de mes feuilles (Excel etant deja ouvert je n'ai besoin que d'activer la feuille utilisée ) je Save ma modification, puis je lance la consultation/modification, mon excel s'affiche et je fais des modifs dedans je ferme l'appli excel avec la croix. Je reviens sur mon apppli vba, si je veux refaire un traitement automatique, je dois d'abord vérifier que le fichier est ouvert et sinon, l'ouvrir.
j'ai actuellement 10 traitements possibles grace a mes cmdbuttons, il faudrait que je teste pour els 10 non ?  

Re : object OLE le 14/05/2008 17:30:41

mortalino
Membre Club
Tu places la verif dans une fonction à part de ta procédure, et tu fais appels a elle quand tu en as besoins.

Regarde du côté de l'API _lopen
Exemple ici :
http://www.codyx.org/snippet_ouvrir-fichier-word-ou-excel-est-ouvert-copie_313.aspx

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA

Re : object OLE le 14/05/2008 17:41:01

xaeris
et meme :'(
je viens de m'apercevoir que excel ne fermais pas réellement le workbook sur le click de la crois, si vous voulez, il a été fermé, sans l'être vraiment c bizarre ...

du coup il faudrais que je parametre la croix de mon excel quelqu'un connais la commande ?

Re : object OLE le 14/05/2008 17:49:12

mortalino
Membre Club
Ca me semble vachement compliqué pour pas grand chose.

Si ton appli ne gere que le fichier Excel et rien d'autre, autant le faire en vba (le vb intégré à Excel).
Au pire, va dans le sens de bigfish_le vrai, avec une gestion d'erreur

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA

Re : object OLE le 14/05/2008 18:07:00

bigfish_le vrai
pour la croix il y une solution ici

Sinon pour verifier si excel est encore ouvert tu peux faire ça

if Exel.Excel.XlOpen = 2 then msgbox "Excel est ouvert"

au fait une petite correction sur mon message precedent :

On Local Error Resume Next
Exel.Close False
if Err <> then Err.Clear

d'ailleur je te conseil de trouver un autre nom de variable cela evitera les confusions

A+

Re : object OLE le 14/05/2008 18:09:34

mortalino
Membre Club
p'tite correction

On Local Error Resume Next
Exel.Close False true 'sauvegarder les modifs, non ?
if Err <> 0 then Err.Clear

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA


[Page 1 Page 2]
Classé sous : appli, excel, workbook, ferme, ole

Participer à cet échange

Pub



Appels d'offres

WEB DESIGN
Budget : 1 000€
Plugin Dialer outlook
Budget : 2 000€
Travail graphique- ill...
Budget : 1 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS