Limiter le nombre d'utilisations d'une macro

Bonjour à tous,

Après pas mal de recherches, j'avoue ne pas avoir vraiment trouvé de réponses quant à la façon de limiter le nombre d’exécutions d'une macro.

Il y a moyen de la rendre inopérante via une date prédéfinie mais j'aurais préféré un compteur d'utilisations.

J'aimerais bien que ma macro ne soit pas exécutable plus de 15 fois, par exemple.

Il y bien des macros qui sont en shareware qui font ça.

Mais les posts relatifs à ce sujet sont plutôt maigres.

J'ai pensé créér une clef dans le registre qui compterait le nombre d'utilisations de la macro, mais la clef créée se trouve invariablement dans "HKEY_CURRENT_USER\Software\VB and VBA Program Settings\Excel\Module_de_Code".

Je ne peux donc pas "noyer" ma clef à un endroit du registre qui éviterait de tomber trop facilement sur celle-ci afin de réinitialiser le compteur à 0.

De même, j'ai pensé à un cryptage du nombre d'utilisations, mais ça complique un peu les choses.

Je ne cherche pas à vendre quoi que ce soit, mais j'ai besoin de cette fonctionnalité pour mon boulot.

Je me suis penché sur la possibilité de créer une clef à l'endroit (où je veux) dans le registre, mais il faut envisager de se plonger dans le VBScript que je ne connais pas et qui ne changerait rien au problème puisqu'il faudra livrer le script et qu'il est facilement lisible.

Je précise que je ne souhaite pas intervenir moi-même sur le poste de l'utilisateur pour lancer un script ou autre.

J'aimerais que tout se fasse à partir de la macro.

Quant à l'idée de verrouiller une cellule qui contiendrait le nombre caché d’exécutions, ce n'est pas possible car la macro s’exécute dans un fichier qui ne doit pas être verrouillé.

Si vous avez des idées...

Merci d'avance pour vos contributions.

Bonjour Pipout, bonjour le forum,

Une bidouille...

Chaque fois que tu lances la macro tu incrémentes une cellule d'un onglet. La dernière cellule du dernier onglet par exemple avec :

Sheets(Sheets.Count).Cells(Application.Rows.Count, Application.Columns.Count) = Sheets(Sheets.Count).Cells(Application.Rows.Count, Application.Columns.Count) + 1

En début de ta macro tu mets une conditionnelle du type :

If Sheets(Sheets.Count).Cells(Application.Rows.Count, Application.Columns.Count).Value > 15 Then Exit sub

À l'ouverture du fichier tu remet à zéro avec :

Private Sub Workbook_Open()
Sheets(Sheets.Count).Cells(Application.Rows.Count, Application.Columns.Count).Value = 0
End Sub
Rechercher des sujets similaires à "limiter nombre utilisations macro"