Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Afficher la date de dernière actualisation dans une cellule

sj4555

XLDnaute Junior
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
 

sj4555

XLDnaute Junior
Je n'en ai pas mais je ne suis pas sur de comment exécuter la Sub, 2 possibilités :

- je la met dans la feuille et je lance l'actualisation pour voir si ça marche (il ne se passe rien)
- je la met dans un module et je l'exécute directement (il me propose juste la liste te toutes mes autres macros à exécuter)
 

AlicePrince

XLDnaute Nouveau
Je l'ai déclenché manuellement dans mon test.
Il faudrait effectivement que tu l'associes à un évènement (clic sur un bouton, sauvegarde du fichier, ouverture ou fermeture du fichier...). En tout cas, s'il y a une autre solution, je ne la connais pas.
 

sj4555

XLDnaute Junior
En fait l'erreur vient de moi ce n'est pas un TCD mais tableau simple (généré par la requête avec Power Query), comment modifier le code que tu m'as fournit pour que ça fonctionne avec un tableau simple ?

Merci pour ton aide.
 

sj4555

XLDnaute Junior
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)

Merci à Jean-Eric, réponse sur le topic : https://forum.excel-pratique.com/excel/formule-actualisation-tableau-simple-146567

Dans ThisWorkbook :

VB:
Option Explicit

Private Sub Workbook_Open()
    Call InitializeQueries
End Sub

Dans un module standard :

VB:
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) :

VB:
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
 

Discussions similaires

Réponses
8
Affichages
239
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…