begin process at 2012 02 12 05:22:58
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

VBA

 > L'HEURE EN TEMPS RÉEL DANS UNE FEUILLE EXCEL

L'HEURE EN TEMPS RÉEL DANS UNE FEUILLE EXCEL


 Information sur la source

Note :
7 / 10 - par 1 personne
7,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :VBA Classé sous :excel, heure, temps, réel, apis Niveau :Initié Date de création :14/11/2006 Date de mise à jour :17/11/2006 12:37:04 Vu / téléchargé :27 075 / 1 337

Auteur : dthuler

Ecrire un message privé
Commentaire sur cette source (20)
Ajouter un commentaire et/ou une note

 Description

Petit bout de code expliquant comment utiliser une API en VBA pour afficher seconde après seconde l'heure en temps réel dans une cellule d'une feuille Excel...

Source

  • 'Dans la partie workbook du classeur, insérer le code suivant
  • '============================================================
  • 'On initialise le timer système dès l'ouverture du classeur
  • Private Sub Workbook_Open()
  • 'Utilisation de l'API SetTimer toutes les secondes (1000 millisecondes) pour appeler la procédure UpDateTime
  • SetTimer Application.hWnd, 0, 1000, AddressOf UpDateTime
  • End Sub
  • 'A la fermeture du classeur, on nettoie la place en supprimant l'appel au timer système
  • Private Sub Workbook_BeforeClose(Cancel As Boolean)
  • 'On utilise le handle de l'application et l'ID de l'objet liés lors de l'initialisation du timer
  • KillTimer Application.hWnd, 0
  • End Sub
  • 'Dans un module séparé, insérer le code suivant
  • '==============================================
  • 'On définit les 2 APIs systèmes qui seront utilisées
  • Public Declare Function SetTimer Lib "user32" (ByVal hWnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
  • Public Declare Function KillTimer Lib "user32" (ByVal hWnd As Long, ByVal nIDEvent As Long) As Long
  • 'La fameuse fonction UpDateTime qui va se charger d'écrire dans la cellule voulue l'heure actuelle à chaque seconde
  • Public Sub UpDateTime (ByVal hWnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long)
  • 'Afin que la feuille ne se ferme pas de manière inoportune suite à une erreur interne
  • '(lors de l'édition d'une cellule ou l'accès à certaines boîtes de dialogue par exemple)
  • On Error Resume Next
  • 'On écrit l'heure selon le format HH:MM:SS sur 24 heures.
  • Worksheets(1).Cells(1.1).Value = Format(Time,"HH:MM:SS")
  • On Error Goto 0
  • End Sub
'Dans la partie workbook du classeur, insérer le code suivant
'============================================================

'On initialise le timer système dès l'ouverture du classeur
Private Sub Workbook_Open()
'Utilisation de l'API SetTimer toutes les secondes (1000 millisecondes) pour appeler la procédure UpDateTime
SetTimer Application.hWnd, 0, 1000, AddressOf UpDateTime
End Sub

'A la fermeture du classeur, on nettoie la place en supprimant l'appel au timer système
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'On utilise le handle de l'application et l'ID de l'objet liés lors de l'initialisation du timer
KillTimer Application.hWnd, 0
End Sub


'Dans un module séparé, insérer le code suivant
'==============================================

'On définit les 2 APIs systèmes qui seront utilisées 
Public Declare Function SetTimer Lib "user32" (ByVal hWnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
Public Declare Function KillTimer Lib "user32" (ByVal hWnd As Long, ByVal nIDEvent As Long) As Long

'La fameuse fonction UpDateTime qui va se charger d'écrire dans la cellule voulue l'heure actuelle à chaque seconde
Public Sub UpDateTime (ByVal hWnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long)
'Afin que la feuille ne se ferme pas de manière inoportune suite à une erreur interne
'(lors de l'édition d'une cellule ou l'accès à certaines boîtes de dialogue par exemple)
On Error Resume Next
'On écrit l'heure selon le format HH:MM:SS sur 24 heures.
Worksheets(1).Cells(1.1).Value = Format(Time,"HH:MM:SS")
On Error Goto 0
End Sub

 Conclusion

C'est tout et très simpliste (je n'ai pas dis "simple"), j'espère que ça vous aidera...

Comme défaut connu, on peut constater que lors de l'édition d'une cellule,
l'heure est figée jusqu'à annulation ou validation de l'édition.

J'ai mis le code sur initié même s'il me semble simple à comprendre et très court car on appelle des APIs qui provoquent facilement un plantage de la feuille et sa fermeture immédiate. N'oubliez pas de sauver votre travail régulièrement si vous expérimentez...

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  • Heure Temps Reel.xlsTélécharger ce fichier [Réservé aux membres club]28 160 octets

Télécharger le zip


 Historique

