Problème avec un "Timer" que je ne sais pas arrêter.

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 !

YANN-56

XLDnaute Barbatruc
Bonjour à tous,

Je patine avec le "Timer"........ Voici le Code

Code:
Public TRAJET
Private Sub Label1_Click() ' OUVRIR

Dim DUREE, DEBUT, FIN, TEMPS_PASSE

  DUREE = 4 'le temps en secondes
  DEBUT = Timer: FIN = Timer + DUREE
  
       Do While Timer < DEBUT + DUREE
           DoEvents
        
               TEMPS_PASSE = FIN - Timer
            ' Ceci est accessoire; mais je l'ai laissé pour info.

     '  Me.Image1.Width = TRAJET * (TEMPS_PASSE / DUREE)
     '  Me.Image2.Width = Me.Image1.Width
     '  Me.Image2.Left = TRAJET + (TRAJET - (TRAJET * (TEMPS_PASSE / DUREE)))
       Loop
End Sub

Tout fonctionne comme il faut.

Mais, sauf d'avoir enregistré mon Classeur avant de le fermer:
A la réouverture, j'ai un plantage avec une division par "0" ????? Ici:

Code:
Me.Image1.Width = TRAJET * (TEMPS_PASSE / DUREE)

Je pourrais tenter " ThisWorkbook.Save", mais cela ne convient pas au cheminement de l'appli.

Je pense qu'il faut annihiler le Timer, mais je ne sais pas faire.

Merci de m'aider. Cela fait un grand moment que je tourne en rond.

Yann
 
Re : Problème avec un "Timer" que je ne sais pas arrêter.

Bonsoir, et Merci néné06

Désolé! Cela ne fonctionne pas. 😱

Il y aurait possibilité de mettre la variable "DUREE" dans un Module en "Public",
et de la charger avec un temps énorme par suite d'un Click sur un Bouton de l'USF.

Je n'ai pas tenté celle-ci, puisque qu'elle n'est pas vraiment très académique.

Il est cependant bien sympa de ta part de m'avoir répondu, et proposé ton idée.

Amicalement,

Yann

P.S. Je suis bien ennuyé, car bloqué pour avancer dans mon Appli..........
Ce plantage m'empêche d'effectuer mes tests.
 
Re : Problème avec un "Timer" que je ne sais pas arrêter.

Il est presque certain que la valeur DUREE est à Zero, donc div par zero impossible?
Lors de l'ouverture du classeur ,le prog faisant appel à la routine Private Sub Label1_Click()
elle s'exécute et trouve durée=zero
Peut être en essayant la routine et en changeant Label1_Click par
Label1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
qui ne s'exécutera que sur la pression du btn.
Ont retrouve le même cas avec Click et Drop button Click.

Essayes et dis moi?
A+
 
Re : Problème avec un "Timer" que je ne sais pas arrêter.

Super de ta part de suivre.

Je travaille en modification sur une copie de ma version précédente.

J'ai constaté qu'en attendant les 4 secondes ou plus, dans l'initiale; il n'y a plus de souci avec la copie.

Cela est étrange, et je suis incapable de l'expliquer. Peut-être qu'Excel continue à compter?

Le sujet était bien donc de lui demander de cesser.

Merci à toi. Ton aide me rassure....... Et surtout de ne pas me sentir tout seul avec mon problème.

Il n'y a pas, à cette heure, autres XLDNautes présents; sachant et pouvant aussi aider ........Pas de bol!
(De ne pas en avoir le temps ni l'envie est respectable aussi)

Amicalement,

Yann
 
Re : Problème avec un "Timer" que je ne sais pas arrêter.

Bonsoir YANN-56, néné06

Peux être avec cette solution ?

VB:
Public TRAJET
 Private Sub Label1_Click() ' OUVRIR
 
Dim DUREE, DEBUT, FIN, TEMPS_PASSE
  DUREE = 4 'le temps en secondes
   DEBUT = Timer ': FIN = Timer + DUREE
   
       Do While Timer < DEBUT + DUREE
            DoEvents
         
               TEMPS_PASSE = DEBUT - Timer
             ' Ceci est accessoire; mais je l'ai laissé pour info.
 
     '  Me.Image1.Width = TRAJET * (TEMPS_PASSE / DUREE)
      '  Me.Image2.Width = Me.Image1.Width
      '  Me.Image2.Left = TRAJET + (TRAJET - (TRAJET * (TEMPS_PASSE / DUREE)))
        Loop
        MsgBox TEMPS_PASSE
 End Sub

La macro tourne 4 seconds et puis s'arrête. Au plaisir de vous aider.

Ps : je ne sais pas si j'ai bien suivie, mais j'ai aussi le même problème que vous avec Excel est VBA, en faite le code va plus vite qu'Excel est j'ai du aussi utiliser un compteur comme le votre.

Je développer sur Autocad est j'ai trouver une fonction qui stop le macro et la fait poursuivre par la suite. Je peux vous laisser le code est cette astuce si vous devez vous en servir fréquemment. C’est dans un de mes module .dvb autocad mais fonctionnant très bien avec Excel.

Laurent
 
Dernière édition:
Re : Problème avec un "Timer" que je ne sais pas arrêter.

Re néné,

Effectivement avec cet ajout:

Code:
       Do While Timer < DEBUT + DUREE
       On Error Resume Next

Je n'ai plus de plantage!
(J'ai testé très vite, pas dans tous les cas, mais il me semble que cela soit efficace)

Comme toi, je pense, cette solution n'est pas des plus élégantes.
Mais la fin justifie les moyens........ N'est-il pas?

La faim va me pousser à dresser la table.

Je te souhaite bon un appétit et une bonne fin de soirée.

Amicalement, et au plaisir de t'aider un jour avec le peu que je sais.
(Ce serait pour moi la meilleure façon de te dire Merci...)🙂🙂🙂

Yann
 
Re : Problème avec un "Timer" que je ne sais pas arrêter.

Bonsoir Laurent, je n'avais pas vu ton Post.

Question:

Qu'apporte:
Code:
MsgBox TEMPS_PASSE

Cela va-t-il interrompre le Timer par cet évènement?

Merci à toi d'avoir regardé et répondu.

Amicalement, et à te lire.

Yann
 
Re : Problème avec un "Timer" que je ne sais pas arrêter.

je cherche la méthode que j'ai appliquer a autocad et vous la poste.
il faut desactivé MsgBox c'était juste pour connaitre le temps découlement de la macro en seconde

' MsgBox TEMPS_PASSE

j'ai vérifier elle s'écute 4 second est ell sort de la boucle. avec cette méthode


a mettre dans votre code = 1 (c'est le temps d'attente d'une seconde)

VB:
 Attendre 1                            ' Appel d'une procédure qui temporise
                                            ' c'est à dire que la procédure courante
                                            ' (ici) est suspendue pendant 1s
                                            ' cela permet d'Attendre 1s avant
                                            '  l'appel de la prochaine procédure
                                            '  et ainsi continuer le fils de la macro
                                            ' A REGLER selon votre config


'ici c'est la fonction
VB:
Sub Attendre(Secondes As Single)
' Cette procédure temporise pendant le nombre de secondes qu'on lui transmet en argument
Dim Début As Long, Fin As Long, Chrono As Long
Début = Timer
Fin = Début + Secondes
Do Until Timer >= Fin
    DoEvents
Loop
End Sub

Laurent
 
Dernière édition:
- 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
Retour