Afficher la date de dernière actualisation dans une cellule
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 :)
Je vais reformuler ma problématique :
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):
Merci d'avance !
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 :
Option Explicit
Private Sub Workbook_Open()
Call InitializeQueries
End Sub
Dans un module standard :
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) :
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
Bonjour,
Peut-être une solution ici en mettant le code sur le module de feuille et en changeant le nom de la feuille dans la macro
Private Sub Worksheet_Change(ByVal Target As Range)
Dim der_ligne As longue
Dim Longueur As Long
der_ligne = Worksheets("Nomdelafeuille").Cells.SpecialCells(xlCellTypeLastCell).Row
For Longueur = 2 To der_ligne
On Error Resume Next
If Not Intersect(Target, Range("B" & Longueur, "J" & Longueur)) Is Nothing Then
If Target.Value <> "" Then Range("A" & Longueur).Value = Format(VBA.Now, "yyyy-MM-dd hh:mm")
End If
Next Longueur
End Sub
Cordialement