Extraire l'heure d'ouverture/de fermeture d'un fichier Excel

Bonjour à tous,

Je m'appelle Aubin et je voudrait faire en sorte que lorsque-l 'on ouvre un fichier Excel, l'heure à laquelle il c'est ouvert soit écrite sur une feuille Excel

et de même lorsqu'il se ferme et cela plusieurs fois dans une journée afin de regarder quand l'utilisateur travail

Merci pour vos réponses

Bonne journée

Aubin

Bonjour

je voudrait faire en sorte que lorsque-l 'on ouvre un fichier Excel, l'heure à laquelle il c'est ouvert soit écrite sur une feuille Excel

- mettez ce code dans THISWORKBOOK dans l'éditeur VBA
- enregistrez votre fichier au format XLSM puis fermer le

Private Sub Workbook_Open()
With Sheets(1)
    .Range("A" & Range("A" & Rows.Count).End(xlUp).Row + 1) = Format(Now, "hh:mm:ss")
End With
End Sub

cela va enregistrer l'heure à chaque ouverture du classeur

Ce serait bien de préciser sur quel onglet et dans quelle colonne. Ici tout se fait sur la feuille 1 colonne A

Crdlt

Bonjour Dan,

Votre code marche parfaitement lors de l'ouverture du fichier mais je voudrait également que l'heure s'affiche lors de la fermeture du fichier

Merci encore

Aubin

Dans la même colonne ou ailleurs ?

Dans la ligne du dessous de préférence

Exemple :

heure d'ouverture

heure de fermeture

Essayez ceci

Private Sub Workbook_BeforeClose(Cancel As Boolean)
With Sheets(1)
    .Range("A" & Range("A" & Rows.Count).End(xlUp).Row + 1) = Format(Now, "hh:mm:ss")
End With
With ThisWorkbook
    .DisplayAlerts = False
    .Save
End With
End Sub

Vu que l'opération va s'effectuer à la fermeture et que le fichier va demander si on veut sauver, je vous ai ajouté les 4 dernières lignes, afin que le fichier soit enregistré sans afficher de message. Le cas échéant, l'utilisateur peut fermer le fichier sans enregistrer. Du coup vous n'auriez pas l'info de fermeture

Crdlt

Lorsque je ferme le fichier, il y a ce message :

"membre de méthode ou de données introuvable"

Mais que je fait OK et que je Debug il me demande d'enregistrer ? donc je sais pas si ca marche

Vous avez bien mis le code before_close au même endroit que la macro Open ?

les deux codes doivent être dans Thisworkbook

Oui, j'ai mis tous le codes que vous m'avez envoyé dans ThisWorkbook et ça ne marche toujours pas

essayez ceci

53classeur1.xlsm (14.45 Ko)

Bonjour Dan,

Merci pour votre fichier mais comment faire pour commencer mes heures à la ligne 5 par exemple et après les incrémenter de 1 en 1 comme votre fichier

Merci pour votre retour

Cordialement

Aubin

Bonjour

Remplacez les deux codes par ceux-ci

1. Ouverture

Private Sub Workbook_Open()
Dim lig As Integer, dlg As Integer
With Sheets(1)
    lig = 5
    dlg = Range("A" & Rows.Count).End(xlUp).Row
    If dlg < 5 Then lig = 5 Else: lig = dlg + 1
    .Range("A" & lig) = Format(Now, "hh:mm:ss")
End With
End Sub

2. Fermeture

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim lig As Integer, dlg As Integer
With Sheets(1)
    lig = 5
    dlg = Range("A" & Rows.Count).End(xlUp).Row
    If dlg < 5 Then lig = 5 Else: lig = dlg + 1
    .Range("A" & lig) = Format(Now, "hh:mm:ss")
End With
With ThisWorkbook
    Application.DisplayAlerts = False
    .Save
End With
End Sub

Cordialement

Bonjour,

Merci pour ta réponse rapide

J'ai un autre problème, je voudrait que chaque jour (à minuit) les heures d'ouvertures et de fermetures se décale de 3 colonnes dans Excel afin de répertorier les heures de chaque jour.

Merci

Aubin

Hum... il aurait mieux valu le savoir avant cela...

Là c'est un peu tout refaire.

Le mieux serait d'avoir un fichier exemple représentant ce que vous avez et contenu le ou les résultats attendu

sans données confidentielles.

Je vous envoie un fichier,

je voudrait qu'à minuit les heures d'ouvertures et de fermetures ce décalent à la date souhaitée (de 3 colonnes)

Merci

10classeur1.xlsm (17.05 Ko)

Un commentaire au vu du fichier : avec VBA évitez les cellules fusionnées quand vous pouvez. C'est toujours source d'erreur
- La date n'a pas besoin de deux lignes. Elle peut se mettre en ligne 1
- défusionnez aussi chaque date

Exemple :
-- enlevez la fusion B1:D1 de la première date. du coup la date se retrouve en B1
-- Sélectionnez ensuite B1 à D1
-- dans le menu Accueil, allez dans Format --> Format de cellule
-- cliquez sur l'onglet Alignement et dans la rubrique "Horizontal", choisissez "centré sur plusieurs colonnes"

faites cela sur chaque cellule contenant une date en ligne 1

Je modifie votre fichier dans ce sens

OK, d'accord je vais commencer par faire ceci

Merci

Dans votre fichier vous supposez que vous ne l'ouvrez qu'une seul fois et fermez qu'une seul fois par jour ?

Non,

justement le but c'est qu'à chaque fois que je ferme le dossier, les heures s'affiche comme dans le fichier que je vous ai joint avec MATIN, PAUSE 1, PAUSE 2 et SOIR

justement le but c'est qu'à chaque fois que je ferme le dossier, les heures s'affiche comme dans le fichier que je vous ai joint avec MATIN, PAUSE 1, PAUSE 2 et SOIR

Ok mais là dans votre fichier vous n'avez que 4 lignes
Si maintenant je ferme et ouvre 5 fois le même jour, l'heure ira jusque la ligne 10
De plus si la fermeture du fichier se fait le même jour, le calcul temps de pose sera incorrect puisque la colonne D fait la différence entre C - B

Rechercher des sujets similaires à "extraire heure ouverture fermeture fichier"