Temporisation et "Excel ne répond plus"

Bonsoir,

Merci pour vos idées mais je n'ai pas tout compris et je dois rendre l'ordi qui comporte Excel.

Je me remettrai au travail dans quelques jours...

Affaire à suivre.

@patricktoulon

il faudra m'expliquer cependant comment timer peut etre < T

Ah ben oui, ... j'avais trop regardé car j'avais ce code sous le coude depuis des années. Mais effectivement ! à ne pas utiliser.

Donc désolé 2x. j'ai posté sans vérifier que vous aviez posté et de plus mon post n'apporte rien. J'aurais mieux fait de m'abstenir

Par contre un truc m'interpelle, je n'ai pas pigé le (5) mentionné après Waiting_for

Cordialement

Bonjour Dan

le 5 c'est le chiffre que j'injecte dans la fonction waiting_For

donc dans la fonction la variable "Nombre_de_centièmes "(argument de la fonction) = 5

que je divise par 10 =0.5 donc 5 centième de 1

on pourrait effectivement se passer de la division et injecter directement 0.5

j'ai voulu respecter le principe du demandeur et appeler le waiting_For avec le nombre dans son unité (de tranche)et non la valeur

Ok. Merci de l'explication

on pourrait effectivement se passer de la division et injecter directement 0.5

le 0.5 est ce que j'avais dans le code que je n'ai pas posté ici et qui faisait appel à une sub spécifique dans laquelle on retrouvait la boucle que j'ai postée dans la sub colorier_Grille.

re

et oui c'est un peut le problème avec vba le asyncro

pour une fonction d'attente contenant une boucle sous quelque forme que ce soit j'utilise "function" et non "sub"

pourquoi:

et bien il arrive sur des boucles moulinant dans une sub appelé par une autre sub (et pour peu qu'il y est un doevents quelque part) que la sub appelante passe a la ligne suivante l'appel de la sub moulin

et là forcement une erreur et plantage a s'arracher les cheveux car au final aucune erreur dans le code

tandis qu'avec une fonction

if mafonction(argument,blabla)= x then

la sub appelante reste sur la ligne de l'appel tant que la fonction n'a pas renvoyé sa réponse car même avec des doevents si la réponse n'a pas été calculée dans la fonction ben la sub appelante attend puisque le if ne passe pas


en gros

c'est comme si la fonction devenait une très lourde variable et il faut qu'elle soit entièrement captée pour que l’exécution avance dans la macro appelante

tu n'aura jamais de soucis avec ce principe

pour une fonction d'attente contenant une boucle sous quelque forme que ce soit j'utilise "function" et non "sub" .... la sub appelante reste sur la ligne de l'appel tant que la fonction n'a pas renvoyé sa réponse

Effectivement ! mais je dois bien avouer ne pas encore les utiliser par manque de maitrise je pense. Un collègue de travail m'avait d'ailleurs dit en son temps qu'il utilisait au max les Function car bien plus rapides.

re

plus rapide je pense pas un code est un code il le meme dans une sub ou dans une fonction

mais plus précis oui (dans un contexte de logique; pas d’exécution)dans le sens ou un code s’exécute (en fonction de)

et non (linéairement jusqu'au "End Sub")pour les SUB

après la maîtrise en terme de code c'est la même(c'est pas un langage différent) c'est le contexte qu'il faut bien saisir

une sub/macro exécute un code et interagit avec d'autre object ou même un contexte

une fonction exécute son code et peut interagir avec d'autres objects ou un contexte et renvoie une réponse a l'appelant une sub ou même un event control

en gros une fonction peut devenir une propriété ,un object ,un contexte,une réponse

bien que la plus part du temps elle est utilisée comme tel MAIS !!!!!elle peut aussi simplement exécuter son code comme une simple sub

Un grand merci à patricktoulon car le concept de la fonction fonctionne parfaitement !

Bonjour,

Maintenant que je suis en mesure de contrôler la durée d'affichage de mes cellules, je souhaiterais pouvoir faire varier cette durée.

Dit autrement mon programme ayant une évolution graphique, je souhaiterais accélérer ou ralentir cette évolution.

Evidemment il m'est facile à l'intérieur du programme de faire évoluer un paramètre qui par exemple divise ou multiplie par 5 la durée de la Function proposée par PatrickToulon.

Mais je cherche comment une fois le programme lancé pouvoir intervenir "de l'extérieur".

Si je crée sur la feuille de calcul les deux boutons "+" et "-" et qu'en cours d'exécution du programme je clique sur l'un de ces boutons, comment faire en sorte qu'Excel prenne en compte ce clic ?

Ou alors est-il possible en cours d'exécution du programme de détecter que j'ai appuyé sur une touche du clavier ?

Ou encore est-il possible en cours d'exécution du programme de détecter la position de ma souris ?

Voilà en fait comment peut-on passer une information à un programme en cours d'exécution ?

Un grand merci par avance !

bonjour

comme ceci

2go-tempo.xlsm (25.08 Ko)

Bonjour,

Oups !

Je réalise qu'avec l'instruction DoEvents au sein de Function, mes clics sur les boutons sont pris en compte au cours du déroulement du programme.

Donc plus aucune problématique, je devrais gérer le changement de vitesse très facilement.

Merci

ben bien sur c'est pour ca le do events et aussi pouvoir taper EsC pour STOPER LE bourrin

Rechercher des sujets similaires à "temporisation repond"