ouvrir un fichier excel

D

debutant

Guest
allo, j aimerais savoir comment je peux vérifier si un fichier excel est fermer. S' il est fermer je veux ouvrir

voici les lignes de code de que j ai éssayé sans succes.

If 'jobstatus.xls' = 0 Then ' C EST ICI MON PROBLEME

ChDir 'G:\\Planif_Global\\Jobstatus'
Workbooks.Open FileName:= _
'\\\\10.95.6.10\\GROUPS\\Planif_Global\\Jobstatus\\jobstatus.xls'
End If

merci bcp d avance
 

Abel

XLDnaute Accro
Bonjour débutant (ça va bien vite changer),

Code:
Sub TestOuvert       
 For Each WB In Workbooks
            If WB.Name = FichierAOuvrir Then
                MsgBox (FichierAOuvrir & ' est déjà ouvert.' & Chr(10) _
                    & 'Fermer le si vous voulez faire un nouveau traitement.' & Chr(10) _
                    & Chr(10) & 'La routine est arrètée.')
                DejaOuvert = True
                GoTo LaFin
            End If
Next WB

LaFin:
End Sub

Ce code peut être insérer dans n'importe quelle macro.

En espérant que cela te dépanne.

Abel.
 
D

debutant

Guest
j ai inséré le code dans ma macro mais ca ne compile pas !!! :(
Sub planning_desautels()

Application.ScreenUpdating = False

Sub TestOuvert()
FichierAOuvrir = ActiveWorkbook.Name

For Each WB In Workbooks
If WB.Name = FichierAOuvrir Then
;MsgBox (FichierAOuvrir & ' est déjà ouvert.' & Chr(10) _
&n bsp; & 'Fermer le si vous voulez faire un nouveau traitement.' & Chr(10) _
&n bsp; & Chr(10) & 'La routine est arrètée.')
DejaOuvert = True
;GoTo LaFin
End If
Next WB

LaFin:
End Sub



Windows('jobstatus.xls').Activate
 

Abel

XLDnaute Accro
Bonjour débutant, le forum,

C'est normal.
Je vois dans les quelques lignes des trucs assez bizarres. Il doit y avoir embrouille avec mon copier/coller.

De plus, un seul 'Sub quelque chose ()' est suffisant.
Si tu veux insérer ce traitement dans une procédure existante, fais le sans les deux lignes 'Sub TestOuvert()' ni 'End Sub' juste après 'LaFin:'.
D'ailleurs en parlant de ça. Ce renvoi à la fin est fait pour qu'aucune action ne soit exécutée si on s'apperçoit que le fichier est déjà ouvert.
L'étiquette 'LaFin:' doit donc être juste avant 'End Sub' qui par définition est la dernière ligne d'un programme.
On peut remplacer 'Goto LaFin' par 'Exit Sub' qui aura pour effet d'arrêter le 'Sub' en cours.
La ligne 'DejaOuvert=True' ne sert à rien ici. Elle me servait juste à renseigner une variable qui est untilisée dans d'autres procédures de mon projet. Tu peux supprimer.

Maintenant ce code peut être appeler indépendamment.
Pour l'appeler depuis un autre programme, il suffit, dans cet autre programme, d'inscrire la ligne 'TestOuvert' à l'endroit où on veut voir ce traitement s'exécuter.

J'espère avoir réussi à apporter des précisions et pas trop de noeuds de cerveau.

Abel

Code:
Sub TestOuvert ()
For Each WB In Workbooks
If WB.Name = FichierAOuvrir Then MsgBox (FichierAOuvrir & ' est déjà ouvert.' & Chr(10) _
 & 'Fermer le si vous voulez faire un nouveau traitement.' & Chr(10) _
 & Chr(10) & 'La routine est arrètée.')
Exit SubEnd If
Next WB
End Sub
 

salim

XLDnaute Occasionnel
bonjour debutant, Abel, et le Forum

debutant je te propose le code ci dessous, et la demonstration dans le fichier joint pour ta demande que j'espère avoir bien saisie .

Code:
Option Explicit

Function Ouvert(ByVal NomFichier$) As Boolean 'Ti
    Dim Wbk As Workbook
    On Error GoTo fin
    Set Wbk = Workbooks(NomFichier)
    Ouvert = True
fin:
End Function
Sub test()
    Dim Wbk As Workbook, Nom$, Chemin$
    Chemin = ThisWorkbook.Path & '/'
    Nom = InputBox('Indiquer le nom du classeur a ouvrir')
    If Nom = '' Then Exit Sub
    If Ouvert(Nom) = False Then Workbooks.Open Chemin & Nom & '.xls'
End Sub

@ bientôt
salim. [file name=Classeur1_20050223151247.zip size=10691]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Classeur1_20050223151247.zip[/file]
 

Pièces jointes

  • Classeur1_20050223151247.zip
    10.4 KB · Affichages: 22

Abel

XLDnaute Accro
Re,

Oups !

En relisant le sujet de départ, je vois que je me suis bien zopé.

Mon code regarde si le fichier est ouvert et non l'inverse.
Bon d'accord, c'est juste l'inverse. Mais quand même.

Zop'là, youp'la boum !

Bien vu salim. Il faut juste un '\\' à la plce du '/' dans la ligne Chemin = ThisWorkbook.Path & '/'

Abel.
 

Discussions similaires

Statistiques des forums

Discussions
314 017
Messages
2 104 579
Membres
109 081
dernier inscrit
Vio21