XL 2016 SetTimer incompatible version excel

carlos

XLDnaute Impliqué
Supporter XLD
Bonjour,
en désinstallant excel 2007 pour excel 2016 mes fichier utilisant la déclaration suivante ne marchent plus : TimerID = SetTimer(0, 0, Interval, AddressOf Chrono)
1576157419894.png

J'ai beau mettre ptrsafe et longptr cela ne résout rien.
Auriez vous une proposition?
Carlos
 

Pièces jointes

  • Chronometrer une classe V 1.2.xls
    100.5 KB · Affichages: 16

Dranreb

XLDnaute Barbatruc
Une procédure Public dans un module de classe (telle que Lancer) ça s'appelle une méthode, et elle ne peut être invoquée qu'en spécifiant devant un point précédé d'un exemplaire d'objet défini par ce module de classe. C'est d'ailleurs justement pour ça qu'on l'appelle une méthode, de même qu'on y appelle propriété une variable Public: pour rappeler chaque fois qu'on en parle, qu'il n'est pas possible de s'en servir sans préciser devant de quel exemplaire d'objet il s'agit.
Donc si vous voulez utiliser un Rythmeur dans votre UserForm commencez par le déclarer en tête (rappel: avec l'attribut WithEvents), puis initialisez le dans la Sub UserForm_Initialize (affectez lui par un Set l'expression New Rythmeur).
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
patricktoulon, je ne l'ai jamais fait, mais ça vaudrait le coup d'essayer un RaiseEvent dans une boucle (avec un paramètre ByRef Cancel As Boolean pour l'arrêter). Il se pourrait que sa mobilise moins de CPU qu'une boucle avec juste un DoEvents, mais ce n'est pas sûr …
Sinon on pourrait aussi se passer d'un Timer avec un Application.Ontime Now, UneProcédure. En effet, même pour tout de suite, l'exécution est quand même différée jusqu'au moment où plus rien d'autre ne s'exécute.
 
Dernière édition:

Hervé

XLDnaute Barbatruc
salut :)

vous m'avez bien saoulé avec les longlong, les long qui sont pas long, les long qui sont trop long suivant la version, win 64 ou 32

j'aurais une question simple, carlos à t'il solutionné son problème ?

merci
edition : parce que moi au final, le seul truc qui m'interresse c'est de savoir si carlos est heureux :)
a plus
 

carlos

XLDnaute Impliqué
Supporter XLD
Bonsoir Dranred,Patrick et Hervé,
Merci de vous soucier pour mon projet.
Oui j'avance mais je dois ingurgiter beaucoup de concepts que je ne maîtrise pas. Mais j'avance.
Je serai heureux lorsque j'aurai trouvé, même si le parcours est difficile pour moi.
Merci à Dranred qui se veut pédagogue.
Merci à Patrick pour sa fougue
Merci à Hervé de se soucier du confort de ses abonnés.
Carlos
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Ne prenez pas le code seul d'un de mes UserForm. Le vôtre n'est pas muni des images de boutons vert et rouge. Prenez tout l'UserForm tel qu'il est dans mon Progression.xlsm. Glissez/déplacez son nom dans l'explorateur de projets depuis son projet vers celui de votre classeur.
Très franchement je pense que vous auriez intérêt à utiliser le UFmHorloge qui, comme son nom l'indique peut afficher l'heure mais aussi un temps par rapport à une heure fixée. Il décrète un évènement Top qui renvoie toujours la date et l'heure, quand on clique sur son bouton (rouge ou vert) quoi qu'on lui ait demandé d'afficher. Après vous en faites ce que vous voulez. Pourquoi gérer en plus une liste de noms prénoms alors qu'il suffirait de sélectionner dans la feuille le nom de qui on veut chronométrer, comme c'est fait dans la feuille "Autre solution chrono". Simplement dans celle ci la date et l'heure de départ du chrono sont enregistrées afin de calculer le temps par différence. Ça permet aussi de chronométrer un grand nombre de personnes en même temps puisqu'on aura gardé l'heure de départ de chacune.
Si vous ne voulez pas faire ces calculs de différence vous pouvez aussi utiliser l'UFmChrono auquel on peut indiquer la cellule Cible ou il devra stocker le temps quand on cliquera sur son bouton.
 

carlos

XLDnaute Impliqué
Supporter XLD
OUi j'avais pensé à faire comme vous avez dit mais je travaille avec une tablette et en exterieur (Pluie, Soleil, vent ...) . Lorsque je declencle le chrono je le fais avec mon pouce et je l'arrete juste apres de la meme maniere. Je peux ainsi chronometrer une classe en moins de 3 minutes , de plus les inaptes ne sont pas integres à la listbox et d'autres choses sont gérés en parallele. En tout cas c'est un outil qui marchait très bien sous 2007 et que j'aimerais faire fonctionner sous 2019.
Je pense qu'il ne manque pas grand chose pour que cela marche.
 

Modeste geedee

XLDnaute Barbatruc
:cool:
Bonsour®
Je vais tout reprendre à zéro
:(:cool: envisagez l'utilisation de l'API GetTickCount
GetTickCount
The GetTickCount function retrieves the number of milliseconds that have elapsed since Windows was started.
VB4-32,5,6
Declare Function GetTickCount Lib "kernel32" Alias "GetTickCount" () As Long
Operating Systems Supported
Requires Windows NT 3.1 or later; Requires Windows 95 or later
Library :Kernel32
Return Values
If the function succeeds, the return value is the number of milliseconds that have elapsed since Windows was started.
VB:
Private Declare Function GetTickCount& Lib "kernel32" ()
Private Sub elapse()
        'Get the tickcount
   
Dim Debut&, reponse
Debut& = GetTickCount&
  reponse = MsgBox(Now(), vbOKCancel + vbInformation, "Chrono en cours")
encore:
           
            If reponse = vbCancel Then
                           MsgBox "temps final " _
                           & Chr(10) & (GetTickCount& - Debut&) / 1000 & " secondes"
                   Else
                            reponse = MsgBox("temps intermediaire :" _
                           & Chr(10) & (GetTickCount& - Debut&) / 1000 & " secondes", _
                           vbOKCancel + vbQuestion, "Encore ?")
                    GoTo encore
            End If
           
End Sub
 
Dernière édition:

carlos

XLDnaute Impliqué
Supporter XLD
Dranreb,
ta solution est très pertinent mais elle me parait difficilement utilisable en exterieur et dans mon environnement.
J'aimerai la meme chose mais avec un gros bouton qui declencle le chrono, un qui gere les inaptes, un qui gere les faux depart etc....
est il possible d'integrer ce que tu as fait dans mon USF? C'est ce que j'essaie de faire.
Bonne soirée