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

  • Initiateur de la discussion Initiateur de la discussion halimhamdi
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
128
Réponses
33
Affichages
992
  • Question Question
Microsoft 365 affichage userform
Réponses
4
Affichages
418
Réponses
10
Affichages
192
Réponses
4
Affichages
201
Réponses
3
Affichages
125
Retour