IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

Modifier la date système ? [AC-2007]


Sujet :

Access

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 681
    Points : 214
    Points
    214
    Par défaut Modifier la date système ?
    Bonjour,
    Est-il possible en VBA de modifier provisoirement la date système pour tester une application, en lui redonnant à la fin sa valeur normale ?

    Le code provoque l'erreur 70 "Permission refusée".
    Je pense que ce n'est pas possible, car ça risquerait d'entraîner des actions incontrôlables, mais je souhaiterais une confirmation.
    Merci de l'aide.

    J'ai résolu mon problème en travaillent sur les variables jour, mois, année et non directement avec la fonction "Date".
    Amitiés.

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 359
    Points : 23 829
    Points
    23 829
    Par défaut
    Non tu ne peux pas en VBA directement changer la date systeme.

    On peut sans doute le faire en appelant un API de Windows meme si je ne la connais pas.

    A+

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 681
    Points : 214
    Points
    214
    Par défaut
    Merci, tu confirmes ce que je soupçonnais.
    Merci et amitiés
    Résolu

  4. #4
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut Modifier temporairement la date système
    Bonjour,

    et pourtant... http://www.developpez.net/forums/d26...e/#post1673743

    Voici une petite application.

    Dans un module, copiez ce code tel quel :


    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    Option Compare Database
    Option Explicit
     Global tOrigine As Double
     Global tChange As Double
     
    Sub Changer()
      On Error GoTo GestionErreur
      Dim sNewSysDate As String
      Dim Ventil() As String
     
      If tOrigine <> 0 Then Call Restaurer
      sNewSysDate = InputBox("Introduisez la date et heure souhaitées " & vbLf _
                     & "sous la forme : jj/mm/aa hh:mm:ss", , Now)
      Ventil = Split(sNewSysDate, " ")
      If Not IsDate(Ventil(0)) Or Not IsDate(Ventil(1)) Then Call Changer
      tOrigine = Now
      Date = Ventil(0)
      Time = Ventil(1)
      tChange = Now
      Exit Sub
    GestionErreur:
      Select Case Err.Number
        Case 9 'date et/ou heure incorrectes ou Null
          Call Changer
        Case Else
          MsgBox "Erreur dans Changer " & Err.Number & " " & Err.Description & " !"
      End Select
    End Sub
     
    Public Sub Restaurer()
      Dim tDuree As Double
      tDuree = Now - tChange
      Date = CDate(Fix(tOrigine + tDuree))
      Time = CDate(tOrigine + tDuree - Fix(tOrigine + tDuree))
      tOrigine = 0
      tChange = 0
    End Sub
    Pour modifier temporairement la date système, lancez l’instruction :



    Il vient la fenêtre :



    La date et l’heure affichées sont celles actuellement dans votre machine.

    Saisissez date et heure voulues et <ENTER>, si votre syntaxe respecte le format, les date/heure système sont modifiées. Sinon, l’invite se réaffiche et vous devez recommencer la saisie.

    Quand vous souhaitez rétablir les date/heure système originales, lancez la commande



    Explication du code

    L’idée
    - lors de la demande de changement, on mémorise l’instant juste avant le changement (anciennes date/heure), l’instant du changement (nouvelles date/heure) ;
    - lors de la demande de restauration, on calcule le temps qui s’est écoulé depuis le changement, on l’ajoute à la valeur de l’instant avant changement et on rétablit ainsi l’horloge comme si rien ne s’était passé.

    Les instructions
    3 – 4 : on définit deux variables globales (elles seront donc visibles tant que la base sera ouverte)
    tOrigine pour mémoriser l’instant juste avant le changement (anciennes date/heure) ;
    tChange pour mémoriser l’instant juste après le changement (nouvelles date/heure) ;

    N.B. Access stocke la date et l’heure sous la forme d’un nombre décimal.
    La partie entière est le quantième jour depuis le 30/12/1899.
    La partie décimale indique la fraction de ce jour écoulée depuis le matin, 0 heure.

    6-28 : routine Changer()
    9 : la variable Ventil est un tableau qui servira de réceptacle quand nous utiliserons la fonction Split().
    11 : l’utilisateur pourrait lancer la commande Changer à plusieurs reprises dans une même session.
    Le fait que la variable tOrigine ne soit plus à zéro (sa valeur initiale) permet de détecter cette situation.
    Dans ce cas, avant de poursuivre, le programme appelle la routine Restaurer qui rétablira l’heure ancienne actualisée (description plus bas du mécanisme de cette routine).
    12-13 : l’utilisateur est invité à compléter une boîte de dialogue avec la date et l’heure désirées comme nouvelles date/heure système.
    14 : on utilise la fonction Split pour scinder le bloc en ses deux morceaux séparés par le caractère « espace » Ventil(0) contient la date, Ventil(1) contient l’heure.
    15 : on vérifie que ces deux morceaux ont effectivement une structure de type Date et si Non, on appelle la fonction elle-même, ce qui revient à réafficher une nouvelle invite.
    16 : on mémorise l’instant dans tOrigine. À ce stade, Now() est encore exprimé en date/heure « anciennes ».
    17-18 : on ajuste les date/heure système.
    19 : on mémorise l’instant, maintenant exprimé en nouvelles date/heure dans tChange.
    21-27 : si l’utilisateur a introduit une valeur Null dans l’invite, une erreur N° 9 est levée à l’instruction 14



    si cette erreur survient, on appelle la fonction elle-même, ce qui revient à réafficher une nouvelle invite.
    30-37 routine Restaurer()
    32 : on mémorise dans tDuree le temps qui s’est écoulé depuis qu’on a changé les date/heure système.
    33-34 : tOrigine + tDuree correspond donc à la valeur qu’aurait eu Now() si on n’avait pas modifié les date/heure système. On affecte à Date la partie entière de cette somme et à Time la partie décimale.
    Les date/heure anciennes sont à nouveau d’actualité.


    Une BdD avec un exemple se trouve ici : http://claudeleloup.developpez.com/t...ateSysteme.mdb


    Ce programme doit être exécuté en tant qu'administrateur.
    Pour Windows 10, la procédure pour activer le compte "Administrateur caché" est décrite ici http://lecrabeinfo.net/comment-activ...strateur-cache

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Modifier la date système en c#
    Par fally dans le forum C#
    Réponses: 2
    Dernier message: 04/04/2008, 13h47
  2. Réponses: 1
    Dernier message: 15/04/2007, 18h53
  3. Problème avec prog modifiant la date et l'heure système
    Par eldesir dans le forum Assembleur
    Réponses: 1
    Dernier message: 19/01/2007, 20h39
  4. Modifier la date et l'heure système
    Par belocom dans le forum VBScript
    Réponses: 6
    Dernier message: 17/01/2007, 16h19
  5. Modifier la date système du PC à partir d'Access
    Par Stéph utilisateur d'acces dans le forum Access
    Réponses: 3
    Dernier message: 06/12/2006, 08h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo