Microsoft 365 Afficher la date de dernière actualisation dans une cellule

sj4555

XLDnaute Junior
Bonjour,

J'ai cette requête (vers une liste SharePoint) qui s'actualise régulièrement :

requete_actua.png


J'aimerais comment il serait possible de récupérer et d'afficher la date de la dernière actualisation dans une cellule du classeur.

Cela permettrait notamment de détecter quand l'actualisation n'a pas eu lieu.

Merci :)
 

sj4555

XLDnaute Junior
Je vais reformuler ma problématique :

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):



Merci d'avance ;)
 
Dernière édition:

AlicePrince

XLDnaute Nouveau
Hello,

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 :
Code:
 Cells(1, 1).Value = Format(Time, "HH:MM")

En espérant que ça soit ce que tu recherches.
 

AlicePrince

XLDnaute Nouveau
Remplace la ligne par :

VB:
Worksheets("Nomdelafeuille").Cells(1, 1).Value = Format(Now, "MM/DD/YYYY HH:MM")
 

sj4555

XLDnaute Junior
Parfait, ça fonctionne presque !

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 ?

presque.png
 

AlicePrince

XLDnaute Nouveau
Tu peux aussi avoir des ### si la cellule n'est pas assez grande pour afficher le résultat.
En tout cas, contente que ça fonctionne pour toi.
 

sj4555

XLDnaute Junior
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 :(
 
Dernière édition:

AlicePrince

XLDnaute Nouveau
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.
 

sj4555

XLDnaute Junior
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.

En faisant quelque recherches : https://docs.microsoft.com/fr-fr/office/vba/api/excel.pivottable.refreshdate

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 ?

Merci.
 

AlicePrince

XLDnaute Nouveau
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".
 

sj4555

XLDnaute Junior
ça ne fonctionne toujours pas, je ne pense pas que le problème vienne de la, j'utilise la feuille dans d'autres macros sans aucun problème.
 

sj4555

XLDnaute Junior
Je n'en ai pas mais je ne suis pas sur de comment exécuter la Sub, 2 possibilités :

- je la met dans la feuille et je lance l'actualisation pour voir si ça marche (il ne se passe rien)
- je la met dans un module et je l'exécute directement (il me propose juste la liste te toutes mes autres macros à exécuter)
 

AlicePrince

XLDnaute Nouveau
Je l'ai déclenché manuellement dans mon test.
Il faudrait effectivement que tu l'associes à un évènement (clic sur un bouton, sauvegarde du fichier, ouverture ou fermeture du fichier...). En tout cas, s'il y a une autre solution, je ne la connais pas.
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas