Si fichier fermé, l'ouvrir puis le fermer

Résolu/Fermé
ccvr - 20 juil. 2022 à 10:18
 ccvr - 20 juil. 2022 à 15:50

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

A voir également:

3 réponses

yg_be Messages postés 22905 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 juin 2024 1 480
20 juil. 2022 à 10:49

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

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
yg_be Messages postés 22905 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 juin 2024 1 480 > ccvr
20 juil. 2022 à 11:03

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

0

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

0
yg_be Messages postés 22905 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 juin 2024 1 480
20 juil. 2022 à 11:41

Il manque "Set Wk =" en ligne 7.

0

juste Set Wk pas égal qqch ?

0
yg_be Messages postés 22905 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 juin 2024 1 480
20 juil. 2022 à 11:58

A ajouter avant le contenu existant en ligne 7.

0
ccvr > yg_be Messages postés 22905 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 juin 2024
20 juil. 2022 à 14:01

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
yg_be Messages postés 22905 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 juin 2024 1 480 > ccvr
20 juil. 2022 à 15:04

Merci de tenir compte de ceci quand tu partages du code: https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code

Je suggère ceci, au lieu de ton code en ligne 4:

Set Wk = Workbooks("fichier1.xlsm")
0
ccvr > yg_be Messages postés 22905 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 juin 2024
20 juil. 2022 à 15:50

Merci ca fonctionne !

merci pour votre aide :)

0