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
Je sais que c'est en appuyant qu'on sera le plus précis, la question c'est comment réagit la tablette. Est-ce que le clic a lieu quand on lève le pouce, et si maleureusement c'est le cas est-ce qu'un MouseDown a bien lieu quand on l'y pose ?
Bon combien de fois plus gros que mes boutons actuels alors ? Les boutons actuels ont 32 pixels de coté.
 
Dernière édition:

carlos

XLDnaute Impliqué
Supporter XLD
Bonjour Dranreb,
C'est super. Exactement ce que je voulais. Je vois que tu as travaillé tard.
J'ai déjà commencé à ajouter l'option de sélectionner automatiquement l'élève suivant après l'enregistrement du temps.
Merci beaucoup pour tes efforts et d'avoir su t'adapter à ma demande.
Je te dis à bientôt car j'aurai certainement d'autres questions à te poser pour le rendre compatible avec mes autres outils.
Carlos
 

Pièces jointes

  • Chrono Excel 2019 V1.xlsm
    143.3 KB · Affichages: 5

Dranreb

XLDnaute Barbatruc
Bonjour
Mais alors au Reset il faut remonter d'une ligne pour l'annuler si on ne s'en rend compte qu'après avoir arrêté le chrono ?
En fait je l'avais déjà ajouté dans une version plus avancée, j'avais seulement oublié de validé l'envoi du message.
Mais je le fais au relâchement du bouton rouge. Je joins la version actuelle.
Elle permet de corriger le Apte/Inapte, comme ça plus besoin de l'autre UFmGestionInaptes. Un bouton bascule permet d'afficher les inaptes.
Elle a aussi un dispositif dans la feuille pour insérer/supprimer une ligne.
Édition: petite correction apportée.
 

Pièces jointes

  • ChronoCarlos.xlsm
    167.8 KB · Affichages: 7
Dernière édition:

patricktoulon

XLDnaute Barbatruc
bonsoir tout les deux
perso j'ai toujours un soucis de compréhension avec ce pseudo événement

j'ai tenté ceci

dans le userform 1 label et un bouton
et son code
VB:
Public cl As New Classe1
Dim Tic As Long
Private Sub cl_Intervient(ByVal Tic As Long)
        UserForm1.Label1 = Tic
End Sub


Private Sub CommandButton1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    Tic = 10
    cl.MéthodeRésevée Tic

End Sub

la classe1
VB:
Option Explicit
Rem. Cette classe a pour but de permettre un traitement périodique dans un objet.
Event Intervient(ByVal Tic As Long)   

Public Sub MéthodeRésevée(ByVal Tic As Long)    ' NE PAS UTILISER.'pourquoi???????
     RaiseEvent Intervient(Tic)
End Sub
rien du tout walouh!!!
@Dranreb quand tu aura un instant et l'envie si tu veux bien expliquer ;)
 

Dranreb

XLDnaute Barbatruc
Bonsoir.
Les instructions Event et RaiseEvent mettent en œuvre de vrais évènements, pas des pseudo événements.
Ceux ci ne peuvent pas être pris en charge coté utilisation si la variable n'est pas déclaré avec l'attribut WithEvents.
Par ailleurs il faut implanter un modèle de la procédure de prise en charge à l'aide des listes déroulantes qui surmontent la fenêtre de code. Je ne pense pas qu'on puisse combiner dans la déclaration WithEvents avec New.
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
re
a oui j'avais oublié mais non j'avais déjà essayé il y a erreur d'object "object non definie "
et c'est normal l'event n'est pas un object classe

j'ai donc tenté la déclaration event + 1 instance et toujours rien
code userform
VB:
Public WithEvents cl As Classe1
Dim cls As New Classe1
'Public cl As New Classe1
Dim Tic As Long
Private Sub cls_Intervient(ByVal Tic As Long)
        UserForm1.Label1 = Tic
End Sub


Private Sub CommandButton1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    Tic = 10
    cls.MéthodeRésevée Tic

End Sub

code classe1
VB:
Option Explicit
Rem. Cette classe a pour but de permettre un traitement périodique dans un objet.
Event Intervient(ByVal Tic As Long)

Public Sub MéthodeRésevée(ByVal Tic As Long)    ' NE PAS UTILISER.'pourquoi???????
     RaiseEvent Intervient(Tic)
End Sub

c'est ça que je voudrais que tu explique
 

Dranreb

XLDnaute Barbatruc
Oui, à partir du moment où on ne peut pas mettre New dans la déclaration à cause du WithEvents, il faut l'initialiser quelque part par un Set cl = New Classe1. Remarque ce n'est possible que dans un module objet, et il est rare qu'une variable objet à évènement y soit en même temps une propriété de cet objet. Alors: Private, pas Public. Et tu as mis la procédure _Intervient pour l'exemplaire déclaré sans évènement.
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
re
(private/ pubic) (event/object ) rien toujours rien:confused:
pas d'erreur déclenchée vraiment rien du tout
j'ai mis un msgbox dans Méthoderesevée et elle est bien appelée mais ne déclenche pas l'events
bon je reprendrais demain la je suis crevé j'ai eu une semaine de fou ;)
je te remercie
 

Dranreb

XLDnaute Barbatruc
Ceci marche dans un UserForm muni d'un CommandButton1 et d'un Label1 :
Code UserForm :
VB:
Option Explicit
Public WithEvents CL As Classe1
Private Sub UserForm_Initialize()
   Set CL = New Classe1
   End Sub
Private Sub CL_Intervient(ByVal Tic As Long)
   Me.Label1 = Tic
   End Sub
Private Sub CommandButton1_Click()
   CL.MéthodeNonRéservée 10
   End Sub
Code Classe1 :
VB:
Option Explicit
Event Intervient(ByVal Tic As Long)
Public Sub MéthodeNonRéservée(ByVal Tic As Long)
' Dans ce schéma, elle n'est pas réservée à un module de service, puisqu'elle est invoquée
' dans un UserForm utilisateur. Je fais toujours une grande distinction de couches entre les
' outils que forme la programmation de service et la programmation applicative qui s'en sert.
' Mes modules de classe étant toujours des modules de service, les commentaires y sont
' des guides d'utilisation pour le programmeur d'application qui veut les utiliser.
' Alors quand je mets "NE PAS UTILISER", ça sous-entend: par lui même.
   RaiseEvent Intervient(Tic)
   End Sub
 
Dernière édition:

Statistiques des forums

Discussions
312 109
Messages
2 085 383
Membres
102 878
dernier inscrit
asmaa