instances MSO XP

L

luis

Guest
Salut les meilleurs,
Comment faire pour que on ne puisse lancer qu'une seule fois Excel ?
Je vous explique, j'ai pondu un outil plannings plutôt abouti et relativement complexe et qui, de plus, marche. Il y a quand même un truc qui me fout tout par terre : si l'on lance mon programme plus d'une fois simultanément (sur un même poste bien entendu) il n'aime pas ça tellement. Donc, je voudrais un seul Excel actif possible (je suis sur XP).
Merci les gars
Luis
 
V

Vériland

Guest
Salut Luis,

Ouh là... tu voudrais limiter l'ouverture d'excel une seule fois ?... j'en connais qui vont te dire... pas bien... nous priver d'Excel ?... déjà que Windose nous le fait et que ça énerve...

Là j'ai l'impression que "si l'on lance mon programme plus d'une fois simultanément" tu sois en rupture de mémoire... car à ma connaissance on peut ouvrir plusieurs fichiers... tu peux peut-être essayer :

Private Sub Workbook_BeforeClose(Cancel As Boolean)
MaMacro
End Sub

qui est une macro évènementielle de fermeture auto !

A+ Vériland
 
T

Thierry

Guest
Hello Luis, Bonsoir Vériland

J'ai peur de ne pas avoir capté... Mais si j'ai compris...Faut pas être doué pour ouvrir deux sessions d'excel et aller pointer encore sur le même fichier depuis le même PC ...!

Si tu parles de ton propre programme à ne pas ouvrir simultanément depuis un réseau, tu n'as qu'à faire un control à l'ouverture en macro évènementielle open... Qui ferait un truc comme çà en lançant cette macro....

Sub TestIfAlreadyOpen()
If IsFileOpen("C:\Mes Documents\Mon Programme.xls") Then
MsgBox "Mon Programme est déjà ouvert par quelqu'un..."
ThisWorkbook.Close
End If
End Sub

Pour que çà marche il faut faire cette fonction :

Function IsFileOpen(filename As String)
Dim filenum As Integer, errnum As Integer
On Error Resume Next
filenum = FreeFile()
Open filename For Input Lock Read As #filenum
Close filenum
errnum = Err
On Error GoTo 0
Select Case errnum
Case 0
IsFileOpen = False
Case 70
IsFileOpen = True
Case Else
Error errnum
End Select
End Function

Mais bon dans les deux cas... Tu as l'alerte que le fichier est ReadOnly... puisqu'il est ouvert ... Donc ce serait vraiment par sécurité pour les "durs d'oreille"... Enfin devrais-je dire aveugle !

J'ai peur d'être complètement à coté

BOn Courage
@+THierry
 
T

Thierry

Guest
PS : Après le Dîner... et un test

J'ai donc testé cette macro et fonction en local chez moi sur un "Stand Alone"...
çà marche aussi si on lance le fichier depuis une deuxième session Excel...
Il t'envoie le message et se referme aussi sec...

(En fait moi j'ai fait çà en réseau, pour les étourdis qui ouvre quand même en read only, qui bossent une heure et puis qui peuvent pas sauver ....)

Mais donc çà peut aussi marcher pour ton cas particulier (si je l'ai compris)
@+Thierry
 
T

Ti

Guest
Ton problème vient-il de la présence de plusieurs instances de l'application Excel ou de plusieurs copies ouvertes simultanément de ton programme dans Excel ?
Dans le premier cas, je ne vois pas comment tu peux empêcher simplement cela.
Si c'est le deuxième cas, je soupçonne que tu aies des problèmes avec des macros qui se piétinent un peu les plate-bandes d'une instance à l'autre de ton programme (genre barre d'outils perso qui s'obstine à aller chercher les macros de la première instance ouverte du programme, même depuis les instances suivantes). Dans ce cas, j'ai mis il y a longtemps un programme de démo "VBAMenu" dans la rubrique "Leçons et exemples" qui montre comment gérer ce type de souci.
 

Membres actuellement en ligne

Statistiques des forums

Discussions
314 078
Messages
2 105 468
Membres
109 375
dernier inscrit
anderson2