Microsoft 365 Date de dernière actualisation d'une source de données

sj4555

XLDnaute Junior
Bonjour,

J'ai sur mon classeur une requête vers une liste SharePoint qui que je peux choisir d'actualiser en cliquant sur Actualiser tout :
actualiser tout.png

Et qui s'actualiser également à chaque ouverture de fichier et toutes les 15 minutes :
actua param.png

Voici le code que j'ai réalisé en m'inspirant de ce que j'ai vu sur internet mais sans réellement comprendre puisque celui-ci ne fonctionne pas :
VB:
Private Sub RecupDateActua(ByVal Target As PivotTable)
 
    Dim dateString As String
    Set pvtTable = ActiveSheet.PivotTables("Rondes__2")
    dateString = Format(pvtTable.RefreshDate, "dd/mm/yyyy hh:mm:ss")
    Range("M1") = dateString
 
End Sub

J'ai mis ce code dans Feuille ou se situe ma requête.

Il ne se passe pourtant rien à chaque nouvelle actualisation alors que la date devrait s'écrire dans la cellule M1 de cette même feuille.

Merci pour votre aide.
 

Lolote83

XLDnaute Barbatruc
Bonjour,
Juste en passant car je ne sais pas forcément résoudre ton problème, mais dans ta copie d'écran2, il est indiqué Nom de la requete : Rondes (2) et dans le code que tu fournis, il est indiqué PivotTables("Rondes__2")
Cordialement
Lolote83
 

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
 

Statistiques des forums

Discussions
312 202
Messages
2 086 180
Membres
103 152
dernier inscrit
Karibu