15 novembre 2006 08:44:23 :
Mise à jour de la déclaration de l'API KillTimer qui faisait planter la feuille à la fermeture...
17 novembre 2006 12:37:04 :
Fichier exemple ajouté

 Sources du même auteur

UNE COMBOBOX REMPLIE PAR ACCESS EN VBSCRIPT POUR VOS FORMULA...
Source avec Zip Source avec une capture FRACTALE: FLOCON DE KOCH (RÉCURSIVITÉ)

 Sources de la même categorie

Source avec Zip GESTION PERSONNEL par oudlarbi
Source avec Zip Source avec une capture CALENDRIER EN VBA POUR EXCEL 2010 par nounou94
Source avec Zip Source avec une capture MANIPULER LES FENETRES ENFANT D'EXCEL par bigfish_le vrai
Source avec Zip Source avec une capture COLLECTION ID par Le Pivert
Source avec Zip Source avec une capture VBA MASQUE DE SAISIE NUMÉRIQUE par acive

 Sources en rapport avec celle ci

Source avec Zip Source .NET (Dotnet) EXPORTER LES IMAGES DE WORD ET D' EXCEL par Le Pivert
Source avec Zip Source avec une capture MANIPULER LES FENETRES ENFANT D'EXCEL par bigfish_le vrai
Source avec Zip Source avec une capture PERFORMANCE MEASURER par Psg2
Source avec Zip Source avec une capture CLMSYNCHEURE : ÊTRE À L'HEURE GRÂCE AUX HORLOGES ATOMIQUES D... par clementio
Source avec Zip PROGRAMME DE GESTION D'EMPLOI DU TEMPS SCOLAIRE par greg1709

Commentaires et avis

Commentaire de dedederidiny le 15/11/2006 06:27:07

sympa et peut etre utile.
la macro Workbook_BeforeClose donne une erreur chez moi.  salut

Commentaire de dthuler le 15/11/2006 08:32:06

Salut Dedederidiny,
C'est bizarre, je l'avais testé chez moi et ça fonctionnait... je vais voir ce qu'il en est aujourd'hui et corriger ça...
David

Commentaire de dthuler le 15/11/2006 08:46:56

Voilà, petite correction suite à l'aimable note de 'diny...
Si vous avez des suggestions ou des remarques, c'est avec plaisir que je les lis !

Commentaire de dokle le 16/11/2006 08:54:57

comment faire pour l'executer bye

Commentaire de econs le 16/11/2006 09:16:39 administrateur CS

Ce qu'il faut faire est parfaitement décrit dans les commentaires du code.

A la rigueur, il manque l'instruction "Ouvrir Excel, puis l'éditeur de Macro". Ensuite, tout est écrit ci-dessus.

Commentaire de dokle le 16/11/2006 09:19:15

Est c q'on peut le deplacer partout

Commentaire de dthuler le 16/11/2006 10:08:31

Dokle: pour customiser l'action, je te propose de remplacer ou modifier la ligne 30; Si tu veux changer l'emplacement de l'affichage sur une autre cellule, change:
l'index de worksheets pour changer de feuille (1=1ère feuille, 2=2ème, etc...) et
les indexes de Cells(a,b) où a est l'index de ligne et b l'index de colonne.
Sinon Econs a tout dit...
David

Commentaire de econs le 16/11/2006 10:32:37 administrateur CS

Et le prog est "déplaçable partout" dans la mesure où le PC sur lequel tu le placeras disposes d'Excel.
Pas de DLLs cachées pour la transportabilité, comme pour un prog VB6.

Commentaire de Col le 16/11/2006 11:00:55

bonjour,
ce code est très interessant, mais à l'ouverture la macro bloque sur "SetTimer Application.hWnd, 0, 1000, AddressOf UpDateTime"
Col.

Commentaire de econs le 16/11/2006 11:05:49 administrateur CS

Il ne devrait pas. Quelles versions de Windows et de Excel utilises-tu ?

Commentaire de Col le 16/11/2006 11:07:55

Windows server 2003 - Excel 2000

Commentaire de econs le 16/11/2006 11:29:23 administrateur CS

Euh ...
Il faudrait que tu décomposes l'instruction pour savoir si c'est SetTimer qui pose problème, ou bien AdresseOf

Commentaire de dthuler le 16/11/2006 12:52:19

Salut Col, te sort-il un message d'erreur et si oui lequel?
Normalement ça devrait fonctionner...

Commentaire de Col le 16/11/2006 13:39:47

"Erreur d'éxécution 438 - Propriété ou méthode non gérée par cet objet"

Commentaire de dokle le 17/11/2006 08:04:28

Je n'arrive pas à déplacer le cellule  de  a mais b si

Commentaire de dthuler le 17/11/2006 12:41:17

Col: Prends référence sur le ZIP ajouté, peut-être que la fonction appelée ne contient pas les arguments nécessaires.

Dokle: Peux-tu préciser? je ne vois pas ce qui peut clocher dans une fonction aussi simple que Cells(ligne,colonne)...

