Microsoft 365 Formule actualisation tableau simple

sj4555

XLDnaute Junior
Bonjour à tous,

Je fais face à une problématique depuis une semaine, j'ai une requête vers une liste SharePoint, que j'affiche sous forme d'un tableau sur une feuille de calcul avec Power Query.

J'aimerais pouvoir récupérer la date d'actualisation de celui-ci et l'afficher dans une cellule de la feuille.



J'ai mis en place une actualisation automatique à l'aide des paramètre d'excel (en arrière-plan, toutes les 15 minutes, et à l'ouverture du fichier), je peux actualiser manuellement ici :

actualiser tout.png


Pour récupérer la date de dernière actualisation je suis d'abord parti du principe que le tableau généré par la requête...
requete_actua.png


... était un TCD.

Pour cela j'ai écrit ces fonctions sur la feuille où se situe la requête :

1
2
3
4
5
6
7
8
Private Sub RecupDateActua(ByVal Target As PivotTable)
dateString = Format(Target.RefreshDate, "dd/mm/yyyy hh:mm:ss")
Range("M1") = dateString
End Sub

Public Sub test()
Call RecupDateActua(Sheets("Feuil2").PivotTables("Rondes"))
End Sub
Le problème c'est que j'ai une erreur à l'exécution de la Macro :

err1004.png


Cela est sûrement du au fait que cette fonction concerne uniquement les TCD(PivotTable) et que mon tableau n'en est pas un.

J'ai donc essayé de reproduire ce tableau en créant un TCD, sans succès puisque ce n'est pas la fonction première du TCD,


Donc 2 questions :

- Comment adapter la macro pour qu'elle s'applique à un tableau simple ou "range" de données ?

ou alors

- Comment créer un TCD qui s'affiche de la même manière qu'un tableau simple ?

Merci.
 
Dernière édition:

sj4555

XLDnaute Junior
Salut Chris, merci pour ta réponse,

J'ai modifié mon code avec List Object :

VB:
Private Sub RecupDateActua(ByVal Target As ListObject)
dateString = Format(Target.RefreshDate, "dd/mm/yyyy hh:mm:ss")
Range("M1") = dateString
End Sub

Public Sub test()
Call RecupDateActua(Sheets("Feuil1").ListObjects("Rondes__2"))
End Sub

J'obtient cette erreur à l'exécution de la macro test :

err438.png


Pourrais-tu m'éclairer ?
 

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

Statistiques des forums

Discussions
311 711
Messages
2 081 786
Membres
101 817
dernier inscrit
carvajal