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):
Voici un petit code qui te permet de récupérer la date et l'heure au moment de la sauvegarde de ton fichier :
(En supposant que tu veuilles l'info en cellule A1)
VB:
Public Function date_save()
Cells(1, 1).Value = Format(Now, "MM/DD/YYYY HH:MM")
End Function
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Call date_save
End Sub
Si tu veux vraiment que l'heure sans la date, tu peux changer la ligne par :
La date s'affiche correctement dans la barre de formule mais par contre j'ai le droit à une série de # dans la cellule, problème de format d'affichage je suppose ?
Ah... non en fait c'est pas ce que je voulais ça m'affiche pas la bonne date là ça m'affiche 16h44 alors que la dernière actualisation à eu lieu à 16h41
En fait ta fonction récupère la date de sauvegarde du classeur mais ce qui m'intéresse c'est la date quand les données de la source sont mis à jour dans la requête
Ah mince, j'avais mal lu ta demande.
Ce que je peux te proposer, c'est d'afficher dans ton fichier classeur la date + heure de sauvegarde de ton fichier source (je pars du principe que si le fichier est actualisé, c'est qu'il est sauvegardé)
Le code est sensiblement le même, par contre, tu vas le mettre dans ton fichier source et non dans le classeur.
VB:
Public Function date_save()
Workbooks("Nomdufichier").Worksheets("Feuil2").Cells(1, 1).Value = Format(Now, "MM/DD/YYYY HH:MM")
End Function
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Call date_save
End Sub
le "Nomdufichier" dans Workbooks est le nom de ton classeur.
A toi de modifier le nom et éventuellement le chemin vers le fichier si ce dernier est dans un sous-dossier.
En fait, ce que je veux c'est juste récupérer la date d'actualisation des données du TCD, celle-ci n'influe pas sur la sauvegarde du classeur, la requête peut très bien s'actualiser sans que le fichier se sauvegarde.
Je suis arrivé à ce code que j'ai placé dans la feuille où je veux afficher la date :
VB:
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
"Rondes__2" est le nom du TCD . M1 est la cellule dans laquelle je veux copier la date.
Malheureusement ce code ne fonctionne pas, pourrais-tu m'éclairer sur ce qui manque ou ce que j'aurais mal fait ?
1er conseil que je peux te donner quand tu nommes qqch c'est de ne pas mettre d'espace ou d'accents.
Je renommerais ta plage de données en "donnees_brutes"
Essaye ce code :
VB:
Private Sub RecupDateActua(ByVal Target As PivotTable)
Set pvtTable = Worksheets("donnees_brutes").Range("Rondes__2").PivotTable
dateString = Format(pvtTable.RefreshDate, "dd/mm/yyyy hh:mm:ss")
Cells(1, 13).Value = dateString
End Sub
Je t'ai modifié le format pour que tu puisses récupérer l'heure d'actualisation en plus de la date, il me semble que tu voulais aussi cette info. Sinon, il te suffit d'enlever le "hh:mm:ss".