Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Session

13 réponses
Avatar
Pascal
Bonjour,
Win XP SP3
Excel 2007

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

10 réponses

1 2
Avatar
Jacquouille la Fripouille
*Bonjour Pascal*
Tu as tapoté sur ton clavier le message suivant
<news: :

Bonjour,
Win XP SP3
Excel 2007

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



Qu'appelles-tu une "instance" ? Une seule feuille de calcu ? %-(
--
Jacquouille la Fripouille
Périgord, meitat chen, meitat porc.
Avatar
Pascal
En fait je voudrais inhiber la possiblité de pouvoir lancer Excel deux fois
Plus concrétement si j'ai un fichier excel ouvert, je ne peux en ouvrir un
autre

Merci
"Jacquouille la Fripouille" a écrit dans
le message de news: u%
*Bonjour Pascal*
Tu as tapoté sur ton clavier le message suivant
<news: :

Bonjour,
Win XP SP3
Excel 2007

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



Qu'appelles-tu une "instance" ? Une seule feuille de calcu ? %-(
--
Jacquouille la Fripouille
Périgord, meitat chen, meitat porc.



Avatar
Herser
Pascal wrote:
En fait je voudrais inhiber la possiblité de pouvoir lancer Excel
deux fois Plus concrétement si j'ai un fichier excel ouvert, je ne
peux en ouvrir un autre



Bonjour
Tu n'es pas obligé de cliquer sur un 2° fichier, quand tu en as 1 ouvert !
J'avoue que je ne comprends pas.
Tu as des fichiers qui s'ouvrent malgré toi ?

Peut-être que ta vraie question a une réponse autre ?

Herser
Avatar
Jean-Jacques [JJP]
> En fait je voudrais inhiber la possiblité de pouvoir lancer Excel
deux fois Plus concrétement si j'ai un fichier excel ouvert, je ne
peux en ouvrir un autre

Merci
"Jacquouille la Fripouille" a écrit
dans le message de news: u%
*Bonjour Pascal*
Tu as tapoté sur ton clavier le message suivant
<news: :

Bonjour,
Win XP SP3
Excel 2007

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



Qu'appelles-tu une "instance" ? Une seule feuille de calcu ? %-(
--
Jacquouille la Fripouille
Périgord, meitat chen, meitat porc.





Bonjour,

Tu dois avoir un bouton "ouvrir" et là tu sélectionne un fichier que va
s'ouvrir dans la meme " session"

Pour excel tu trouveras de bons conseils ici :

news://msnews.microsoft.com/microsoft.public.fr.excel


@+
JJP
Avatar
Jacquouille la Fripouille
*Bonjour Pascal*
Tu as tapoté sur ton clavier le message suivant
<news: :

En fait je voudrais inhiber la possiblité de pouvoir lancer Excel deux
fois Plus concrétement si j'ai un fichier excel ouvert, je ne peux en
ouvrir un autre




Je ne comprends pas. Après avoir lancé Excel, on peut ouvrir autant de
dossiers Excel qu'on veut à partir de Fichiers/Ouvrir (raccourci clavier :
Ctrl + O ).
--
Jacquouille la Fripouille
Périgord, meitat chen, meitat porc.
Avatar
Pascal
>Je ne comprends pas. Après avoir lancé Excel, on peut ouvrir autant de
dossiers Excel qu'on veut à partir de Fichiers/Ouvrir (raccourci clavier :
Ctrl + O ).



Oui c'est justement de ce que je ne veux pas.
Donc j'ai désactivé toutes les options permettant à partir de mon appli
excel de créer un nouveau classeur
J'ai aussi viré les options du Ruban.
Ainsi que tous les raccourcis clavier permettant entre autre d'accéder au
module VBA et les Ctrl+O Ctrl+N et toutes les combinaisons de touche avec
Alt
Donc jusque là tout va bien

Seulement ces options redeviennent accessibles si on ouvre une deuxième
session Excel à partir d'un autre classeur.
Et donc par exemple la vue de mon code par Alt F11 redevient possible
Donc ce que je cherche depuis ce matin c'est le moyen d'empêcher l'ouverture
de cette deuxième
session Excel tant que mon application est ouverte.
Mais je ne sais pas si je suis très clair.

Pascal





"Jacquouille la Fripouille" a écrit dans
le message de news:
*Bonjour Pascal*
Tu as tapoté sur ton clavier le message suivant
<news: :

En fait je voudrais inhiber la possiblité de pouvoir lancer Excel deux
fois Plus concrétement si j'ai un fichier excel ouvert, je ne peux en
ouvrir un autre




Je ne comprends pas. Après avoir lancé Excel, on peut ouvrir autant de
dossiers Excel qu'on veut à partir de Fichiers/Ouvrir (raccourci clavier :
Ctrl + O ).
--
Jacquouille la Fripouille
Périgord, meitat chen, meitat porc.




Avatar
Jacquouille la Fripouille
*Bonjour Pascal*
Tu as tapoté sur ton clavier le message suivant
<news: :

