TIMER POUR VBA

Signaler
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
-
Messages postés
1
Date d'inscription
mercredi 23 novembre 2016
Statut
Membre
Dernière intervention
23 novembre 2016
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/39308-timer-pour-vba

Messages postés
301
Date d'inscription
lundi 27 février 2006
Statut
Membre
Dernière intervention
17 décembre 2017

Salut MAITREGEO,

Je reviens sur ce que j'ai dit: pour avoir un intervalle >1mn, il faut seulement utiliser 1 timer qui appelle une simple procédure contenant un compteur qui déterminea l'intervalle désiré.
Exemple ci-dessous:

Sub MiseEnRoute_Timer()
TimerVBA1.Intervalle = 60000 '1mn
TimerVBA1.Active = True
End Sub

Sub TimerVBA1_Timer()
DéclencheEvent
End Sub

Sub DéclencheEvent() 'procédure appelée chaque mn par le timer
Static compteur As Integer 'variable statique non changée à chaque appel
'on peut aussi la déclarer au niveau module
compteur = compteur + 1 'incrémentation
If compteur = 15 Then
'mettre ici l'évènement à déclencher (toutes les 15mn dans ce cas)
compteur = 0 'remise à 0 du compteur pour les 15 prochaines mn
End If
End Sub

Voilà, c'est donc très simple!...

J'espère vous avoir aidé

Cdt
Messages postés
1
Date d'inscription
mercredi 23 novembre 2016
Statut
Membre
Dernière intervention
23 novembre 2016
>
Messages postés
301
Date d'inscription
lundi 27 février 2006
Statut
Membre
Dernière intervention
17 décembre 2017

Bonjour à tous

Tout d'abord, merci à Mimizanzan pour ses conseils avisés, sauf que là je suis concé avec l'installation et l'utilisation du timer.
Dans mes feuilles Excel j'ai besoin de modifier la hauteur de la ligne que je survole avec la souris pour faire apparaître des boutons dynamiquement ainsi que des info-bulles contextuelles.
J'ai commencé par le faire via des SetTimer et KillTimer, mais ça plante Excel quasi systématiquement. Pas très drôle...
Je me suis donc orienté vers la solution dont on parle ici, sauf que j'ai un problème :
- j'ai installé le contrôle complémentaire via le petit programme de mimizanzan : ça a marché, sauf que la commande Regsvr32 C:\MesControleActiveX\TimerVBA.ocx me sort un message du style Échec du chargement du module "C:\MesControleActiveX\TimerVBA.ocx". Vérifiez que le fichier [...] dépendants. Le module spécifié est introuvable.
- malgré tout j'ai réussi à définir une nouvelle référence vers TimerPourVBA ainsi qu'un objet "Dim TimerVab1 as TimerVBA" dans un module VBA (donc TimerVBA est bien reconnu)
- mais dans ma feuille Excel quand je veux enregistrer le nouveau contrôle personnalisé TimerVBA.ocx j'ai un message "Échec lors de l'enregistrement du contrôle dans le registre"

Pourriez-vous m'aider, s'il vous plait ? C'est vraiment très important

Ah oui : je suis sous Windows 10 en 64 bits et Office 2013 32 bits.

Un grand merci d'avance
Gilbert
Messages postés
2
Date d'inscription
dimanche 22 décembre 2002
Statut
Membre
Dernière intervention
21 janvier 2013

Merci pour cette aide je vais donc imbriquer deux timer, car il me faut 15mn de délai.
Messages postés
301
Date d'inscription
lundi 27 février 2006
Statut
Membre
Dernière intervention
17 décembre 2017

Salut MAITREGEO

Merci de votre intérêt pour mon timer.
Je vous précise que la limite de 65s s'applique seulement à la fréquence du timer (et non pas à sa durée de vie), fréquence qui déclenche un ou des évènements désirés. Je pense qu'il y a peu de cas où on ait besoin d'exécuter une action à des intervalles de plus de 1mn...
De toute façon, c'est aussi le cas pour le timer VB classique, qui d'ailleurs a servi pour développer mon ocx.
Sinon, il faut utiliser 2 timers reliés avec par exemple un compteur pour augmenter l'intervalle, ou bien créer le timer avec la fonction API SetTimer (voir comme exemple mon code FEU D'ARTIFICE SOUS EXCEL VBA) qui supporte des intervalles beaucoup + grands.
Voilà, j'espère que ceci vous aidera.

Cdt
Afficher les 63 commentaires