bonjour
Existe-t-il un code pour compter le nombre de fois qu'un fichier est ouvert ?
merci
Version imprimable
bonjour
Existe-t-il un code pour compter le nombre de fois qu'un fichier est ouvert ?
merci
Bonjour,
Quel est ton besoin, au juste ? S'agit-il d'un classeur Excel ? Est-ce que tu peux mettre une macro dans ce classeur ?
re
il s'agit bien d'un classeur exel et d'un code vba. je veux pouvoir mettre un nombre maximum d'ouverture du classeur.
Tu exécutes ceci une fois :
Mets la macro suivante dans "ThisWorkbook" :Code:
1
2
3 Sub test2() ThisWorkbook.Names.Add "Ctr", 0, False End Sub
Remplace 50. L'avantage de cette procédure est qu'elle utilise un nom défini qui n'apparaît pas dans le gestionnaire de noms.Code:
1
2
3
4
5
6
7 Private Sub Workbook_Open() With ThisWorkbook.Names("Ctr") Var = CInt(Replace(.RefersTo, "=", "")) + 1 If Var = 50 Then ThisWorkbook.Close False ThisWorkbook.Names.Add "Ctr", Var, False End With End Sub
Evidemment, rien n'empêche un utilisateur d'ouvrir le classeur. C'est l'accès aux macros qui est contrôlé.
re
j'ai essayé ta solution , en modifiant le nombre max, mais je n'ai vu aucune conséquence.Ceci dit c'est l'ouverture meme du classeur que je veux empecher.
Mets plutôt :
Au 3e essai, le classeur va s'enregistrer avec le password "motdepasse". Non testé. A essayer sur un classeur de test.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 Private Sub Workbook_Open() Dim Chemin As String With ThisWorkbook.Names("Ctr") Var = CInt(Replace(.RefersTo, "=", "")) + 1 If Var > 2 Then Chemin = ThisWorkbook.Path ThisWorkbook.SaveAs "C:\temp\" & ThisWorkbook.Name, , Password:="motdepasse" Kill Chemin & "\" & ThisWorkbook.Name ThisWorkbook.SaveAs Chemin & "\" & ThisWorkbook.Name ThisWorkbook.Close False Else ThisWorkbook.Names.Add "Ctr", Var, False End If End With End Sub
bonjour
j'ai essayé , mais cela ne fonctionne pas
Bonjour,
Qu'est-ce qui se passe ? Une erreur ?Citation:
j'ai essayé , mais cela ne fonctionne pas
bonsoir
si tu a une cellule de libre dans ton classeur
essaie ceci :
la limite est de 3Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 Private Sub Workbook_Open() If Cells(Rows.Count, Columns.Count) = 3 Then Application.Visible = False Dim sMessage As String, sTitle As String, sDefault As String, sMyValue As String ' Définit le message. sMessage = "Entrez votre mot de passe pour réinitialiser le compte" sTitle = "TROP D'OUVERTURE DE CE FICHIER" ' Définit le titre. sDefault = "tapez ici votre mot de passe " ' Définition la valeur par défaut. ' Affiche le message, le titre et la valeur par défaut. sMyValue = InputBox(sMessage, sTitle, sDefault) If sMyValue = "toto" Then Cells(Rows.Count, Columns.Count) = "" Application.Visible = True Else Cells(Rows.Count, Columns.Count) = Cells(Rows.Count, Columns.Count) + 1 End If End Sub 'bien sur met un mot de passe passe a ton code (vbproject)
et le mot de passe est "toto" a toi d'adapter
au plaisir
Bonjour,
@ Patrick
Attention à la déclaration de tes variables, aucune n'est typée.
Mais surtout, attention également à l'utilisation de mots clés réservés à VBA, Default en est un.
bonsoir fring
oupss... c'est vrai
donc a remplacer tout les "default " par "defo":mouarf:
j'ai encore repondu vite c'etait un code ecrit vite fait en plus la grande partie du code viens de l'aide "default" y compris :mouarf::mouarf::mouarf:
tape inputbox dans aide et prend pas celui "application.inputbox mais l'autre
trop tordant :oops::oops:
au plaisir
On s'éloigne du sujet initial mais pour info, afin d'éviter le problème des mots clés réservés, une solution consiste à utiliser la convention typographique en préfixant le nom de la variable selon son type.
Descriptif des conventions typographiques du code Visual Basic
re
:ccool:pour l'info
re
Cela fonctionne parfaitement, sauf que mon classeur en question n'est pas enregistrable. Donc y a-t-il une solution par rapport a ca ?........Sinon je pense que je vais devoir dès l'ouverture, et avant toute modification, enregistrer le classeur.
Ceci dit peut tu brievement m'expliquer comment ca fonctionne
Code:If Cells(Rows.Count, Columns.Count) = 3 Then
ca veut dire
si la cellule(derniere ligne du sheets,derniere colonne du sheet)a pour valeur "3" then ce que tu veux
j'ai utilisé ca pour que ca soit la derniere cellule en bas a droite qui te serve de temoins il est rare d'utiliser pour xls 65536 ligne et je ne sais plus le nombre de colonne maxi en excel 2003
au plaisir
bonjour fring et oliver-tig
et mettre ce fichier en "vbhiden":P(fichier caché)
au plaisir