Programme VBA à une durée d’expiration

Bon jour le forum,

J’ai un problème si vous pouvez m’aider SLP

J’ai un petit programme (VBA Excel) est je veux un code qu’il peut effacer le programme à prés une durée déterminer

Explication :

Je veux donner à quelqu’un un fichier Excel avec une macro mais à prés 30j les macros de fichier seront disparues !!!

On dit un programme VBA à une durée d’expiration, est ce que c’est possible

Bonjour,

Une piste, il te faut créer un module avec le "Module1" (les autres doivent avoir un nom différent, sinon, adapter) et mettre ces lignes de code dedans :

Sub Noms_Modules()

    Dim ColModule As Object
    Dim Module As Object
    Dim I As Integer

    Set ColModule = ActiveWorkbook.VBProject.VBComponents

    'parcour la collection de modules
    For Each Module In ColModule

        'et évite le module "Module1" où se trouve cette proc
        If Module.Name <> "Module1" Then

            With Module.CodeModule

                For I = 1 To .CountOfLines

                    'supprime toutes les lignes de code
                    .ReplaceLine I, ""

                Next I

            End With

        End If

    Next

    ThisWorkbook.Save

End Sub

Cette proc supprime toutes les lignes de code des modules autres que "Module1". Elle peut être appelée à l'ouverture du classeur si la date d'expiration est arrivée :

Private Sub Workbook_Open()

    'à l'ouverture du classeur, si la date
    'd'expiration est arrivée supprime les lignes de code
    If Date = "07/11/2012" Then Supprimer_Modules

End Sub

Hervé.

Bonjour,

A tester et à adapter

Cdlt

Option Explicit
Dim i As Byte
Private Sub Workbook_Open()
'Protection projet VBA =idrissi528"
'Les macros doivent être activées pour utiliser le classeur
'pour les essais du code désactiver les lignes de code
'---> ActiveWorkbook.Save
'---> ActiveWorkbook.Close

    For i = 2 To Worksheets.Count
     Worksheets(i).Visible = True
     Worksheets("Accueil").Visible = xlVeryHidden
    Next i

    Dim DateDébut As Date
    Dim DateFin As Date

    DateDébut = #11/7/2012#     'format mm/dd/aaaa !!!
    DateFin = DateAdd("d", 30, DateDébut)   'format dd/mm/aaaa
    'MsgBox DateDébut
    'MsgBox DateFin
    MsgBox "Fichier valide jusqu'au " & DateFin & "."
    If Date > DateFin Then
    'MsgBox Date
       MsgBox "Date de validité expirée. Le classeur va se fermer!"
       ActiveWorkbook.Save
       ActiveWorkbook.Close
    Else
        MsgBox "Okay"
        'ton code
        '..............
        '..............
    End If

End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

    Worksheets("Accueil").Visible = True
    For i = 2 To Sheets.Count
        Worksheets(i).Visible = xlVeryHidden
   Next i

End Sub

Rebounjour le forum

MERCI infinitive-ment (Theze & Jean-Eric)

j'ai utiliser le code de Mr Theze mais j'ai un petit problème j'ai l'erreur suivant ("L'accsè par programme au projet Visual Basic n'est pas faible")

j'ai déjà résolu ce problème par cocher la case "accsè approuvé au model d'objet du projet VBA" -au paramètre des macros-

mais le pb que je ne peut pas faire cette action au PC du client !!!

Quelqu'un peut m'aider s'il vous plait ?

Quelqu'un peut m'aider s'il vous plait ?

Bonjour,

j'ai déjà résolu ce problème par cocher la case "accsè approuvé au model d'objet du projet VBA" -au paramètre des macros-

mais le pb que je ne peut pas faire cette action au PC du client !!!

Dans ce cas, il ne reste plus qu'à protéger le projet VB et utiliser soit la proposition de Jean-Eric si c'est pour une date butoir, soit stocker dans la base de registre le nombre de fois où le classeur est ouvert pour limiter un nombre d'utilisation !

Hervé.

Theze a écrit :

Bonjour,

j'ai déjà résolu ce problème par cocher la case "accsè approuvé au model d'objet du projet VBA" -au paramètre des macros-

mais le pb que je ne peut pas faire cette action au PC du client !!!

Dans ce cas, il ne reste plus qu'à protéger le projet VB et utiliser soit la proposition de Jean-Eric si c'est pour une date butoir, soit stocker dans la base de registre le nombre de fois où le classeur est ouvert pour limiter un nombre d'utilisation !

Hervé.

mais lorsque je copie ma feuil excel dans un autre PC il ma donner le même problème ("L'accsè par programme au projet Visual Basic n'est pas faible") !!!!

et j'ai besoin de paramètre l'excel dans l'autre PC

ma question est ce que c'est possible de faire un code qu'il peut changer les paramètre de l'excel tous seul !!!

Bonjour,

C'est l'utilisateur final (ton client) qui doit paramétrer Excel afin qu'il accepte les macros. Et ceci manuellement à travers les options Excel.

Tu dois éventuellement lui fournir les infos. nécessaires pour cela (un tuto. pour les différentes versions 2003, 2007-2010).

Pour revenir sur le sujet principal, soit la suppression des macros après une durée pré-définie, j'avoue être perplexe

Quelque soit la protection, ton client peu scrupuleux, a 30 jours pour la casser. Il y a plein d'outils pour cela

Cdlt.

Oki merci pour ta rép Mr Jean

je vien d'essaier le plus possible pour cripter mon programme

merci pour tous ^^

Rechercher des sujets similaires à "programme vba duree expiration"