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

  1. #1
    Rédacteur/Modérateur

    Tutoriel - Mettre en place un gestionnaire de rafraîchissement automatique des tables
    Bonjour,

    Un nouveau tutoriel vous est proposé.

    Ce document a pour but de vous montrer comment d'un seul coup d'oeil, les données de vos tables sont actualisées automatiquement selon une temporisation prédéfinie. Cet article est plutôt destiné aux développeurs qui souhaitent contrôler en phase de recette utilisateur notamment, la mise à jour de tables de façon automatique tout en exécutant certaines procédures au pas à pas.

    Utilisez ce fil pour y laisser vos commentaires...

    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2013 et 2016 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  2. #2
    Rédacteur/Modérateur

    Superbement efficace !
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  3. #3
    Futur Membre du Club
    p_strFormCaption
    on trouve p_strFormCaption dans la classe clsAutoRefresh

    et dans le code du formulaire cela s'appel p_strTitleCaption .

    pour info

    on ne peut plus utiliser kernel32 pour le sleep sous seven (64bits).

    j'ai ajouter un fonction pause (que j'ai trouvé sur un forum)

    dans la classe clsAutoRefresh.

    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
    Public Function Pause(NumberOfSeconds As Variant)
     
     
        Dim PauseTime As Variant, start As Variant
     
        PauseTime = NumberOfSeconds
        start = Timer
        Do While Timer < start + PauseTime
        DoEvents
        Loop
     
    Exit_Pause:
        Exit Function
     
     
    End Function


    Et remplacer sleep par pause dans le code du formulaire

    pour le reste cela fonctionne très bien
    Merci

  4. #4
    Rédacteur/Modérateur

    Merci pour cette précision.
    Je tâcherais de mettre à jour le Tuto avec cette judicieuse remarque.

    P.S. Evitez le Variant pour une telle fonction. On parle de millisecondes.

    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2013 et 2016 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  5. #5
    Membre averti
    Bonjour membres du forum,
    bonjour argyronet,

    Je suis un passionné de la programmation qui apprends progressivement.

    D'où votre "Tutoriel - Mettre en place un gestionnaire de rafraîchissement automatique des tables" est un cours que j'aimerais apprendre et pouvoir appliquer le contenu.

    Sauf votre respect, pourriez vous m'indiquer où télécharger la table "ExcelFileData" afin de me faciliter à mieux m'exercer.

    Cordialement.
    Le savoir est la lumière de l'esprit
    Le chemin de la réussite

    Les savants sont les héritiers de la science
    Qui cherche positivement trouve
    Tout ce qui brille n'est pas l'or ou diamant
    Mais l'or et le diamant se trouvent avec sagesse, intelligence et effort

  6. #6
    Rédacteur/Modérateur

    Bonjour,

    Citation Envoyé par morobaboumar Voir le message
    pourriez vous m'indiquer où télécharger la table "ExcelFileData" afin de me faciliter à mieux m'exercer.
    Vous n'avez pas besoin de cette table. C'est une table de données quelconque.
    Ce tuto s'applique à n'importe quelle(s) table(s) de votre application.

    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2013 et 2016 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  7. #7
    Membre averti
    Citation Envoyé par argyronet Voir le message
    Bonjour,
    Vous n'avez pas besoin de cette table. C'est une table de données quelconque.
    Ce tuto s'applique à n'importe quelle(s) table(s) de votre application.
    Argy
    Bonsoir argyronet,
    Message compris. Je me mets à la tache.
    Cordialement.
    Le savoir est la lumière de l'esprit
    Le chemin de la réussite

    Les savants sont les héritiers de la science
    Qui cherche positivement trouve
    Tout ce qui brille n'est pas l'or ou diamant
    Mais l'or et le diamant se trouvent avec sagesse, intelligence et effort

  8. #8
    Membre averti
    Citation Envoyé par morobaboumar Voir le message
    Bonsoir argyronet,
    Message compris. Je me mets à la tache.
    Cordialement.
    Bonsoir argyronet ,

    Voila j'ai essayé d'appliquer vos modules à la table "Tbl_EVALUATION_NIVEAU_SCOLAIRE_RaffraiAuto" dont le formulaire est "Tbl_EVALUATION_NIVEAU_SCOLAIRE_RaffraiAuto".




    Voici le message d'erreur qui en résulte;





    Corgialement.
    Le savoir est la lumière de l'esprit
    Le chemin de la réussite

    Les savants sont les héritiers de la science
    Qui cherche positivement trouve
    Tout ce qui brille n'est pas l'or ou diamant
    Mais l'or et le diamant se trouvent avec sagesse, intelligence et effort

  9. #9
    Rédacteur/Modérateur

    Le nom du formulaire n'a aucune importance ici.

    Je pense que vous n'avez pas ajouté le module de classe comme spécifié dans le tuto...

    /!\ Avant d’exécuter du code,il faut compiler afin de voir s'il n'y a pas d'erreur.

    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2013 et 2016 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  10. #10
    Membre averti
    Citation Envoyé par argyronet Voir le message
    Le nom du formulaire n'a aucune importance ici.
    Je pense que vous n'avez pas ajouté le module de classe comme spécifié dans le tuto...
    /!\ Avant d’exécuter du code,il faut compiler afin de voir s'il n'y a pas d'erreur.
    Argy
    Bien sure j'ai ajouté "clsAutoRefresh":
    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    Option Compare Database
    Option Explicit
     
    '**********************************************************************
    ' Module            : clsAutoRefresh
    ' Type              : Module de classe
    ' DateTime          : 10/10/2009
    ' Author            : Jean-Philippe AMBROSINO
    ' Purpose           : Classe dédiée au rafraîchissement automatique des données
    '**********************************************************************
     
    Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
     
    Private m_intTimerInterval                             As Integer
    Private m_strFormCaption                              As String
     
    ' Propriété de valeur du Timer
    Public Property Get p_intTimerInterval() As Integer
        p_intTimerInterval = m_intTimerInterval
    End Property
     
    Public Property Let p_intTimerInterval(ByVal ip_intTimerInterval As Integer)
        m_intTimerInterval = ip_intTimerInterval
    End Property
     
    ' Propriété de la légende du formulaire
    Public Property Get p_strFormCaption() As String
        p_strFormCaption = m_strFormCaption
    End Property
     
    Public Property Let p_strFormCaption(ByVal sp_strFormCaption As String)
        m_strFormCaption = sp_strFormCaption
    End Property
     
    ' Événement DoubleClick du formulaire (Zone grisée)
    Public Sub FormDblClick(ByRef TargetForm As Form, Cancel As Integer)
        If p_intTimerInterval Then
            p_intTimerInterval = 0
            TargetForm.Caption = p_strFormCaption & " (Rafraîchissement stoppé : Pressez un double-clic pour le relancer...)"
        Else
            p_intTimerInterval = 1000
        End If
        TargetForm.TimerInterval = p_intTimerInterval
    End Sub
     
    ' Événement Load du formulaire
    Public Sub FormOnLoad(ByRef TargetForm As Form)
        p_strFormCaption = TargetForm.Caption
        TargetForm.TimerInterval = 1000
    End Sub
     
    ' Événement Timer du formulaire
    Public Sub FormOnTimer(ByRef TargetForm As Form, Optional ByVal ResetTime As Integer = 16)
    Dim D                                                  As Integer
    Static S                                               As Integer
     
        If S = ResetTime Then
            S = 0: D = 0
            TargetForm.Caption = "Rafraîchissement imminent...."
            Sleep 1000
            DoEvents
            TargetForm.Requery
        End If
     
        S = S + 1
        D = ResetTime - S
        DoEvents
        TargetForm.Caption = p_strFormCaption & " : Rafraîchissement des données dans " & D & " seconde" & IIf(D <= 1, "", "s")
    End Sub


    Ensuite le module du formulaire
    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
    Option Compare Database
    Option Explicit
     
    '**********************************************************************
    ' Module            : TBL_ExcelFileData (DataSheetForm)
    ' Type              : Document VBA
    ' DateTime          : 09/10/2009
    ' Author            : Jean-Philippe AMBROSINO
    ' Purpose           : Formulaire contenant les importations temporaires Excel
    '**********************************************************************
    Private mc_AutoRefresh As clsAutoRefresh
     
    Private Sub Form_Close()
        Set mc_AutoRefresh = Nothing
    End Sub
     
    Private Sub Form_DblClick(Cancel As Integer)
        mc_AutoRefresh.FormDblClick Me, Cancel
    End Sub
     
    Private Sub Form_Load()
        Set mc_AutoRefresh = New clsAutoRefresh
        With mc_AutoRefresh
            .p_strTitleCaption = Me.Caption
            .p_intTimerInterval = 1000
            Me.TimerInterval = .p_intTimerInterval
        End With
    End Sub
     
    Private Sub Form_Timer()
        mc_AutoRefresh.FormOnTimer Me
    End Sub


    Puis compilé:

    Le message d'erreur survient à partir de cette ligne de code
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    .p_strTitleCaption = Me.Caption


    Cordialement.
    Le savoir est la lumière de l'esprit
    Le chemin de la réussite

    Les savants sont les héritiers de la science
    Qui cherche positivement trouve
    Tout ce qui brille n'est pas l'or ou diamant
    Mais l'or et le diamant se trouvent avec sagesse, intelligence et effort

  11. #11
    Rédacteur/Modérateur

    Humm... C'est dans un module de classe qu'il faut l'insérer.
    Si vous l'avez mis dans un module, "classique", ça ne peut pas marcher.

    Et si vous compilez et qu'il y a une erreur de compilation, c'est que celle que vous soulevez vient de là.

    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2013 et 2016 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  12. #12
    Membre averti
    Bonjour argyronet,
    Je vous envoie une copie de mon application pour constat.
    Je vous rappel que j'utilise Access 2013.



    Cordialement.
    Le savoir est la lumière de l'esprit
    Le chemin de la réussite

    Les savants sont les héritiers de la science
    Qui cherche positivement trouve
    Tout ce qui brille n'est pas l'or ou diamant
    Mais l'or et le diamant se trouvent avec sagesse, intelligence et effort

  13. #13
    Membre expert
    Avec un peu de lecture on pouvait trouver dans le message #2 de Micki dans ce fil :
    on trouve p_strFormCaption dans la classe clsAutoRefresh

    et dans le code du formulaire cela s'appelle p_strTitleCaption .
    donc rectifier :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Private Sub Form_Load()
        Set mc_AutoRefresh = New clsAutoRefresh
        With mc_AutoRefresh
            '.p_strTitleCaption = Me.Caption  ' boulette
            .p_strFormCaption = Me.Caption  ' OK
            .p_intTimerInterval = 1000
            Me.TimerInterval = .p_intTimerInterval
        End With
    End Sub


    cordialement
    "Always look at the bright side of life." Monty Python.

  14. #14
    Membre averti
    Ligne de code parfait
    Bonsoir micniv,
    Le code corrigé est parfait. Ça marche.

    NB; il faudrait rappeler à argyronet de songer à rectifier cette erreur de frappe
    on trouve p_strFormCaption dans la classe clsAutoRefresh
    et dans le code du formulaire cela s'appel p_strTitleCaption .
    dans son tutoriel.

    infiniment.
    Cordialement.
    Le savoir est la lumière de l'esprit
    Le chemin de la réussite

    Les savants sont les héritiers de la science
    Qui cherche positivement trouve
    Tout ce qui brille n'est pas l'or ou diamant
    Mais l'or et le diamant se trouvent avec sagesse, intelligence et effort

  15. #15
    Rédacteur/Modérateur

    Bonjour,

    Bien vu.
    Merci...
    J'ai modifié dans le tuto.

    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2013 et 2016 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

###raw>template_hook.ano_emploi###