Macro écrire date dans cellule

Bonjour,

J'ai un tableau croisé dynamique issu d'une requête vers une source de données externe, j'aimerais récupérer la date de dernière actualisation de cette requête dans une cellule.

A l'aide de cette doc : [url]https://docs.microsoft.com/fr-fr/office/vba/api/excel.pivottable.refreshdate[/url] j'ai créé cette Sub dans la feuille ou se situe le TCD :

Private Sub RecupDateActua(ByVal Target As PivotTable)

Set pvtTable = Worksheets("Données Brutes").PivotTable("Rondes__2")

dateString = Format(pvtTable.RefreshDate, "Long Date")

Range("M1") = dateString

End Sub

Il ne se passe pourtant rien alors que la date devrait se copier dans la cellule M1 de cette même feuille, alors ma question est que manque-t-il à mon code ? Que dois-je corriger ?

Merci pour votre aide.

Bonjour,

Essaie ainsi :

Private Sub RecupDateActua()
Dim pvt As PivotTable
    Set pvtTable = Worksheets("Données Brutes").PivotTable("Rondes__2")
    dateString = Format(pvtTable.RefreshDate, "Long Date")
    Range("M1") = dateString
End Sub

Bonjour Jean-Eric,

à l'exécution elle me renvoie cette erreur :

err438

Bonjour,

Dans le lien exemple microsoft ils font un "Range("A3") j'imagine sur la premiere cellule du tcd ?

je ne vois pas de range dans votre ligne :

Set pvtTable = Worksheets("Sheet1").Range("A3").PivotTable 
Set pvtTable = Worksheets("Données Brutes").PivotTable("Rondes__2")

Re,

PivotTables et non PivotTable !

Private Sub RecupDateActua()
Dim pvt As PivotTable
    Set pvtTable = Worksheets("Données Brutes").PivotTables("Rondes__2")
    dateString = Format(pvtTable.RefreshDate, "Long Date")
    Range("M1") = dateString
End Sub

Re,

PivotTables et non PivotTable !

Je l'avais même pas vu celle là

Re,

C'est corrigé, une nouvelle erreur cette fois :

err1004

J'ai mis le code ici :

code

Quand je le met dans un module on me renvoie :

1004module

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
Rechercher des sujets similaires à "macro ecrire date"