Je ne comprends pas. Après avoir lancé Excel, on peut ouvrir autant de
dossiers Excel qu'on veut à partir de Fichiers/Ouvrir (raccourci clavier
: Ctrl + O ).



Oui c'est justement de ce que je ne veux pas.
Donc j'ai désactivé toutes les options permettant à partir de mon appli
excel de créer un nouveau classeur
J'ai aussi viré les options du Ruban.
Ainsi que tous les raccourcis clavier permettant entre autre d'accéder au
module VBA et les Ctrl+O Ctrl+N et toutes les combinaisons de touche avec
Alt
Donc jusque là tout va bien

Seulement ces options redeviennent accessibles si on ouvre une deuxième
session Excel à partir d'un autre classeur.
Et donc par exemple la vue de mon code par Alt F11 redevient possible
Donc ce que je cherche depuis ce matin c'est le moyen d'empêcher
l'ouverture de cette deuxième
session Excel tant que mon application est ouverte.
Mais je ne sais pas si je suis très clair.

Pascal



Le brouilard commence à s'éclaircir ... lol mais je ne vois pas de
solution.
Si dans le NG dédié à Excel, on t'a répondu que c'était impossible ... :-(
Entre nous, si tu nous disais le pourquoi de cette demande qui paraît un peu
saugrenue ?
--
Jacquouille la Fripouille
Périgord, meitat chen, meitat porc.
Avatar
Lotre
Salut,

Je ne comprends pas. Après avoir lancé Excel, on peut ouvrir autant
de dossiers Excel qu'on veut à partir de Fichiers/Ouvrir (raccourci
clavier : Ctrl + O ).





Ce que tu nommes session est je pense un "instance" de excel ...

Attention ... même avec plusieurs classeurs ouverts
il n'y a qu'une instance du prgm ( regarde dans le gestionnaire de
tâches)


En fait tu as un module VBA dans un classeur
et tu veux empêcher l'ouverture d'un autre classeur
durant l'ouverture de celui-ci ... c'est ça ?

1. Ton module VBA sera inaccessible
si tu le protèges par un mot de passe

dans l'éditeur VBA
Ctrl-R pour voir le projet
clic droit sur le projet -> propriétés -> protection ...

2. Intercepter l'évenement "ouverture d'un autre classeur" est
possible
( voir extrait de l'aide ci-dessous)
et tu peut donc fermer le classeur en trop


Ton classeur peut aussi faire tourner de façon
régulière une petite routine qui énumère la collection
application.Workbooks
pour voir si un autre classeur est présent ....

bref ...

De toute façon si le classeur est bien protégé ( feuilles ET modules
VBA)
je ne vois pas à quoi ça va servir ...

A+

HB

PS :

Extraits de l'aide :
####################################################
WorkbookActivate, événement
============================ Cet événement se produit lorsqu'un classeur est activé.

Syntaxe

Private Sub app_WorkbookActivate(ByVal Wb As Workbook)

app Objet de type Application déclaré avec des événements dans un
module de classe. Pour plus d'informations, consultez Utilisation
d'événements avec l'objet Application.

Wb Le classeur activé.
###########################################
Utilisation d'événements avec l'objet Application

Avant de pouvoir utiliser des événements avec l'objet Application,
vous devez créer un nouveau module de classe et déclarer un objet de
type Application avec des événements. Par exemple, supposons qu'un
nouveau module de classe est créé et appelé EventClassModule. Le
nouveau module de classe contient le code suivant :

Public WithEvents App As ApplicationAprès que le nouvel objet a été
déclaré avec événements, il apparaît dans la liste déroulante Objet du
module de classe et vous pouvez écrire des procédures d'événement pour
le nouvel objet. (Lorsque vous sélectionnez le nouvel objet dans la
zone Objet, les événements autorisés pour cet objet sont listés dans
la liste déroulante Procédure.)

Avant l'exécution des procédures vous devez toutefois connecter
l'objet déclaré dans le module de classe avec l'objet Application.
Pour ce faire, utilisez le code suivant à partir d'un module
quelconque.

Dim X As New EventClassModule

Sub InitializeApp()
Set X.App = Application
End SubAprès l'exécution de la procédure InitializeApp, l'objet App du
module de classe pointe sur l'objet Application de Microsoft Excel et
les procédures d'événement du module de classe s'exécutent lorsque les
événements se produisent.

######################################################

--
Jacquouille la Fripouille
Périgord, meitat chen, meitat porc.




Avatar
Pascal
L'explication est simple.
Je développe une application de Facturation et Devis assez compléte sous
2007.
Rien de bien nouveau.
Pour différentes raisons qui me sont propres je n'ai pas envie de voir le
code cassé car malgré toutes les protections par Mot de passe sur le VBA
tous les codes se cassent via des softs facilement téléchargeables sur le
Net.
Lorsque je développais en 2003 quelqu'un m'avait passé un code détruisant
tous les modules en cas de tentative d'ouverture de VBA et en cas de
changement de mot de passe via Atomic PassWord par exemple.
Mais il ne fonctionne pas sous 2007.
Donc je cherche...

Voilà Voilà




"Jacquouille la Fripouille" a écrit dans
le message de news:
*Bonjour Pascal*
Tu as tapoté sur ton clavier le message suivant
<news: :

Je ne comprends pas. Après avoir lancé Excel, on peut ouvrir autant de
dossiers Excel qu'on veut à partir de Fichiers/Ouvrir (raccourci clavier
: Ctrl + O ).



