Erreur d'exécution 438

dcdccdcdc
Bonjour à tous,

J'ai mis du code dans une feuille de mon classeur contenant une requête vers une liste SharePoint s'affichant sous la forme d'un tableau :

requete actua

Pour récupérer la date de dernière actualisation de ce tableau et l'afficher dans une cellule de la feuille j'ai mis ce code dans la feuille en question :

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

Le problème c'est qu'à l'exécution de la macro "test" j'obtient cette erreur :

err438

Si vous avez des pistes je suis preneur,

Bonsoir,

essaie ceci

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

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

Salut H20,

Le code que tu m'as fournit actualise bien la requête mais la date n'est pas écrite dans la cellule,

bonsoir,

précise la feuille sur laquelle se trouve ton range("M1")

Toujours la même chose avec ce code :

Private Sub RecupDateActua(ByVal Target)
    dateString = Format(Target.Refresh, "dd/mm/yyyy hh:mm:ss")
    Sheets("Feuil1").Range("M1") = dateString
End Sub

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

bonjour,

essaie ceci alors (non testé)

Private Sub RecupDateActua(ByVal Target)
     Target.Refresh
    dateString = Format(Target.Value, "dd/mm/yyyy hh:mm:ss")
    Sheets("Feuil1").Range("M1") = dateString
End Sub

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 à "erreur execution 438"