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

Macros et VBA Excel Discussion :

Afficher la date de dernière actualisation dans une cellule


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Afficher la date de dernière actualisation dans une cellule
    Bonjour,

    J'ai cette requête (vers une liste SharePoint) qui s'actualise régulièrement :



    J'aimerais comment il serait possible de récupérer et d'afficher la date de la dernière actualisation dans une cellule du classeur.

    Cela permettrait notamment de détecter quand l'actualisation n'a pas eu lieu.

    Merci

  2. #2
    Rédacteur/Modérateur

    Salut,

    tu veux un historique des rafraichissement ou bien uniquement l'horodatage du dernier rafraichissement ?

    En te connectant une nouvelle fois sur la meme source, et en passant par une requete SQL du style
    Code SQL :Sélectionner tout -Visualiser dans une fenêtre à part
    SELECT Now()
    , tu auras l'information il me semble
    Cycle de vie d'un bon programme :
    1/ ca fonctionne 2/ ca s'optimise 3/ ca se refactorise

    Pas de question technique par MP, je ne réponds pas

    Apprendre à programmer avec Access 2016 et Access 2019

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre du Club
    Bonjour Jean-Philippe,

    Non, je veux juste pouvoir afficher l'heure de dernière actualisation de la source données dans une cellule du classeur,

    Je parle de cette date (qui se met à jour à chaque fois qu'on clique sur "Actualiser tout", et dans mon cas car j'ai sélectionné les options aussi toutes les 15 minutes et à chaque ouverture de fichier):


  4. #4
    Rédacteur/Modérateur

    Salut,

    j'ai bien compris ton point.

    Comme je n'ai pas la réponse exacte via VBA, il s'agissait d'un moyen détourné pour arriver au meme résultat il me semble.

    As-tu essayé ?
    Cycle de vie d'un bon programme :
    1/ ca fonctionne 2/ ca s'optimise 3/ ca se refactorise

    Pas de question technique par MP, je ne réponds pas

    Apprendre à programmer avec Access 2016 et Access 2019

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  5. #5
    Membre du Club
    En réalité je n'ai pas bien compris, où dois-je placer la requête SQL ? et comment la lier à une cellule en particulier pour l'affichage ?

  6. #6
    Membre du Club
    Update,

    Voici la façon de faire que j'ai décidé d'adopter et qui me permet de récupérer la date à chaque actualisation des données de la source,

    (Le code ci-dessous permet dans mon cas d'écrire la date de dernière actualisation dans la cellule R4 de la feuille Suivi journalier air&#65279

    Merci à Jean-Eric

    Dans ThisWorkbook :

    Option Explicit

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_Open()
        Call InitializeQueries
    End Sub


    Dans un module standard :

    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
    Option Explicit
     
    Dim colQueries As New Collection
     
    Sub InitializeQueries()
    Dim clsQ As clsQuery
    Dim WS As Worksheet
    Dim QT As QueryTable
    Dim lo As ListObject
        For Each WS In ThisWorkbook.Worksheets
            For Each QT In WS.QueryTables
                Set clsQ = New clsQuery
                Set clsQ.MyQuery = QT
                colQueries.Add clsQ
            Next QT
            On Error Resume Next
            For Each lo In WS.ListObjects
                Set QT = lo.QueryTable
                Set clsQ = New clsQuery
                Set clsQ.MyQuery = QT
                colQueries.Add clsQ
            Next lo
        Next WS
    End Sub


    Dans un module de classe (clsQuery) :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Option Explicit
     
    Public WithEvents MyQuery As QueryTable
     
    Private Sub MyQuery_AfterRefresh(ByVal Success As Boolean)
        If Success Then Sheets("Suivi journalier air").Range("R4").Value = Format(VBA.Now, "yyyy-MM-dd hh:mm")
    End Sub

    

    

###raw>template_hook.ano_emploi###