XL 2013 Afficher le temps écoulé de l'utilisation de userform

halimhamdi

XLDnaute Junior
bonjour ce ci le fichier et vous trouvez le userform que je veux connaitre le temps d'utilisation et afficher dans la cellule temps écoulé
si possible de traiter cette demande avec plaisir bien sur car je ss pas chaud dans vba excel
et merci pour votre attention
 

Pièces jointes

  • Test.xlsm
    80.5 KB · Affichages: 11

fanch55

XLDnaute Barbatruc
Merci
Pouvez vous m'aider à rendre le code compatible dans un environnement 64 bits
Bon Week end
VB:
'API pour le temps
#If VBA7 Then
    Public Declare PtrSafe Function SetTimer Lib "user32" ( _
        ByVal hWnd As LongPtr, _
        ByVal nIDEvent As LongPtr, _
        ByVal uElapse As Long, _
        ByVal lpTimerFunc As LongPtr) As LongPtr
        
    Public Declare PtrSafe Function KillTimer Lib "user32" ( _
        ByVal hWnd As LongPtr, _
        ByVal nIDEvent As LongPtr) As Long
        
    Public Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" ( _
        ByVal lpClassName As String, _
        ByVal lpWindowName As String) As LongPtr
#Else
    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 Declare Function FindWindow Lib "User32" Alias "FindWindowA" _
    (ByVal lpClassName As String, _
    ByVal lpWindowName As String) As Long
    '
#End If
 

jm.andryszak

XLDnaute Occasionnel
Si on est allergique à SetTimer, KillTimer, FindWindow etc ...
On peut alors les supprimer et utiliser Sub HorlogeV0() (à modifier) dans le Module1 du premier fichier et non utilisé dans le code.
Trouver le Handle d'un Userform ne m'a jamais posé de problème avec FindWindow, alors pourquoi GROSSE ERREUR ??.
Cependant, je suis sous WIN32 et remercie fanch55 pour la compatibilité en WIN64 à laquelle je n'avais pas pensé.

"Et pour couronner le tout", quel est le sous entendu ???


Sub HorlogeV0() modifiée :
Sub HorlogeV0()
Dim Usf As Object
For EahUsf In VBA.UserForms
If InStr(1, Usf.Name, "userform1", vbTextCompare) Then
Usf.col11 = Format(Now - TimeValue(Usf.col11.Tag), "HH:MM:SS")
Usf.col11.ForeColor = IIf(Usf.col11.ForeColor = vbBlack, vbBlue, vbBlack)
Application.OnTime Now + TimeValue("00:00:01"), "HorlogeV0" 'et non Horloge
End If
Next
End Sub
 

patricktoulon

XLDnaute Barbatruc
re
je vous ai fait deux exemples simplissimes
  1. avec l'api SetTimer
  2. avec application .ontime
mais tout d'abords comment peut ton calculer un temps écouler sans passer par une usine a gaz

alors en premier lieu on pointe un debut
VB:
debut=time'c'est simple

un peu plus tard dans une boucle ou un <<timer>> quelconque on pointe le time code actuel "maintenant"
VB:
maintenant=time
à noter que les deux variable sont des valeur time "hh:nn:ss"
ensuite grace a notre ami "Cdate" qui nous converti AUTOMATIQUEMENT EN INTERNE DANS VBA LES DEUX TEMPS EN NUMERO DE SERIE DATE
on va donc faire la soustraction et reconversion en date en une seule ligne
VB:
msgbox  CDate(CDate(maintenant) - CDate(debut))

voilà terminé ce principe est utilisé dans les deux exemples

pour répondre a ta question @jm.andryszak
ce n'est pas de trouver le handle qui est difficile ce n'est d'ailleurs pas le sens de ma remarque
c'est le fait d'utiliser le handle de l'userform comme hander caller et proprietaire
en mode modal et avec un pc faiblard ou très occupé en terme d'UC il y a des chances que le laps de temps entre la fermeture du userform et l’exécution du code du killtimer ne soit pas synchro
résultat erreur de serveur distant (bien connu avec l'api set timer qui reste une api capricieuse) voir même le plantage excel

voici donc deux exemples de timer
à noter que j'utilise 3 labels (aussi pour l'affichage) t1,t2 et t3
ces trois labels peuvent être des variables
ça devient tout de suite plus clair et plus souple
 

Pièces jointes

  • temps ecoulé api set timer .xlsm
    27.4 KB · Affichages: 3

Discussions similaires

Statistiques des forums

Discussions
312 104
Messages
2 085 334
Membres
102 864
dernier inscrit
abderrashmaen