Double excel

E

ericTA

Guest
Salut,
Grace à vous j'ai presque fini mon projet, MERCI.
Seulement voilà il me reste un PB :
À partir de Word j'ouvre un fichier Excel par la commande :
retval = shell('chemin + nom du fichier, 1)
et ce fichier ouvre un autre fichier de référence (un tarif).
Au démarage je teste si tarif est ouvert

On Error Resume Next
Workbooks('TARIF.xls').Activate
If Err <> 0 Then

Sinon je l'ouvre, mais ça marche qu'une fois, car quand je ferme mon fichier Excel, le tarif lui reste ouvert (normal), mais quand je lance une seconde fois la commande Shell il ouvre un nouvel Excel donc pour lui le tarif n'est pas ouvert donc il me l'ouvre de nouveau mais en mode Lecture seule. Quelqu'un à une idée pour éviter cela est que mon nouveau fichier Excel fasse référence au tarif déjà ouvert ????

Merci d'avance
Eric
 
E

ericTA

Guest
Désole,
Mais je n'ai pas vu que tu m'avais répondu, car j'avais contourné mon PB par une simple copie de fichier. Encore désolé mais surtout Merci, car cela m'a servi à améliorer mon Prog.
Par contre je ne comprends pas comment l'utiliser dans mon cas car je suis dans une appli excel quand je lance ce prog, et je ne sait pas extrapoler ce prog Word en Excel.
De plus je viens de trouver une solution qui réalise cela très bien,

Function IsFileOpen(filename As String)
Dim filenum As Integer, errnum As Integer

On Error Resume Next
filenum = FreeFile()
Open filename For Input Lock Read As #filenum
Close filenum
errnum = Err
On Error GoTo 0
Select Case errnum
Case 0
IsFileOpen = False
Case 70
IsFileOpen = True
Case Else
Error errnum
End Select
End Function

Seulement quand j'exécute la ligne de commande
Workbooks('TARIF.xls').Activate il n'active pas le fichier TARIF alors que celui-ci se trouve bien dans ma barre de tache dans windows.
Est-ce parce que j'ouvre excel par la commande shell ???
:silly: :lol: :lol: :whistle:
 

MichelXld

XLDnaute Barbatruc
bonsoir Eric

peux tu décrire en détail ton projet et ce que tu cherches à réaliser car je ne comprends plus : tu utilises des macros Word ou Excel ?
sinon , il existe d'autres methodes que Shell pour ouvrir des classeurs depuis Word .par exemple :

Code:
Sub ouvrirClasseurExcel()
Dim ExcelApp As Object, Classeur As Object

Set ExcelApp = CreateObject('excel.application')
ExcelApp.Visible = True
Set Classeur = ExcelApp.Workbooks.Open('C:\\tarif.xls')
End Sub

ensuite tu veux réactiver le classeur 'Tarif' depuis une macro Word ou Excel ?



bonne soiree
MichelXld
 
E

eric TA

Guest
Salut Michel,
J'ai essayé ta méthode ça ouvre bien mon fichier, mais la macro auto_open ne s'exécute pas. Bizarre...
Je pense avoir contourné mon PB seulement je ne sais pas fermer une feuille Excel à partir d'une appli Word. Je vais soumettre cette demande sur le Forum.
Si tu as une idée, merci d'avance.
Eric

Ps : Mon appli est simple à partir d'une base de données (un logiciel de contacts) j'ouvre un fichier Word avec une fusion (nom, prénom,... Numéro de devis, etc) puis à partir de ce fichier, je copie et renomme un fichier Excel par le numéro de devis ex 104ET-01 récupérer dans Word. Seulement ce fichier 104ET-01.xls fait référence à un fichier TARIF.XLS que j'ouvre au démarrage par la macro auto_open s'il n'est pas ouvert.
Puis je remplis ma feuille de calcule avec les données du Tarif et quand c'est fini, je copie le résultat dans mon fichier Word et le tout est stocké dans le logiciel de contacts.
Simple mais super efficace.
 

Discussions similaires

Statistiques des forums

Discussions
312 345
Messages
2 087 494
Membres
103 559
dernier inscrit
pascalbill