Je cherche à forcer Excel à n'ouvrir qu'une instance à la fois.
J'ai bien sur posée cette question aux Gourous du forum Excel, mais Excel ne
peut pas faire cela.
Existe t'il une solution via xp?
Merci de vos réponses
Pascal
dans un module de macro ( pas dans le code d'une feuille ou de thisWorkbook)
on met ça : ======================================================= Public Sub boucle() delai = "00:00:03" Dim Prochaine As Date A = Time Prochaine = A + TimeValue(delai)
If ActiveWorkbook.VBProject.VBE.MainWindow.Visible = True Then ' Sortie d'urgence ThisWorkbook.Saved = True Application.Quit End If
End Sub ======================================================= et on lance "boucle" dans Workbook_open()
Toute les 3 secondes, un test est fait si l'éditeur de VBA est ouvert, le classeur est fermé sans sommation.
Bien sûr le délai est modifiable ( variable "delai" )
Cela, combiné avec l'événement App_WorkbookOpen du message précédent, devrait convenir ...
Mais ... .... Dans un environnement "très hostile", de telles protections ne servent à rien car un bricolo habile trouvera une astuce pour passer...
Tout dépend du contexte concret ...
Où est le classeur ( serveur, poste, ... ) comment les utilisateurs y accèdent-ils ? etc etc etc ....
On peut envisager d'ouvrir le classeur en désactivant les macros et dans ce cas ... seule la protection pas mot de passe est active
On peut imaginer l'ouverture autrement .... :
Ouvrir avec notepad ou wordpad un classeur contenant des macros montre qu'une partie du code est "presque lisible" et, avec un peu d'habitude, analysable ...
Bref ... si la sécurité est vraiment importante, il faut dévelloper autrement qu'en VBA.... Faire un "AddIn" ( fichier XLL ) est une méthode plus "solide" : Le classeur lui même ne contient pas de code...
Bien sûr c'est mieux mais nettement moins facile ;o)))))))))
HB
Bonjour,
...compléments...
dans un module de macro
( pas dans le code d'une feuille ou de thisWorkbook)
on met ça :
======================================================= Public Sub boucle()
delai = "00:00:03"
Dim Prochaine As Date
A = Time
Prochaine = A + TimeValue(delai)
If ActiveWorkbook.VBProject.VBE.MainWindow.Visible = True Then
' Sortie d'urgence
ThisWorkbook.Saved = True
Application.Quit
End If
End Sub
======================================================= et on lance "boucle" dans Workbook_open()
Toute les 3 secondes, un test est fait
si l'éditeur de VBA est ouvert,
le classeur est fermé sans sommation.
Bien sûr le délai est modifiable ( variable "delai" )
Cela, combiné avec l'événement
App_WorkbookOpen
du message précédent, devrait convenir ...
Mais ... ....
Dans un environnement "très hostile", de telles protections ne servent
à rien
car un bricolo habile trouvera une astuce pour passer...
Tout dépend du contexte concret ...
Où est le classeur ( serveur, poste, ... )
comment les utilisateurs y accèdent-ils ?
etc etc etc ....
On peut envisager d'ouvrir le classeur en désactivant les macros
et dans ce cas ... seule la protection pas mot de passe est active
On peut imaginer l'ouverture autrement .... :
Ouvrir avec notepad ou wordpad
un classeur contenant des macros
montre qu'une partie du code est "presque lisible"
et, avec un peu d'habitude, analysable ...
Bref ... si la sécurité est vraiment importante,
il faut dévelloper autrement qu'en VBA....
Faire un "AddIn" ( fichier XLL ) est une méthode plus "solide" :
Le classeur lui même ne contient pas de code...
Bien sûr c'est mieux mais nettement moins facile ;o)))))))))
dans un module de macro ( pas dans le code d'une feuille ou de thisWorkbook)
on met ça : ======================================================= Public Sub boucle() delai = "00:00:03" Dim Prochaine As Date A = Time Prochaine = A + TimeValue(delai)
If ActiveWorkbook.VBProject.VBE.MainWindow.Visible = True Then ' Sortie d'urgence ThisWorkbook.Saved = True Application.Quit End If
End Sub ======================================================= et on lance "boucle" dans Workbook_open()
Toute les 3 secondes, un test est fait si l'éditeur de VBA est ouvert, le classeur est fermé sans sommation.
Bien sûr le délai est modifiable ( variable "delai" )
Cela, combiné avec l'événement App_WorkbookOpen du message précédent, devrait convenir ...
Mais ... .... Dans un environnement "très hostile", de telles protections ne servent à rien car un bricolo habile trouvera une astuce pour passer...
Tout dépend du contexte concret ...
Où est le classeur ( serveur, poste, ... ) comment les utilisateurs y accèdent-ils ? etc etc etc ....
On peut envisager d'ouvrir le classeur en désactivant les macros et dans ce cas ... seule la protection pas mot de passe est active
On peut imaginer l'ouverture autrement .... :
Ouvrir avec notepad ou wordpad un classeur contenant des macros montre qu'une partie du code est "presque lisible" et, avec un peu d'habitude, analysable ...
Bref ... si la sécurité est vraiment importante, il faut dévelloper autrement qu'en VBA.... Faire un "AddIn" ( fichier XLL ) est une méthode plus "solide" : Le classeur lui même ne contient pas de code...
Bien sûr c'est mieux mais nettement moins facile ;o)))))))))
HB
Pascal
Merci pour toutes ces lignes de code Je vais en adapter certaines
Mais celle qui me parait le plus adaptée est: If ActiveWorkbook.VBProject.VBE.MainWindow.Visible = True Then ' Sortie d'urgence ThisWorkbook.Saved = True Application.Quit End If Application.OnTime EarliestTime:=Prochaine, _ Procedure:="boucle", Schedule:=True
Avec un délai de 00:00:00.5+ Protection du VBA
Par contre je ne savais pas que l'on pouvait voir un code via NotePad???
Donc je vais me pencher sur la dernière partie de ton message Classeur XXL.
Merci Pascal
"Lotre" a écrit dans le message de news:
Bonjour,
...compléments...
dans un module de macro ( pas dans le code d'une feuille ou de thisWorkbook)
on met ça : ======================================================= > Public Sub boucle() delai = "00:00:03" Dim Prochaine As Date A = Time Prochaine = A + TimeValue(delai)
If ActiveWorkbook.VBProject.VBE.MainWindow.Visible = True Then ' Sortie d'urgence ThisWorkbook.Saved = True Application.Quit End If
End Sub ======================================================= > et on lance "boucle" dans Workbook_open()
Toute les 3 secondes, un test est fait si l'éditeur de VBA est ouvert, le classeur est fermé sans sommation.
Bien sûr le délai est modifiable ( variable "delai" )
Cela, combiné avec l'événement App_WorkbookOpen du message précédent, devrait convenir ...
Mais ... .... Dans un environnement "très hostile", de telles protections ne servent à rien car un bricolo habile trouvera une astuce pour passer...
Tout dépend du contexte concret ...
Où est le classeur ( serveur, poste, ... ) comment les utilisateurs y accèdent-ils ? etc etc etc ....
On peut envisager d'ouvrir le classeur en désactivant les macros et dans ce cas ... seule la protection pas mot de passe est active
On peut imaginer l'ouverture autrement .... :
Ouvrir avec notepad ou wordpad un classeur contenant des macros montre qu'une partie du code est "presque lisible" et, avec un peu d'habitude, analysable ...
Bref ... si la sécurité est vraiment importante, il faut dévelloper autrement qu'en VBA.... Faire un "AddIn" ( fichier XLL ) est une méthode plus "solide" : Le classeur lui même ne contient pas de code...
Bien sûr c'est mieux mais nettement moins facile ;o)))))))))
HB
Merci pour toutes ces lignes de code
Je vais en adapter certaines
Mais celle qui me parait le plus adaptée est:
If ActiveWorkbook.VBProject.VBE.MainWindow.Visible = True Then
' Sortie d'urgence
ThisWorkbook.Saved = True
Application.Quit
End If
Application.OnTime EarliestTime:=Prochaine, _
Procedure:="boucle", Schedule:=True
Avec un délai de 00:00:00.5+ Protection du VBA
Par contre je ne savais pas que l'on pouvait voir un code via NotePad???
Donc je vais me pencher sur la dernière partie de ton message Classeur XXL.
Merci
Pascal
"Lotre" <moi@pas.la.ici> a écrit dans le message de news:
uEzYvL0GKHA.4024@TK2MSFTNGP02.phx.gbl...
Bonjour,
...compléments...
dans un module de macro
( pas dans le code d'une feuille ou de thisWorkbook)
on met ça :
======================================================= > Public Sub boucle()
delai = "00:00:03"
Dim Prochaine As Date
A = Time
Prochaine = A + TimeValue(delai)
If ActiveWorkbook.VBProject.VBE.MainWindow.Visible = True Then
' Sortie d'urgence
ThisWorkbook.Saved = True
Application.Quit
End If
End Sub
======================================================= > et on lance "boucle" dans Workbook_open()
Toute les 3 secondes, un test est fait
si l'éditeur de VBA est ouvert,
le classeur est fermé sans sommation.
Bien sûr le délai est modifiable ( variable "delai" )
Cela, combiné avec l'événement
App_WorkbookOpen
du message précédent, devrait convenir ...
Mais ... ....
Dans un environnement "très hostile", de telles protections ne servent à
rien
car un bricolo habile trouvera une astuce pour passer...
Tout dépend du contexte concret ...
Où est le classeur ( serveur, poste, ... )
comment les utilisateurs y accèdent-ils ?
etc etc etc ....
On peut envisager d'ouvrir le classeur en désactivant les macros
et dans ce cas ... seule la protection pas mot de passe est active
On peut imaginer l'ouverture autrement .... :
Ouvrir avec notepad ou wordpad
un classeur contenant des macros
montre qu'une partie du code est "presque lisible"
et, avec un peu d'habitude, analysable ...
Bref ... si la sécurité est vraiment importante,
il faut dévelloper autrement qu'en VBA....
Faire un "AddIn" ( fichier XLL ) est une méthode plus "solide" :
Le classeur lui même ne contient pas de code...
Bien sûr c'est mieux mais nettement moins facile ;o)))))))))
Merci pour toutes ces lignes de code Je vais en adapter certaines
Mais celle qui me parait le plus adaptée est: If ActiveWorkbook.VBProject.VBE.MainWindow.Visible = True Then ' Sortie d'urgence ThisWorkbook.Saved = True Application.Quit End If Application.OnTime EarliestTime:=Prochaine, _ Procedure:="boucle", Schedule:=True
Avec un délai de 00:00:00.5+ Protection du VBA
Par contre je ne savais pas que l'on pouvait voir un code via NotePad???
Donc je vais me pencher sur la dernière partie de ton message Classeur XXL.
Merci Pascal
"Lotre" a écrit dans le message de news:
Bonjour,
...compléments...
dans un module de macro ( pas dans le code d'une feuille ou de thisWorkbook)
on met ça : ======================================================= > Public Sub boucle() delai = "00:00:03" Dim Prochaine As Date A = Time Prochaine = A + TimeValue(delai)
If ActiveWorkbook.VBProject.VBE.MainWindow.Visible = True Then ' Sortie d'urgence ThisWorkbook.Saved = True Application.Quit End If
End Sub ======================================================= > et on lance "boucle" dans Workbook_open()
Toute les 3 secondes, un test est fait si l'éditeur de VBA est ouvert, le classeur est fermé sans sommation.
Bien sûr le délai est modifiable ( variable "delai" )
Cela, combiné avec l'événement App_WorkbookOpen du message précédent, devrait convenir ...
Mais ... .... Dans un environnement "très hostile", de telles protections ne servent à rien car un bricolo habile trouvera une astuce pour passer...
Tout dépend du contexte concret ...
Où est le classeur ( serveur, poste, ... ) comment les utilisateurs y accèdent-ils ? etc etc etc ....
On peut envisager d'ouvrir le classeur en désactivant les macros et dans ce cas ... seule la protection pas mot de passe est active
On peut imaginer l'ouverture autrement .... :
Ouvrir avec notepad ou wordpad un classeur contenant des macros montre qu'une partie du code est "presque lisible" et, avec un peu d'habitude, analysable ...
Bref ... si la sécurité est vraiment importante, il faut dévelloper autrement qu'en VBA.... Faire un "AddIn" ( fichier XLL ) est une méthode plus "solide" : Le classeur lui même ne contient pas de code...
Bien sûr c'est mieux mais nettement moins facile ;o)))))))))
HB
Lotre
Bonjour,
Pascal wrote:
Merci pour toutes ces lignes de code Je vais en adapter certaines
(...)
Avec un délai de 00:00:00.5+ Protection du VBA
Une demi-seconde ?
Attention de ne pas trop ralentir l'ensemble... Il me semble que 5 secondes sont amplement suffisantes : Il faut au vilain curieux le temps de - saisir le mot de passe de protection de VBA obtenu pas un "crackage" quelconque.... puis - d'ouvrir un module ...
alors ... même en allant vite ... (surtout si le mot de passe est compliqué à saisir !!!)
D'ailleurs, les prgm qui crackent les mots de passe des projets VBA ont parfois du mal avec les mots de passe très long ... donc ....
Par contre je ne savais pas que l'on pouvait voir un code via NotePad???
En voit pas mal de choses en effet ... Certains "éditeurs de texte" sont même peut-être plus pratiques...
Donc je vais me pencher sur la dernière partie de ton message Classeur XXL.
Reste le problème de la désactivation des macros ....
Sur certains site dédiés à Excel on trouve des exemples de fichier XLL mais la fabriquation de telles librairies est "nettement plus technique" que le VBA ....
A+ et bon courage...
HB
Bonjour,
Pascal wrote:
Merci pour toutes ces lignes de code
Je vais en adapter certaines
(...)
Avec un délai de 00:00:00.5+ Protection du VBA
Une demi-seconde ?
Attention de ne pas trop ralentir l'ensemble...
Il me semble que 5 secondes sont amplement suffisantes :
Il faut au vilain curieux le temps de
- saisir le mot de passe de protection de VBA
obtenu pas un "crackage" quelconque....
puis
- d'ouvrir un module ...
alors ... même en allant vite ...
(surtout si le mot de passe est compliqué à saisir !!!)
D'ailleurs, les prgm qui crackent les mots de passe
des projets VBA ont parfois du mal
avec les mots de passe très long ...
donc ....
Par contre je ne savais pas que l'on pouvait voir un code via
NotePad???
En voit pas mal de choses en effet ...
Certains "éditeurs de texte" sont même peut-être plus pratiques...
Donc je vais me pencher sur la dernière partie de ton message
Classeur XXL.
Reste le problème de la désactivation des macros ....
Sur certains site dédiés à Excel on trouve des exemples de fichier XLL
mais la fabriquation de telles librairies est "nettement plus
technique" que le VBA ....
Merci pour toutes ces lignes de code Je vais en adapter certaines
(...)
Avec un délai de 00:00:00.5+ Protection du VBA
Une demi-seconde ?
Attention de ne pas trop ralentir l'ensemble... Il me semble que 5 secondes sont amplement suffisantes : Il faut au vilain curieux le temps de - saisir le mot de passe de protection de VBA obtenu pas un "crackage" quelconque.... puis - d'ouvrir un module ...
alors ... même en allant vite ... (surtout si le mot de passe est compliqué à saisir !!!)
D'ailleurs, les prgm qui crackent les mots de passe des projets VBA ont parfois du mal avec les mots de passe très long ... donc ....
Par contre je ne savais pas que l'on pouvait voir un code via NotePad???
En voit pas mal de choses en effet ... Certains "éditeurs de texte" sont même peut-être plus pratiques...
Donc je vais me pencher sur la dernière partie de ton message Classeur XXL.
Reste le problème de la désactivation des macros ....
Sur certains site dédiés à Excel on trouve des exemples de fichier XLL mais la fabriquation de telles librairies est "nettement plus technique" que le VBA ....