OVH Cloud OVH Cloud

Base de registre

2 réponses
Avatar
Silene
Bonjour,
Je voudrai faire un petit programme pour que mon fichier=20
ne soit pas ouvert plus de 5 fois sur un autre ordinateur=20
en utilisant la base de registre:

if Application.OrganizationName <> "FR"
cpt =3D GetSetting(appname:=3D"LFO_APP", _
section:=3D"nom du fichier", key:=3D"1")=20
SaveSetting "LFO_APP", "GestPlanningCondi", "1", 5=20
End If
If cpt <=3D 0 Then
...

J'ai essay=E9 de la fa=E7on que j'ai d=E9crite au dessus mais=20
cela ne fonctionne pas correctement.
existe t-il un exemple?
Merci de me r=E9pondre.
Silene

2 réponses

Avatar
Nicolas B.
Salut,

Voici un exemple qui compte et autorise 5 ouvertures du fichier si
l'organisation n'est pas FR :

Private Sub Workbook_Open()
If Application.OrganizationName = "FR" Then Exit Sub

Dim WSH As Object
Dim N As Integer
Dim Entree As String

Set WSH = CreateObject("WScript.Shell")
Entree = "HKCUSoftwareMPFEClasseur.xls"

On Error GoTo LaBas
N = WSH.RegRead(Entree)
On Error GoTo 0

If N >= 4 Then ThisWorkbook.Close

WSH.RegWrite Entree, N + 1

Exit Sub
LaBas:
WSH.RegWrite Entree, 0
End Sub

Par contre, la méthode n'est pas infaillible : on pourra toujours
empêcher l'exécution des macros sur le fichier, et donc empêcher la
fermeture provoquée.


A+
Nicolas B.


Silene wrote:
Bonjour,
Je voudrai faire un petit programme pour que mon fichier
ne soit pas ouvert plus de 5 fois sur un autre ordinateur
en utilisant la base de registre:

if Application.OrganizationName <> "FR"
cpt = GetSetting(appname:="LFO_APP", _
section:="nom du fichier", key:="1")
SaveSetting "LFO_APP", "GestPlanningCondi", "1", 5
End If
If cpt <= 0 Then
...

J'ai essayé de la façon que j'ai décrite au dessus mais
cela ne fonctionne pas correctement.
existe t-il un exemple?
Merci de me répondre.
Silene


Avatar
Michel Pierron
Bonjour Silène;
Exemple:
Private Sub Workbook_Open()
Dim Counter
On Error Resume Next
Counter = GetAllSettings("MyApp", "Startup")
If IsEmpty(Counter) Then
WriteSettings "1"
Exit Sub
End If
If Counter(0, 1) > 5 Then
ThisWorkbook.Close False
Else
WriteSettings Counter(0, 1) + 1
End If
End Sub

Private Sub WriteSettings(n)
SaveSetting "MyApp", "Startup", "Count", n
End Sub

MP

"Silene" a écrit dans le message de
news:203901c47d43$b84161f0$
Bonjour,
Je voudrai faire un petit programme pour que mon fichier
ne soit pas ouvert plus de 5 fois sur un autre ordinateur
en utilisant la base de registre:

if Application.OrganizationName <> "FR"
cpt = GetSetting(appname:="LFO_APP", _
section:="nom du fichier", key:="1")
SaveSetting "LFO_APP", "GestPlanningCondi", "1", 5
End If
If cpt <= 0 Then
...

J'ai essayé de la façon que j'ai décrite au dessus mais
cela ne fonctionne pas correctement.
existe t-il un exemple?
Merci de me répondre.
Silene