Si fichier fermé, l'ouvrir puis le fermer

Résolu
ccvr -  
 ccvr -

Bonjour à tous,

Je rencontre un petit problème :

J'ai 2 fichiers : fichier1 et fichier2 

Lorsque j'ouvre le fichier2 je souhaite que si le fichier1 n'est pas déjà ouvert, s'ouvre puis se referme.

J'ai donc trouvé des pistes sur les forums, mais le fichier ne se ferme pas je ne comprends pas . Il s'ouvre mais ne se ferme pas ...

Le voici : 

Private Sub Workbook_Open()
Dim Wk As Workbook
On Error Resume Next
Set Wk = Workbooks("C:\Users\clari\Documents\STAGE\Missions\nomenclature\partie 2\fichier1.xlsm")
    If Err <> 1 Then
        Workbooks.Open Filename:="C:\Users\clari\Documents\STAGE\Missions\nomenclature\partie 2\fichier1.xlsm"
        
        Wk.Close True
        
        
    End If
    
End Sub

3 réponses

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     

    bonjour,

    Ton "on error resume next" t'empêche de comprendre ton erreur.  Tu peux ajouter "on error goto 0" juste après la ligne avec le "if".  Ou faire ainsi:

    Private Sub Workbook_Open()
    Dim Wk As Workbook
    On Error goto pasouvert
         Set Wk = Workbooks("C:\Users\clari\Documents\STAGE\Missions\nomenclature\partie 2\fichier1.xlsm")
         exit sub
    pasouvert:
            Workbooks.Open Filename:="C:\Users\clari\Documents\STAGE\Missions\nomenclature\partie 2\fichier1.xlsm"
            Wk.Close True
    End Sub
    0
    1. ccvr
       

      merci pour votre aide!

      Lorsque je teste votre code, il y a une erreur à la ligne 8 : Wk.Close True 

      erreur de type 91 "objets ou variable de type bloc with pas définie"

      0
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > ccvr
         

        Le message d'erreur indique que la variable "Wk" n'est pas définie, qu'elle est vide.  Ce qui me semble logique.

        0
  2. ccvr
     

    que dois je mettre à la place de Wk afin de fermer le fichier que je viens d'ouvrir ?

    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       

      Il manque "Set Wk =" en ligne 7.

      0
  3. ccvr
     

    juste Set Wk pas égal qqch ?

    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       

      A ajouter avant le contenu existant en ligne 7.

      0
      1. ccvr > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         

        ce code semble fonctionner.

        Cependant, lorsque le fichier1 était déjà ouvert, le code provoque sa rupture 

        Or s'il était déjà ouvert, je ne veux pas le fermer 

        Private Sub Workbook_Open()
        Dim Wk As Workbook
        On Error GoTo pasouvert
             Set Wk = Workbooks("C:\Users\clari\Documents\STAGE \Missions\nomenclature\partie 2\fichier1.xlsm")
             Exit Sub
        pasouvert:
               Set Wk = Workbooks.Open("C:\Users\clari\Documents\STAGE\Missions\nomenclature\partie 2\fichier1.xlsm")
                    Wk.Close savechanges:=True
            
                    Set Wk = Nothing
                
               
        End Sub

        merci pour votre aide :)

        0
      2. ccvr > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         

        Merci ca fonctionne !

        merci pour votre aide :)

        0