jean_marc_n2
Messages postés170Date d'inscriptionjeudi 11 décembre 2003StatutMembreDernière intervention24 janvier 2009
-
7 févr. 2007 à 15:41
Cyrilooo63
Messages postés4Date d'inscriptionmercredi 28 mai 2008StatutMembreDernière intervention 3 juin 2008
-
3 juin 2008 à 15:45
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
Cyrilooo63
Messages postés4Date d'inscriptionmercredi 28 mai 2008StatutMembreDernière intervention 3 juin 2008 3 juin 2008 à 15:45
Merci MIMIZANZAN pour toute ton aide! ca marche!
mimiZanzan
Messages postés301Date d'inscriptionlundi 27 février 2006StatutMembreDernière intervention17 décembre 2017 3 juin 2008 à 12:25
Désolé CYRIL00063, un bout de phrase a sauté.
Il faut lire:
"mettre le timer directement sur une feuille de calcul(par la boite à outils VBA, autres contrôles)".
Pour que çà marche,il faut rester dans Excel et ouvrir ou créer un nouveau dossier par le menu.
Cyrilooo63
Messages postés4Date d'inscriptionmercredi 28 mai 2008StatutMembreDernière intervention 3 juin 2008 3 juin 2008 à 11:15
Merci de ton aide, mais je dois dire que le bout de phrase incomplet (mettre le timer directement sur...) m'empeche de comprendre ce que tu me conseil...
Ce qui est bizarre c'est que je peux me servir d'excel à partir du moment où j'ouvre un autre fichier à partir d'excel (file/open) mais ca ne marche pas si je l'ouvre directement depuis windows (double clic).
merci!
mimiZanzan
Messages postés301Date d'inscriptionlundi 27 février 2006StatutMembreDernière intervention17 décembre 2017 2 juin 2008 à 17:19
Salut CYRIL00063!
Content de savoir que mon timer te convient.
Pour répondre à ta question, il suffit de mettre le timer directement sur une Autres contrôles), et dans la procédure timer_click de la feuille, mettre au début l'instruction Doevents.
Tu peux alors lancer le timer (par un bouton sur la feuille par ex) et ouvrir un autre classeur: le timer continuera de tourner dans son classeur...
Et revoilà!
Cyrilooo63
Messages postés4Date d'inscriptionmercredi 28 mai 2008StatutMembreDernière intervention 3 juin 2008 2 juin 2008 à 16:14
Merci MimiZanzan ca marche super bien! un peu decu tout de meme de ne pas pouvoir trouver une solution aussi simple...
je vais encore devoir vous demander de l'aide: j'aimerais pouvoir utiliser mon excel tranquillement pendant que ma mise a jour tourne. Je penser faire en sorte que ce timer s'ouvre dans un nouvelle application excel. avez vous de meilleurs idée?
Merci!
mimiZanzan
Messages postés301Date d'inscriptionlundi 27 février 2006StatutMembreDernière intervention17 décembre 2017 30 mai 2008 à 17:24
En effet, l'intervalle maximum accepté par le timer est de 65535 ms cad un peu plus d'une minute (c'est pareil pour le timer VB6 sur lequel est bâti le mien).
Mais ce n'est pas un pb, il suffit de mettre un intervalle de 1000 (1 seconde) pour le timer, et dans la procédure évenement _Click du timer mettre une variable t que l'on incrémente chaque seconde (t=t+1).
Et ajouter dans la même procédure:
If t mod 60 = 0 then 'procédure à déclencher toutes les heures
Il vaut mieux déclarer "Dim t as Integer" au début du module (pas dans la procédure!)
Et voilà!
Cyrilooo63
Messages postés4Date d'inscriptionmercredi 28 mai 2008StatutMembreDernière intervention 3 juin 2008 30 mai 2008 à 08:04
Très bon code qui prend peu de ressource!
par contre j'aimerais l'utiliser pour faire une mise à jour toutes les heures. Soit trop 3600000 millisecondes... le code me retourne un erreur de "overflow"... je ne sais pas comment corriger ca.
merci de votre aide
zeratul67
Messages postés97Date d'inscriptionmardi 9 avril 2002StatutMembreDernière intervention11 mai 2008 11 mai 2008 à 14:18
Bon code, très pratique.
J'ai juste du effectuer une modification car parfois ma macro ne se terminait pas.
J'ai ajouté "CancelTimer = True" dans "Private Sub Class_Terminate()" et en dessous du seul "DoEvents" du code j'ai inséré "If CancelTimer Then Exit Do" (qui était commenté si mes souvenirs sont bons).
Merci pour ce code sympa :)
6RatsMorts
Messages postés7Date d'inscriptionmercredi 26 mars 2003StatutMembreDernière intervention 2 mai 2012 27 févr. 2007 à 20:51
mimiZanzan a mis le doigt sur un problème minim pour mon cas et que j'avais donc mis de coté :
Il n'est pas possible de faire fonctionner 2 timer simultanément avec ce code. Je cherche la solution...
Une idée?
6RatsMorts
Messages postés7Date d'inscriptionmercredi 26 mars 2003StatutMembreDernière intervention 2 mai 2012 27 févr. 2007 à 20:36
verlaat4show,
Le '&' de ...Timer&...' indique au compilateur que la fonction retournera un entier long (variable de type 'Long').
Dans l'aide MS VB :
"Le caractère de déclaration de type Long est le signe &."
Mais dis moi, tu le mets en pièces mon code. Tu le décode à fond! Ca fait plaisir!
mimiZanzan
Messages postés301Date d'inscriptionlundi 27 février 2006StatutMembreDernière intervention17 décembre 2017 26 févr. 2007 à 19:35
Je ne voudrais pas insister, mais une fois que l'on a enregistré 1 fois le timer ocx sur un PC et que on l'a chargé 1 fois à partir de la liste des contrôles supplémentaires dans VBA, il est toujours dispo à chaque ouverture de Excel par ex directement dans la boite à outils, et on peut en mettre autant que l'on veut dans une application avec des paramètres différents.
Quant à la sécurité d'utilisation de cet ocx, je le garantis sain, et il y a bien d'autres raisons de se faire du souci au niveau de la sécurité en entreprise.
Enfin si il y en a qui préfèrent des lignes de codes et des API pour gérer un timer (et un seul à la fois), tant pis pour eux!
verlaat4show
Messages postés3Date d'inscriptionmercredi 21 décembre 2005StatutMembreDernière intervention26 février 2007 26 févr. 2007 à 15:23
Je répète pour mimizanzan:
le contrôle Timer n'appparait pas dans la liste des contrôles sous vba d'office sans le récupérer ailleurs au préalable, soit, il faut télécharger 'ton' timer et aller le charger dans la liste des controles supplementaires pour pouvoir l'utiliser.
M'enfin, cette manière d'opérer n'est pas satisfaisante car d'un poste à un autre, il faut transporter à la fois l'application excel et le controle timer.ocx, surtout que les droits d'utilisation de contrôles sont souvent sécurisés (en entreprise...)
Vive Application.onTime, et encore bravo à 6ratsmorts pour sa classe !!!
mimiZanzan
Messages postés301Date d'inscriptionlundi 27 février 2006StatutMembreDernière intervention17 décembre 2017 26 févr. 2007 à 15:07
Cher Verlaat4Show, je te précise que ce n'est pas la peine d'avoir VB pour utiliser mon timer: il suffit d'enregistrer le controle .OCX présent dans mon code dans le registre et il apparaitra dans la liste des contrôles sous VBA.
verlaat4show
Messages postés3Date d'inscriptionmercredi 21 décembre 2005StatutMembreDernière intervention26 février 2007 26 févr. 2007 à 13:53
Application.onTime is Good
666ratsmorts Merci. ton code fonctionnent avec de toutes pitites modifications, Jvais surement utiliser ta classe car elle evite d'utiliser des fichiers en plus : contrôle timer vb à importer
juste une petite question toi qui semble gérer dans l'utilisation des dll, dans ta classe tu fais appel à user32 et à kernell32,
à la ligne :
Private Declare Function CancelWaitableTimer& Lib "kernel32"...
la fonction CancelWaitableTimer& dans mon fichier kernel32.dll n'apparait que sans le '&', j'ai essayé avec et sans le '&' pour mon timer, les 2 fonctionnent. Peux tu me renseigner sur ce '&'?
Merci quand même MiZanMizan j'ai testé ta façon d'opérer, c'était ce que je pensais faire ; vu que je n'ai pas ms VB , dégouté de constater que ce contrôle Timer n'appparaisse pas dans la liste des contrôles sous vba d'office sans le récupérer ailleurs au préalable. M'enfin ...
Sinon pour ce qui concerne le besoin de Timer(s) avec vba, je trouve que la fonction Application.onTime est simple, très simple. A utiliser sans modération !
mimiZanzan
Messages postés301Date d'inscriptionlundi 27 février 2006StatutMembreDernière intervention17 décembre 2017 24 févr. 2007 à 00:22
J'ai déjà soumis récemment un code pour un timer pour VBA sous forme d'un contrôle activeX (code "Timer pour VBA"), qui se manipule exactement comme le timer VB, et on peut mettre autant de ces timers que l'on veut dans une application VBA.
6RatsMorts
Messages postés7Date d'inscriptionmercredi 26 mars 2003StatutMembreDernière intervention 2 mai 2012 22 févr. 2007 à 14:48
verlaat4show :
Si tu as un soucis de prog demande, on ne sais jamais. J'essayerai de t'aider...
J'en ai eu besoin pour migrer une appli VB vers VBA...
verlaat4show
Messages postés3Date d'inscriptionmercredi 21 décembre 2005StatutMembreDernière intervention26 février 2007 18 févr. 2007 à 12:08
Cool ton code
jai u un pb identique sous vba, j'ai besoin de lancer plusieurs chrono et/ou compte à rebours en laissant la main à dautres processus
et vu qu'avec la fonction timer c'est just just. Jvais essayer ta classe Timer.
T'en as u besoin pour faire koi comme appli si pas indiscret...
Koi kil en soit CIMER, jessaie jte donne des news ou jaurais ptetre besoin de tes services pour utiliser le timer...
6RatsMorts
Messages postés7Date d'inscriptionmercredi 26 mars 2003StatutMembreDernière intervention 2 mai 2012 12 févr. 2007 à 01:16
Merci.
jean_marc_n2
Messages postés170Date d'inscriptionjeudi 11 décembre 2003StatutMembreDernière intervention24 janvier 2009 7 févr. 2007 à 15:41
Très sympathique, tout simple, tout léger, parfait!
Utilisation simplissime mais suffisante, bref, c'est nickel!
Du code comme on aimerait à en voir plus souvent :-)
Je mets 10/10, bien sur!
3 juin 2008 à 15:45
3 juin 2008 à 12:25
Il faut lire:
"mettre le timer directement sur une feuille de calcul(par la boite à outils VBA, autres contrôles)".
Pour que çà marche,il faut rester dans Excel et ouvrir ou créer un nouveau dossier par le menu.
3 juin 2008 à 11:15
Ce qui est bizarre c'est que je peux me servir d'excel à partir du moment où j'ouvre un autre fichier à partir d'excel (file/open) mais ca ne marche pas si je l'ouvre directement depuis windows (double clic).
merci!
2 juin 2008 à 17:19
Content de savoir que mon timer te convient.
Pour répondre à ta question, il suffit de mettre le timer directement sur une Autres contrôles), et dans la procédure timer_click de la feuille, mettre au début l'instruction Doevents.
Tu peux alors lancer le timer (par un bouton sur la feuille par ex) et ouvrir un autre classeur: le timer continuera de tourner dans son classeur...
Et revoilà!
2 juin 2008 à 16:14
je vais encore devoir vous demander de l'aide: j'aimerais pouvoir utiliser mon excel tranquillement pendant que ma mise a jour tourne. Je penser faire en sorte que ce timer s'ouvre dans un nouvelle application excel. avez vous de meilleurs idée?
Merci!
30 mai 2008 à 17:24
Mais ce n'est pas un pb, il suffit de mettre un intervalle de 1000 (1 seconde) pour le timer, et dans la procédure évenement _Click du timer mettre une variable t que l'on incrémente chaque seconde (t=t+1).
Et ajouter dans la même procédure:
If t mod 60 = 0 then 'procédure à déclencher toutes les heures
Il vaut mieux déclarer "Dim t as Integer" au début du module (pas dans la procédure!)
Et voilà!
30 mai 2008 à 08:04
par contre j'aimerais l'utiliser pour faire une mise à jour toutes les heures. Soit trop 3600000 millisecondes... le code me retourne un erreur de "overflow"... je ne sais pas comment corriger ca.
merci de votre aide
11 mai 2008 à 14:18
J'ai juste du effectuer une modification car parfois ma macro ne se terminait pas.
J'ai ajouté "CancelTimer = True" dans "Private Sub Class_Terminate()" et en dessous du seul "DoEvents" du code j'ai inséré "If CancelTimer Then Exit Do" (qui était commenté si mes souvenirs sont bons).
Merci pour ce code sympa :)
27 févr. 2007 à 20:51
Il n'est pas possible de faire fonctionner 2 timer simultanément avec ce code. Je cherche la solution...
Une idée?
27 févr. 2007 à 20:36
Le '&' de ...Timer&...' indique au compilateur que la fonction retournera un entier long (variable de type 'Long').
Dans l'aide MS VB :
"Le caractère de déclaration de type Long est le signe &."
Mais dis moi, tu le mets en pièces mon code. Tu le décode à fond! Ca fait plaisir!
26 févr. 2007 à 19:35
Quant à la sécurité d'utilisation de cet ocx, je le garantis sain, et il y a bien d'autres raisons de se faire du souci au niveau de la sécurité en entreprise.
Enfin si il y en a qui préfèrent des lignes de codes et des API pour gérer un timer (et un seul à la fois), tant pis pour eux!
26 févr. 2007 à 15:23
le contrôle Timer n'appparait pas dans la liste des contrôles sous vba d'office sans le récupérer ailleurs au préalable, soit, il faut télécharger 'ton' timer et aller le charger dans la liste des controles supplementaires pour pouvoir l'utiliser.
M'enfin, cette manière d'opérer n'est pas satisfaisante car d'un poste à un autre, il faut transporter à la fois l'application excel et le controle timer.ocx, surtout que les droits d'utilisation de contrôles sont souvent sécurisés (en entreprise...)
Vive Application.onTime, et encore bravo à 6ratsmorts pour sa classe !!!
26 févr. 2007 à 15:07
26 févr. 2007 à 13:53
666ratsmorts Merci. ton code fonctionnent avec de toutes pitites modifications, Jvais surement utiliser ta classe car elle evite d'utiliser des fichiers en plus : contrôle timer vb à importer
juste une petite question toi qui semble gérer dans l'utilisation des dll, dans ta classe tu fais appel à user32 et à kernell32,
à la ligne :
Private Declare Function CancelWaitableTimer& Lib "kernel32"...
la fonction CancelWaitableTimer& dans mon fichier kernel32.dll n'apparait que sans le '&', j'ai essayé avec et sans le '&' pour mon timer, les 2 fonctionnent. Peux tu me renseigner sur ce '&'?
Merci quand même MiZanMizan j'ai testé ta façon d'opérer, c'était ce que je pensais faire ; vu que je n'ai pas ms VB , dégouté de constater que ce contrôle Timer n'appparaisse pas dans la liste des contrôles sous vba d'office sans le récupérer ailleurs au préalable. M'enfin ...
Sinon pour ce qui concerne le besoin de Timer(s) avec vba, je trouve que la fonction Application.onTime est simple, très simple. A utiliser sans modération !
24 févr. 2007 à 00:22
22 févr. 2007 à 14:48
Si tu as un soucis de prog demande, on ne sais jamais. J'essayerai de t'aider...
J'en ai eu besoin pour migrer une appli VB vers VBA...
18 févr. 2007 à 12:08
jai u un pb identique sous vba, j'ai besoin de lancer plusieurs chrono et/ou compte à rebours en laissant la main à dautres processus
et vu qu'avec la fonction timer c'est just just. Jvais essayer ta classe Timer.
T'en as u besoin pour faire koi comme appli si pas indiscret...
Koi kil en soit CIMER, jessaie jte donne des news ou jaurais ptetre besoin de tes services pour utiliser le timer...
12 févr. 2007 à 01:16
7 févr. 2007 à 15:41
Utilisation simplissime mais suffisante, bref, c'est nickel!
Du code comme on aimerait à en voir plus souvent :-)
Je mets 10/10, bien sur!