Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
XL 2013Afficher le temps écoulé de l'utilisation de userform
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
Bonjour
Je suis la discussion qui m'intéresse et je ne comprends pas le #14
Sans créer la zizanie, je travaille sur le fichier et n'avait pas remarqué toutes les modifications apportées par fank5.
'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
çà me serait très utile de m'expliquer pourquoi on utilise dans ce fichier
un timer api (settimer) (et qui puis est avec le handle du userform GROSSE ERREUR!!! )dans ce fichier et un application.ontime (avec une restitution"hh:mm")
et pour couronner le tout une fonction de conversion seconde en hh:mm
LOL
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 GROSSEERREUR ??. 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
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
Ce site utilise des cookies pour personnaliser le contenu, adapter votre expérience et vous garder connecté si vous vous enregistrez.
En continuant à utiliser ce site, vous consentez à notre utilisation de cookies.