Afficher message d'attente si un classeur est ouvert

N

nychko

Guest
Bonjour à tous,
Je souhaiterais crééer en début de macro un controle m'affichant un message d'attente
si le classeur appelé (toto.xls) ayant l'adresse c:\BUREAU\toto.xls est ouvert.
MERCI beaucoup .
 
W

wilfried

Guest
Salut,

Tu peut essaye :

on error goto gest_err.err
workbooks("toto.xls").open :="c:\`burea......"



exit sub
gest_err.err:
select case err.number
case **
msgbox("ATTENTION LE FICHIER ' 'toto.xls' ' EST OUVERT")
end select


je ne me souviens plus du code erreur si un fichier est déjà ouvert, pour récupérer ce dernier :remplace on error goto gest_err.err par
'on error goto gest_err.err
puis lance ta macro avec ton fichier ouvert, cela va te renvoyer normalent ton code erreur.

A+ wilfried
 
W

wilfried

Guest
Resalut,
Il faut remplacer ** par le code erreur générer.

Pour obtenir ce dernier :

Tu dois mettre la ligne :
On error goto gest_err en commentaire (utilisation du caractére : ')
puis tu lance la macro.
Ps j'ai fait une petit erreur dans le code (désolé)

on error goto gest_err
workbooks("toto.xls").open :="c:\`burea......"
.
.
..
..
.
.
.
exit sub 'permet de n'aller à la gestion d'erreur que si il y a une erreur!

gest_err:

select case err.number
case **
msgbox("ATTENTION LE FICHIER EST OUVERT")
resume next 'renvoie à la ligne qui suit l'instruction
'generant le code erreur
case else
msgbox(err.description & " " & err.number)
resume next
end select
 
N

nychko

Guest
Resalut je dois pas etre bien doué car ça ne fonctionne pas, la ligne suivante est écrite en rouge et génere donc une erreur :

workbooks("toto.xls").open :="C:\Documents and Settings\pierre.dupont\Bureau\toto.xls"

Désolé de t'ennuyer mais si tu pouvais m'aider une nouvelle fois merci beaucoup. de plus je ne sais pas quel numéro utilisé dans CASE
 
@

@+Thierry

Guest
Bonjour Wilfried, Nychko, le Forum

Voici une manière que nous avions développée en commun sur le MPFE avec Frédéric Sigonneau et El Joker.

Le principe est simple on utilise un fichier "Interface" contenant ces codes, afin de lancer le fichier voulu...

Option Explicit
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


Il suffit de joindre cette Function à une Macro du style suivant dans un fichier "Interface" (Perso.xls, par exemple) pour lancer le fichier :

Sub CallDemandCiti()
  If IsFileOpen("I:\MC_Prod\Cash\Commun_Tools\Demand\Demand.xls") Then
     MsgBox "Demand Program is already in use" + vbCritical, "PROGRAM NOT AVAILABLE"
  Else
     Workbooks.Open "I:\MC_Prod\Cash\Commun_Tools\Demand\Demand.xls"
End If

Bon Après Midi
@+Thierry
 
W

wilfried

Guest
SALUT nychko

décidément je suis pas réveiller...

C'est normal qu'il te mette en rouge cette ligne. Voici la bonne syntaxe

workbooks.open filename:="C:\Documents and Settings\pierre.dupont\Bureau\toto.xls"

Désolè encore une fois.

Merci thierry,pour cette astuce, je n'y avait pas pensé.

A+ le forum
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 944
Membres
101 849
dernier inscrit
florentMIG