empecher d'ouvrir ou activer un nouveau fichier

remes

XLDnaute Junior
Bonjour à tous,
Je voudrai savoir si il est possible de faire en sorte que lorsque mon fichier nommé LISTE est ouvert, il soit impossible d'ouvrir un autre fichier excel ou d'activer un autre fichier excel déjà ouvert et qu'une message box dise: avant de travailler sur un autre fichier, veuillez d'abord fermer LISTE. Si on peu pas empécher l'ouverture d'un nouveau fichier, au moins avoir un message qui indique qu'il faut fermer le fichier LISTE avant de travailler sur un autre fichier.
D'avance merci.
 

camarchepas

XLDnaute Barbatruc
Re : empecher d'ouvrir ou activer un nouveau fichier

Bonjour ,

Pour le message lors du lancement de Liste pas de problème si le classeur est dans la même instance Excel.
Pour empêcher de lancer l'autre fichier, hormis modifier tous les fichiers (lol, j'y crois pas trop ), je ne pense pas que ce soit possible en vba depuis liste.
Pour le message, il faut voir, mais en imaginant une procédure qui scannerait les fichiers ouverts, si l'on constate que l'un d'entre eux est un Excel alors hop , on envoi le message.

Ton fichier liste est ouvert parce qu'une macro tourne ou pour l'avoir sous la main rapidement ?
 

Pierrot93

XLDnaute Barbatruc
Re : empecher d'ouvrir ou activer un nouveau fichier

Bonjour Remes, camarchepas

essaye peut être comme ceci, codes à placer dans ton classeur "liste" :

dans un module standard :
Code:
Option Explicit
Public e As New Classe1

dans le module "thisworkbook" :
Code:
Option Explicit
Private Sub Workbook_Open()
Set e.MonExcel = Application
End Sub

dans un module de classe nommé "Classe1" :
Code:
Option Explicit
Public WithEvents MonExcel As Application
Private Sub MonExcel_WorkbookActivate(ByVal Wb As Workbook)
If Wb.Name <> "LISTE.xls" Then
    MsgBox "interdit"
    Workbooks("LISTE.xls").Activate
End If
End Sub
Private Sub MonExcel_WorkbookOpen(ByVal Wb As Workbook)
If Wb.Name <> "LISTE.xls" Then Wb.Close
'ou bien plus simplement
'wb.Close
End Sub

bon après midi
@+
 
Dernière édition:

camarchepas

XLDnaute Barbatruc
Re : empecher d'ouvrir ou activer un nouveau fichier

Bonjour Pierrot,

J'ai essayé , mais rien ne ce passe, je suis sous Excel 2003, aussi bien dans la même instance que pour une nouvelle instance. par le moindre signe ?
J'ai peut être oublié un truc.
Voici le fichier d'essai :
 

Pièces jointes

  • LISTE.xls
    35 KB · Affichages: 68
  • LISTE.xls
    35 KB · Affichages: 62
  • LISTE.xls
    35 KB · Affichages: 58

Pierrot93

XLDnaute Barbatruc
Re : empecher d'ouvrir ou activer un nouveau fichier

camarchepas, ca marche chez moi sous 2003

j'avais édité cette partie...
Code:
Private Sub MonExcel_WorkbookOpen(ByVal Wb As Workbook)
If Wb.Name <> "LISTE.xls" Then Wb.Close
'ou bien plus simplement
'wb.Close
End Sub
 

remes

XLDnaute Junior
Re : empecher d'ouvrir ou activer un nouveau fichier

Bonjour camarchepas voici en fait la base de cette discution qui a fait naitre cette question merci à toi.
https://www.excel-downloads.com/threads/thisworkbook-close.143268/
PIerrot93 peux tu me dire ce qu'est un module standard et un module de classe merci.
Mon niveau est faible en VBA mais je me débrouille en bricolage et souvent grace à vos conseil je solutionne merci.
 

Habitude

XLDnaute Accro
Re : empecher d'ouvrir ou activer un nouveau fichier

Un module est un fichier de déclaration de fonction et de variables Public ou globale au classeur.

Un module de classe est un objet de données.
Il possède un constructeur (Initialize) et un Destructeur (Terminate)
Tu peux déclarer plusieurs variable de différents type. Et même d'autres object.
Il est à la base de ce qu'on appel Programmation Orienté Objet.

Exemple simple:
Généralement, un vecteur de donnée bien qu'il possède 2 dimensions ne peut gérer qu'un seul type de données.

dim v() as string ou dim v(0) as double

Par contre, les possibilité deviennent infini avec un objet de donné

dans Classe test
dim nom as string
dim numero as long

dim v() as test

ensuite tu fait v(i).nom ou v(i).numero pour accéder à tes données.
 

camarchepas

XLDnaute Barbatruc
Re : empecher d'ouvrir ou activer un nouveau fichier

Précision,

Merci pour cette démonstration du jamais impossible ,

Alors effectivement pour le cas d'une ouverture d'un fichier contenant une macro alors que Liste est ouvert ça fonctionne bien, par contre lorsqu'on lance Liste et qu'un fichier Excel est ouvert il scratch directement le fichier 'Aprés 2 heures de saisie pas cool quand même. par contre je ne vois jamais le message interdit dans quel cas l'affiches -tu ?

Ps : a oui , sur ouverture d'un excel sans macro rien ne se passe
 

Pierrot93

XLDnaute Barbatruc
Re : empecher d'ouvrir ou activer un nouveau fichier

Re,

le message est affiché lors de l'activation d'un autre classeur... pas lors de l'ouverture, mais chaacvun peut adaapter comme il le veut.... bien évidement il faut autoriser les macros dans le classeur "liste"....
 

Discussions similaires

Statistiques des forums

Discussions
311 729
Messages
2 081 971
Membres
101 852
dernier inscrit
dthi16088