Oui c'est justement de ce que je ne veux pas.
Donc j'ai désactivé toutes les options permettant à partir de mon appli
excel de créer un nouveau classeur
J'ai aussi viré les options du Ruban.
Ainsi que tous les raccourcis clavier permettant entre autre d'accéder au
module VBA et les Ctrl+O Ctrl+N et toutes les combinaisons de touche avec
Alt
Donc jusque là tout va bien

Seulement ces options redeviennent accessibles si on ouvre une deuxième
session Excel à partir d'un autre classeur.
Et donc par exemple la vue de mon code par Alt F11 redevient possible
Donc ce que je cherche depuis ce matin c'est le moyen d'empêcher
l'ouverture de cette deuxième
session Excel tant que mon application est ouverte.
Mais je ne sais pas si je suis très clair.

Pascal



Le brouilard commence à s'éclaircir ... lol mais je ne vois pas de
solution.
Si dans le NG dédié à Excel, on t'a répondu que c'était impossible ...
:-(
Entre nous, si tu nous disais le pourquoi de cette demande qui paraît un
peu
saugrenue ?
--
Jacquouille la Fripouille
Périgord, meitat chen, meitat porc.



Avatar
Lotre
Re,

message un peu long avec du code ...

1.

Je viens de faire un test avec Excel2000 ...

Dans un classeur on fait un nouveau "module de classe"

dans cet exemple
le module de classe se nomme "Appclasse"
Le classeur se nomme "NomDuClasseur.xls"

Ce second point est vital sinon
le classeur interdira son ouverture, un comble ;o)

Code utilisé :

#################################################
Dans le module de classe nommé "AppClasse" :
========================================== Public WithEvents App As Application

Private Sub App_WorkbookOpen(ByVal Wb As Workbook)
If Wb.Name <> "NomDuClasseur.xls" Then
Wb.Close
End If

End Sub

#################################################
Dans le code de "ThisWorkbook" :
=============================== Dim XAPP As New AppClasse
Sub InitialiseApp()
Set XAPP.App = Application
End Sub

Private Sub Workbook_Open()
InitialiseApp
End Sub
#################################################

2.

Pour qu'un classeur modifie son code VBA
il faut utiliser
Microsoft Visual Basic For Applications Extensibility
( référence à ajouter dans l'éditeur VBA)

Attention , pour tester sa présence (afin de la charger si
nécessaire )
il faut regarder quelle version est présente ...
Je ne connais pas le n° de version pour 2007

Pour tester sa présence avec 97 et 2000 j'utilisais ça :
(version 5.0 ou 5.3 )

########################################################
Sub PourVBIDE()
Dim r
Dim I As Integer

For Each r In ThisWorkbook.VBProject.References
If r.GUID = "{0002E157-0000-0000-C000-000000000046}" Then
VBIDEestIci = True
Exit Sub
End If
Next r

For I = 1 To 0 Step -1
On Error GoTo PaslàI
ThisWorkbook.VBProject.References.AddFromGuid _
GUID:="{0002E157-0000-0000-C000-000000000046}", Major:=5, Minor:=3
* I
VBIDEestIci = True

Exit Sub
PaslàI:
Err = 0

Next I
Paslà:
MsgBox " La bibliothèque " & vbCr & _
" Microsoft Visual Basic For Applications Extensibility" & vbCr & _
" n'a pas été trouvée et est indispensable..." , , "Désolé !"
VBIDEestIci = False

End Sub
=##################################################################
Une fois ce composant disponible on peut modifier le code VBA de façon
"dynamique"


procédure qui supprime le module nommé "Truc" :
================================= Private Sub SupprimeModule()
On Error Resume Next
With ActiveWorkbook.VBProject.VBComponents
.Remove .Item("Truc")
End With
On Error GoTo 0
End Sub
==================================
On peut aussi ajouter un nouveau module :
===================== Set VBC = Nothing
Set VBC =
ActiveWorkbook.VBProject.VBComponents.Add(vbext_ct_StdModule)
VBC.Name = "Truc"
Set VBC = Nothing
==================== ou modifier le code ... etc ...

l'objet

ActiveWorkbook.VBProject.VBComponents("Truc") est riche ....

Mais attention ... tout cela est délicat à manipuler ;o)

Je pense que le NG excel te sera plus utile que le NG généraliste sur
XP ;o)


Bon courage !!!

HB
1 2