Commentaire de Col le 20/11/2006 16:06:53

Bonjour !
J'ai testé le fichier du zip et j'ai toujours le même message d'erreur.

Commentaire de celtar le 04/01/2007 22:13:06

bonjour

il m' est impossible de changer de cellule l' heure malgré les instruction ci dessus

"les indexes de Cells(a,b) où a est l'index de ligne et b l'index de colonne."

mon affichage reste sur la ligne 1(a) et colonne 2 (b)

si vous pouvais m' aider merci a vous.

Commentaire de philgriadmin le 09/02/2007 12:39:21

Bonjour à TOUS
CELTAR pour changer l'heure de cellule il suffit de modifier la ligne 30 comme suit :
pour la feuille 2 Cellule B4 par exemple
Worksheets(2).Cells(4,2).Value = Format(Time, "HH:MM:SS")
J'en profite pour bien spécifier qu'il s'agit d'une virgule et non d'un point pour séparer les valeurs de la propriété Cells(ligne, colonne).
Cependant si tu veux tu peux aussi modifier toujours cette fameuse ligne 30 en
ActiveSheet.ActiveCell.value= Format(Time, "HH:MM:SS")
ce qui n'effacera pas l'ancienne cellule sélectionnée, à moins bien sûr de rajouter un événement :"Private Sub Worksheet_SelectionChange(ByVal Target As Range) [...]End Sub" mais qui déplacera l'heure vers la cellule active.

COL :
J'ai moi aussi le message d'erreur qui vient de la propriété hWnd non gérée par l'objet application...
En cours de recherche de solution.
Si quelqu'un l'a déjà ... Je suis preneur. Merci

Commentaire de Le Pivert le 08/04/2008 08:29:07

Très bon code, si vous voulez  mettre l'heure dans une "UserForm", ajoutez un label et changez suivant le code suivant:
'Module  
Public Declare Function SetTimer Lib "user32" (ByVal hWnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
Public Declare Function KillTimer Lib "user32" (ByVal hWnd As Long, ByVal nIDEvent As Long) As Long

Public UpDateTimeRange As Range
Public UpDateTimeFormat As String

Public Sub UpDateTime(ByVal hWnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long)
    On Error Resume Next
   UserForm1.Label1 = Format(Time, UpDateTimeFormat)
    On Error GoTo 0
End Sub


'Commande
'start
Private Sub CommandButton1_Click()
UpDateTimeFormat = "HH:MM:SS"
    SetTimer Application.hWnd, 0, 1000, AddressOf UpDateTime 'On démarre l'heure
    
End Sub
'stop
Private Sub CommandButton2_Click()
KillTimer Application.hWnd, 0 'On arrête l'heure
End Sub

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

graph en temps réel !! [ par nico ] j'ai fait un programme pour avoir la température et je souhaiterais faire un graph de la température en temps réel !pour cela j'ai insérer un graph ex affichage de l'heure en temps réel [ par jkpomaho ] Très cordialementje recherche un code qui affiche l'heure en teps réel Heure en temps réel dans un StatusStrip [ par Nexto ] Hello,J'ai beau regarder dans les forums VB et je ne trouve pas. Je voudrais tout simplement afficher l'heure en temps réel dans un label (qui se compteur avec l'heure et la date en temps réel [ par Dane6 ] Bonjour, Je voudrais afficher un compteur avec l'heure et la date dans un programme. J'ai chercher dans MSDN après cette fonction, un peu partout sur Mes feuilles excel ne sont pas actualisées par mon UserForm [ par arthur0201 ] Re-bonjour tous le monde,Voilà mon problème:Mon UserForm n'actualise pas mes feuille excel! Je m'explique; j'ai une feuille excel 'saisie feuille de t Macro impression automatique à un jour et une heure donnée sur Excel [ par pascojulien ] Bonjour,J'ai crée un fichier Excel, et j'aimerai que celui-ci s'imprime automatiquement tout les lundi à 10H je pense que l'on peut faire sa pas la mi Insérer une notion de temps dans Excel [ par Bysnu ] Bonjour à tous,Je récupère actuellement des données de masses sous Excel par l'intermédiaire d'une balance.Je désirerais ajouter à chaque mesure de ma programmation sous visual basic editor excel [ par validator44 ] C'est ma première incursion dans ce forum alors Bonjour à tous et toutes.Je dois développer un application pour mon travail.Dans un tableau excel j'ai réouverture excel après compte à rebours [ par stann29 ] bonjour, j'ai un fichier excel avec un compte à rebours pour qu'il se ferme automatiquement si inactif. Seulement j'ai d'autres fichiers en cours d'ut Format heure dans textbox [ par gweltaz29 ] Salut,J'ai une userform avec des textbox. Quand je l'ouvre, ma macro affecte à la valeur de la textbox le contenu d'une cellule Excel. Ce contenu est


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,981 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales