Bonjour ,

J'ai une base de données (access 2016) sur laquelle je souhaite mettre une clé d'activation.
J'ai déjà un code vba qui permet de bloquer la BD à une heure définie et ça marche bien (j'ai utilisé un compteur d'heure). Pour la clé d'activation j'ai utilisé un code avec (Dlookup combiné avec une requête qui supprime les enregistrements dans les tables) pour l'idée que la même BD soit réactivée à chaque expiration d'heure par une clé sans l'a changer. Mais ce dernier ne marche pas, je souhaite vraiment votre aide pour que ça marche.
Voici le code:
Sous le formulaire Evaluation:
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
Private Sub Form_Load()
If Me!Minutes > 0 Then
MsgBox "Il vous reste " & 135 - Me!Heures & Space(1) & " " & "heures" & _
" " & " d 'utilisation.", vbInformation, "Information"
DoCmd.OpenForm "FormConnexion", acNormal
Else
MsgBox "La période d'utilisation de cette" & _
Chr(13) & "application est de 135 heures.", vbInformation, "Information"
DoCmd.OpenForm "FormConnexion", acNormal
End If
End Sub
 
Private Sub Form_Timer()
Me![Secondes] = Me![Secondes] + 1
Me![Minutes] = Int(Me![Secondes] / 60)
Me![Heures] = Int(Me![Minutes] / 60)
DoCmd.Save acForm, Me.Name
If Me![Heures] >= 135 Then
MsgBox "La période d'utilisation est expirée." & _
Chr(13) & "Veuillez contacter au 0000000 ou <a href="mailto:abc@gmail.com">abc@gmail.com</a>" & _
Chr(13) & "pour une éventuelle mise en marche.", vbCritical, "Information"
DoCmd.Close acForm, Me.Name
DoCmd.Close acForm, "FormConnexion", acNormal
DoCmd.OpenForm "ActivationLicence", acNormal
End If
End Sub
Sur le formulaire ActivationLicence:

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
Dim controlkey As String
 
Private Sub bt_activer_Click()
If IsNull(DLookup("keyactivation", "registre_key", "keyactivation='" & txt_keyactivation & "'")) Then 'Qui verifie si le textbox est vide ou si la clé saisie existe dans la table registre_key
'MsgBox "La clé que vous avez entré(e) n'est pas valide ou a été déjà utilisée. Veuillez entrer une clé valide ou contactez au 0000000 ou <a href="mailto:abc@gmail.com">abc@gmail.com</a>", vbInformation, "Données manquantes"
txt_keyactivation = Clear
txt_keyactivation.SetFocus
Exit Sub
End If
controlkey = DLookup("keyactivation", "registre_key", "keyactivation='" & txt_keyactivation & "'")
If controlkey = " & txt_keyactivation & " Then
CurrentDb.Execute "DELETE * FROM [Evaluation];" 'Qui supprime les enregistrements dans table Evaluation
CurrentDb.Execute "DELETE keyactivation FROM [registre_key] where keyactivation=[" & txt_keyactivation & "];" 'qui supprime la meme clé saisie par user dans la table registre_key 
DoCmd.Close acForm, Me.Name
DoCmd.OpenForm "Evaluation", acNormal 'Qui ouvre ce formulaire pourque le compteur recommence
DoCmd.OpenForm "menuprincipalmokoaccdb", acNormal
Else
MsgBox "La clé que vous avez entré(e) n'est pas valide ou a été déjà utilisée. Veuillez entrer une clé valide ou contactez au 0000000 ou <a href="mailto:abc@gmail.com">abc@gmail.com</a>", vbInformation, "Données manquantes"
txt_keyactivation = Clear
txt_keyactivation.SetFocus
End If
End Sub
J'ai créé deux tables:
-Évaluation(Secondes[numérique], Minutes [numérique], Heures[numérique]).
-Registre_key(keyactivation[Texte cours]) dans laquelle les clés seront insérées manuellement.
Puis j'ai créé deux formulaires :
-Evaluation créé à travers la table Evaluation et affecté comme celui de démarrage.
-ActivationLicence créé avec un textbox nommé txt_keyactivation et un bouton activer.