Bonjour,
Je souhaiterais savoir si il est possible de surveiller un fichier excel avec un compteur. C'est à dire qu'a chaque ouverture du fichie un compteur se déclenche et à chaque fermeture il s'arrete.
Est ce possible ?
Bonjour,
Je souhaiterais savoir si il est possible de surveiller un fichier excel avec un compteur. C'est à dire qu'a chaque ouverture du fichie un compteur se déclenche et à chaque fermeture il s'arrete.
Est ce possible ?
A travers VBA? A travers un programme externe?
Quel type de compteur? un compteur temps je suppose, puisque tu veux controler l'ouverture et la fermeture? Ou doit etre enregistré le compteur? dans une cellule du classeur?
Si l'utilisateur n'active pas les macros, ca va etre compliqué de le faire avec VBA.
Sinon, en supposant que le compteur est enregistré dans une propriété du document nommée "compteur",et que les macros sont activées par l'utilisateur, dans le module ThisWorkbook :
Rem. C'est encore à améliorer, car si l'utilisateur annule la fermeture du fichier, ca incrémente quand même...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 Private compte Private Sub Workbook_BeforeClose(Cancel As Boolean) Call Verif_Compteur ' incrémente le compteur avec la différence en seconde par rapport à l'ouverture du fichier ThisWorkbook.CustomDocumentProperties("compteur") = ThisWorkbook.CustomDocumentProperties("compteur") + DateDiff("s", compte, Now) End Sub Private Sub Workbook_Open() Call Verif_Compteur compte = Now ' initialise le compte End Sub Sub Verif_Compteur() ' Vérifie si la propriété du document "compteur" existe sinon la crée à 0 Dim p As DocumentProperty bool = True For Each p In ThisWorkbook.CustomDocumentProperties If p.Name = "compteur" Then bool = False End If Next If bool Then Set p = ThisWorkbook.CustomDocumentProperties.Add("compteur", False, msoPropertyTypeFloat, 0) End If Set p = Nothing End Sub
Il serait peut-etre plus simple de le mettre dans une cellule du classeur, car la taille de la propriété est limitée...
M'enfin bon, le code est facile à modifier pour enregistrer le compteur dans une cellule
Bonsoir
ci dessous compteur de visite (usf de petite taille baptisé ici "visites" à construire avec un textbox nommé "compteur") a placer dans thisworkbook Par Lecture/écriture dans HKey_current_user/software / VB and VBA Program settings
Et pour remettre à Zéro (dans un module standard)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 Option Explicit Private Sub Workbook_Open() Dim visit 'A partir d'une démo sur <a href="http://ericrenaud.free.fr/" target="_blank">http://ericrenaud.free.fr/</a> ' Lit la valeur dans la base de registre visit = GetSetting(appname:="demo", section:="visiteurs", key:="Nombre") ' Si aucune valeur n'est présente dans la base de registre ... If visit = "" Then 'on affecte la valeur 1 à la variable visit (première visite) visit = 1 Else ' sinon, on incrémente le Nbre de visites visit = visit + 1 End If ' Ecrit la nouvelle valeur visit dans la base de registre SaveSetting appname:="demo", section:="visiteurs", key:="Nombre", setting:=visit ' indique le nombre de visites dans userform With visites .compteur.Caption = visit .Show End With End Sub
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Sub EffaceRegistre() 'auteur:<a href="http://ericrenaud.free.fr/" target="_blank">http://ericrenaud.free.fr/</a> ' Effacement de la clé dans la base de registre On Error Resume Next DeleteSetting "demo" End Sub
Partager